.classpath
| 35
.gitignore
| 1
etc/apt/pom.xml
| 13
etc/classloaders-test/plugin1/pom.xml
| 13
etc/classloaders-test/plugin2/pom.xml
| 13
etc/dev-utils/firefox3
| 6
etc/dev-utils/gensums
| 20
etc/dev-utils/git-create-branch
| 15
etc/dev-utils/jarfind
| 20
etc/dev-utils/killall-as7
| 8
etc/eclipse-tools/RHQ
| 82
etc/m2/settings.xml
| 6
etc/m2/smartgwt-war-archetype/pom.xml
| 2
etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/pom.xml
| 2
etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/src/main/resources/public/Application.html
| 15
etc/rhq-ircBot/pom.xml
| 130
etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
| 192
etc/samples/perspectives/sample-perspective/perspective/pom.xml
| 14
etc/samples/provisioning/sample-bundle/pom.xml
| 4
etc/samples/skeleton-plugin/pom.xml
| 13
modules/cli-tests/pom.xml
| 12
modules/common/ant-bundle/pom.xml
| 8
modules/common/drift/pom.xml
| 17
modules/common/filetemplate-bundle/pom.xml
| 8
modules/common/jboss-as/pom.xml
| 8
modules/common/jboss-as/src/main/java/com/jboss/jbossnetwork/product/jbpm/handlers/ControlActionHandler.java
| 6
modules/core/arquillian-integration/container/src/main/java/org/rhq/test/arquillian/FakeServerInventory.java
| 19
modules/core/client-api/pom.xml
| 17
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
| 6
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
| 2
modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/operation/OperationServerService.java
| 14
modules/core/client-api/src/main/resources/rhq-configuration.xsd
| 11
modules/core/comm-api/pom.xml
| 9
modules/core/domain/pom.xml
| 24
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
| 6
modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
| 12
modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
| 52
modules/core/domain/src/main/resources/META-INF/persistence.xml
| 2
modules/core/gui/pom.xml
| 9
modules/core/native-system/pom.xml
| 12
modules/core/plugin-api/pom.xml
| 8
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/ResourceContext.java
| 74
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/operation/OperationServicesResultCode.java
| 2
modules/core/plugin-api/src/test/java/org/rhq/core/pluginapi/inventory/ResourceContextTest.java
| 409
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
| 14
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
| 221
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
| 72
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/getnativeprocess/NativeProcessRetrievalTest.java
| 7
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/ManualAddDiscoveryComponent.java
| 34
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceComponent.java
| 103
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceDiscoveryComponent.java
| 16
modules/core/plugin-container-itest/src/test/resources/arquillian.xml
| 1
modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
| 60
modules/core/plugin-container/pom.xml
| 16
modules/core/plugin-container/src/main/java/org/rhq/core/pc/StandaloneContainer.java
| 2
modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
| 7
modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
| 43
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java
| 3
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
| 16
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/FilterFileVisitor.java
| 2
modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
| 7
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AutoDiscoveryExecutor.java
| 11
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
| 4
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
| 45
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryFile.java
| 9
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
| 257
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
| 173
modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementCollectorRunner.java
| 172
modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
| 24
modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationInvocation.java
| 8
modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationManager.java
| 6
modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationServicesAdapter.java
| 13
modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/PluginComponentFactory.java
| 14
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/FilterFileVisitorTest.java
| 72
modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/OperationManagerTest.java
| 7
modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
| 249
modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
| 15
modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTest.java
| 15
modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTestBase.java
| 2
modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
| 38
modules/core/plugindoc/pom.xml
| 4
modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
| 294
modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
| 119
modules/core/plugindoc/src/main/resources/common-macros.vm
| 2
modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
| 44
modules/core/plugindoc/src/main/resources/resource-type-doc-docbook.vm
| 33
modules/core/util/pom.xml
| 21
modules/core/util/src/main/java/org/rhq/core/util/exception/ThrowableUtil.java
| 25
modules/core/util/src/main/java/org/rhq/core/util/file/FileUtil.java
| 13
modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
| 2
modules/core/util/src/test/java/org/rhq/core/util/exception/ThrowableUtilTest.java
| 14
modules/enterprise/agent/pom.xml
| 37
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
| 32
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
| 3
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/DiscoveryPromptCommand.java
| 8
modules/enterprise/agent/src/main/resources/agent-configuration.xml
| 22
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm1Test.java
| 24
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
| 196
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm3Test.java
| 6
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm4Test.java
| 8
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm5Test.java
| 112
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm6Test.java
| 112
modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
| 51
modules/enterprise/agent/src/test/resources/test-agent1-cfg-mvn.xml
| 2
modules/enterprise/agent/src/test/resources/test-agent2-cfg-mvn.xml
| 2
modules/enterprise/agentupdate/pom.xml
| 25
modules/enterprise/binding/pom.xml
| 25
modules/enterprise/binding/src/main/java/org/rhq/bindings/ScriptEngineFactory.java
| 4
modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
| 4
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
| 53
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientProxy.java
| 59
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
| 102
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
| 133
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManagers.java
| 133
modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
| 419
modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ResourceTypeFingerprint.java
| 51
modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptAssert.java
| 36
modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptUtil.java
| 5
modules/enterprise/binding/src/test/java/org/rhq/bindings/FakeRhqFacade.java
| 151
modules/enterprise/binding/src/test/java/org/rhq/bindings/ScriptEngineTest.java
| 6
modules/enterprise/binding/src/test/java/org/rhq/bindings/util/InterfaceSimplifierTest.java
| 317
modules/enterprise/binding/src/test/java/org/rhq/bindings/util/ScriptAssertTest.java
| 3
modules/enterprise/comm/pom.xml
| 21
modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/AbstractPerspectiveResourceUIBean.java
| 4
modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/PerspectiveClientUIBean.java
| 2
modules/enterprise/gui/content_http-war/pom.xml
| 13
modules/enterprise/gui/coregui/pom.xml
| 43
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/IconEnum.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
| 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java
| 72
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/DownloadsView.java
| 57
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
| 21
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
| 16
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
| 18
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDetailsView.java
| 8
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
| 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/EnhancedListGrid.java
| 56
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
| 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 20
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/SubjectRecordCellFormatter.java
| 32
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
| 65
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 138
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletWindow.java
| 88
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftDefinitionTemplatesView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
| 15
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
| 62
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
| 37
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
| 25
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleListView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateStep.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
| 266
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryView.java
| 17
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
| 277
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryCreateWizard.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryImportWizard.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
| 71
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
| 125
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
| 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
| 52
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/Message.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
| 38
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AbstractGWTServiceImpl.java
| 22
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
| 10
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants.properties
| 10
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_de.properties
| 34
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
| 34
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_pt.properties
| 31
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_zh.properties
| 35
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 43
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
| 2061 +
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
| 47
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
| 32
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
| 40
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
| 44
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
| 46
modules/enterprise/gui/coregui/src/main/webapp/images/global/Check_16.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_disabled_11.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_enabled_11.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/org.rhq.enterprise.gui.coregui.CoreGUI/sc/skins/standard/images/blank.gif
|binary
modules/enterprise/gui/installer-war/pom.xml
| 26
modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java
| 27
modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
| 184
modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
| 101
modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
| 3
modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
| 92
modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
| 8
modules/enterprise/gui/portal-war/pom.xml
| 28
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
| 3
modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
| 4
modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp
| 23
modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/menu/menu.xhtml
| 2
modules/enterprise/gui/rest-war/pom.xml
| 20
modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/HeaderDumperFilter.java
| 61
modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
| 256
modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
| 47
modules/enterprise/gui/rest-war/src/main/webapp/index.html
| 2
modules/enterprise/gui/webdav-war/pom.xml
| 13
modules/enterprise/remoting/cli/pom.xml
| 26
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
| 58
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
| 602
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/HelpCommand.java
| 2
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/LoginCommand.java
| 4
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java
| 4
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
| 93
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ChangeRegisteringPrintWriter.java
| 233
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
| 48
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/DummyCodeCompletion.java
| 50
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ReflectionUtility.java
| 27
modules/enterprise/remoting/cli/src/main/samples/add-as7-standalone-server-to-cluster.js
| 148
modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
| 4
modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
| 85
modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
| 321
modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
| 47
modules/enterprise/remoting/webservices/pom.xml
| 4
modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/CodeCompletion.java
| 26
modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
| 84
modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/ScriptEngineProvider.java
| 2
modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
| 549
modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JsEngineProvider.java
| 3
modules/enterprise/server/client-api/pom.xml
| 27
modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
| 454
modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
| 13
modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
| 55
modules/enterprise/server/container-lib/pom.xml
| 9
modules/enterprise/server/container/pom.xml
| 21
modules/enterprise/server/container/src/main/downloadable-resources/connectors/README.txt
| 2
modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
| 4
modules/enterprise/server/ear/pom.xml
| 12
modules/enterprise/server/itests/pom.xml
| 4
modules/enterprise/server/jar/pom.xml
| 165
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
| 17
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
| 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java
| 26
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/plugin/ProductPluginDeployer.java
| 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
| 48
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
| 75
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftTemplateManagerBean.java
| 32
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
| 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationServerServiceImpl.java
| 43
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
| 79
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
| 165
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java
| 11
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
| 22
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerLocal.java
| 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
| 34
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
| 272
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
| 89
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
| 254
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
| 101
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
| 66
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
| 77
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerBean.java
| 28
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerLocal.java
| 46
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
| 229
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
| 103
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
| 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
| 65
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
| 39
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertDefinitionRest.java
| 31
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
| 49
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AvailabilityRest.java
| 9
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
| 122
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/MetricAggregate.java
| 44
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
| 23
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
| 105
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/AlertDefinitionLocal.java
| 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/ConfigurationHistoryLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/PlatformUtilizationLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentAlertLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentDriftLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentOperationsLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/SuspectMetricLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/MeasurementTestBean.java
| 13
modules/enterprise/server/jar/src/main/resources/docbook.rnc
|10643
++++++++++
modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
| 58
modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
| 30
modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
| 31
modules/enterprise/server/jar/src/main/resources/rest_templates/groupDefinition.ftl
| 62
modules/enterprise/server/jar/src/main/resources/rest_templates/listAlerts.ftl
| 32
modules/enterprise/server/jar/src/main/resources/rest_templates/listAvailability.ftl
| 32
modules/enterprise/server/jar/src/main/resources/rest_templates/listGroupDefinition.ftl
| 37
modules/enterprise/server/jar/src/main/resources/rest_templates/listMetricSchedule.ftl
| 2
modules/enterprise/server/jar/src/main/resources/rest_templates/listResourceWithType.ftl
| 2
modules/enterprise/server/jar/src/main/resources/rest_templates/metricData.ftl
| 49
modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
| 24
modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
| 12
modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
| 229
modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
| 152
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
| 51
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
| 2
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
| 91
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
| 3
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
| 85
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/group/test/LargeGroupCriteriaTest.java
| 81
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
| 2
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
| 2
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
| 165
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml
| 2
modules/enterprise/server/plugins/alert-cli/pom.xml
| 21
modules/enterprise/server/plugins/alert-email/pom.xml
| 21
modules/enterprise/server/plugins/alert-irc/pom.xml
| 20
modules/enterprise/server/plugins/alert-log4j/pom.xml
| 21
modules/enterprise/server/plugins/alert-microblog/pom.xml
| 20
modules/enterprise/server/plugins/alert-mobicents/pom.xml
| 21
modules/enterprise/server/plugins/alert-operations/pom.xml
| 21
modules/enterprise/server/plugins/alert-roles/pom.xml
| 21
modules/enterprise/server/plugins/alert-scriptlang/pom.xml
| 20
modules/enterprise/server/plugins/alert-sms/pom.xml
| 20
modules/enterprise/server/plugins/alert-snmp/pom.xml
| 20
modules/enterprise/server/plugins/alert-subject/pom.xml
| 17
modules/enterprise/server/plugins/ant-bundle/pom.xml
| 20
modules/enterprise/server/plugins/cloud/pom.xml
| 12
modules/enterprise/server/plugins/cobbler/pom.xml
| 20
modules/enterprise/server/plugins/disk/pom.xml
| 21
modules/enterprise/server/plugins/drift-mongodb/pom.xml
| 20
modules/enterprise/server/plugins/drift-rhq/pom.xml
| 21
modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
| 20
modules/enterprise/server/plugins/groovy-script/pom.xml
| 21
modules/enterprise/server/plugins/jboss-software/pom.xml
| 21
modules/enterprise/server/plugins/packagetype-cli/pom.xml
| 21
modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
| 13
modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
| 14
modules/enterprise/server/plugins/url/pom.xml
| 21
modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
| 6
modules/enterprise/server/plugins/yum/pom.xml
| 21
modules/enterprise/server/safe-invoker/pom.xml
| 17
modules/enterprise/server/sars/agent-sar/pom.xml
| 24
modules/enterprise/server/xml-schemas/pom.xml
| 25
modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
| 2
modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/XmlSchemas.java
| 2
modules/helpers/bundleGen/pom.xml
| 8
modules/helpers/perftest-support/pom.xml
| 8
modules/helpers/pluginGen/pom.xml
| 8
modules/helpers/pom.xml
| 1
modules/helpers/rest-docs-generator/pom.xml
| 158
modules/helpers/rest-docs-generator/readme.txt
| 11
modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
| 415
modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/javax.annotation.processing.Processor
| 1
modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
| 92
modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/FooBean.java
| 61
modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/MyBean.java
| 52
modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
| 46
modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SomeEjbInterface.java
| 54
modules/helpers/rtfilter/pom.xml
| 17
modules/integration-tests/apache-plugin-test/pom.xml
| 4
modules/integration-tests/jndi-access/jndi-access-test/pom.xml
| 4
modules/integration-tests/mod_cluster-plugin-test/pom.xml
| 4
modules/jopr/dist/agent/pom.xml
| 5
modules/jopr/dist/server/pom.xml
| 4
modules/plugins/JBossOSGi/pom.xml
| 20
modules/plugins/aliases/pom.xml
| 25
modules/plugins/ant-bundle/pom.xml
| 24
modules/plugins/apache/pom.xml
| 24
modules/plugins/augeas/pom.xml
| 20
modules/plugins/byteman/pom.xml
| 24
modules/plugins/cobbler/pom.xml
| 24
modules/plugins/cron/pom.xml
| 25
modules/plugins/database/pom.xml
| 21
modules/plugins/filetemplate-bundle/pom.xml
| 24
modules/plugins/grub/pom.xml
| 25
modules/plugins/hadoop/pom.xml
| 21
modules/plugins/hardware/pom.xml
| 8
modules/plugins/hibernate/pom.xml
| 24
modules/plugins/hosts/pom.xml
| 25
modules/plugins/hudson/pom.xml
| 8
modules/plugins/iis/pom.xml
| 25
modules/plugins/iptables/pom.xml
| 17
modules/plugins/irc/pom.xml
| 20
modules/plugins/jboss-as-5/pom.xml
| 38
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
| 2
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/JBossMessagingComponent.java
| 3
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
| 47
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
| 61
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/helper/CreateChildResourceFacetDelegate.java
| 9
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/FileContentDelegate.java
| 387
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
| 152
modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
| 3645 +--
modules/plugins/jboss-as-5/src/test/java/org/rhq/plugins/jbossas5/test/StandaloneManagedDeploymentComponentTest.java
| 90
modules/plugins/jboss-as-7/pom.xml
| 128
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7CommandLine.java
| 7
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
| 57
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
| 97
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
| 5
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
| 118
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadDelegate.java
| 7
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
| 38
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/CreateResourceDelegate.java
| 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
| 46
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
| 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
| 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java
| 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java
| 10
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCContainerComponent.java
| 66
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCacheComponent.java
| 81
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnComponent.java
| 10
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
| 53
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterComponent.java
| 138
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
| 191
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
| 84
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
| 130
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NamingComponent.java
| 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NetworkInterfaceComponent.java
| 93
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
| 23
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
| 42
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
| 90
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponent.java
| 72
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadPoolComponent.java
| 63
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadsComponent.java
| 56
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
| 13
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/modcluster/ProxyInfo.java
| 349
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
| 8564
++++++--
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
| 30
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
| 58
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
| 72
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedComponentTest.java
| 310
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponentTest.java
| 177
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
| 4
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
| 67
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java
| 3
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
| 22
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/package.html
| 30
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
| 169
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
| 87
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
| 183
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
| 15
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/TemplatedResourcesTest.java
| 151
modules/plugins/jboss-as-7/src/test/resources/itest/test-simple-2.war
|binary
modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
| 44
modules/plugins/jboss-as/pom.xml
| 25
modules/plugins/jboss-cache-v3/pom.xml
| 24
modules/plugins/jboss-cache/pom.xml
| 25
modules/plugins/jdbctrace/pom.xml
| 28
modules/plugins/jira/pom.xml
| 24
modules/plugins/jmx/pom.xml
| 24
modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/EmbeddedJMXServerDiscoveryComponent.java
| 15
modules/plugins/kickstart/pom.xml
| 21
modules/plugins/lsof/pom.xml
| 24
modules/plugins/mod-cluster/pom.xml
| 25
modules/plugins/mysql/pom.xml
| 24
modules/plugins/netservices/pom.xml
| 24
modules/plugins/nss/pom.xml
| 21
modules/plugins/onewire/pom.xml
| 21
modules/plugins/oracle/pom.xml
| 20
modules/plugins/pattern-generator/pom.xml
| 13
modules/plugins/platform/pom.xml
| 25
modules/plugins/postfix/pom.xml
| 25
modules/plugins/postgres/pom.xml
| 24
modules/plugins/raw-config-test/pom.xml
| 4
modules/plugins/rhq-agent/pom.xml
| 25
modules/plugins/rhq-server/pom.xml
| 24
modules/plugins/samba/pom.xml
| 25
modules/plugins/script/pom.xml
| 25
modules/plugins/script/src/main/java/org/rhq/plugins/script/ScriptServerComponent.java
| 82
modules/plugins/script/src/main/resources/META-INF/rhq-plugin.xml
| 7
modules/plugins/script2/pom.xml
| 20
modules/plugins/services/pom.xml
| 21
modules/plugins/snmptrapd/pom.xml
| 20
modules/plugins/sshd/pom.xml
| 25
modules/plugins/sudoers/pom.xml
| 25
modules/plugins/tomcat/pom.xml
| 25
modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatConnectorDiscoveryComponent.java
| 16
modules/plugins/twitter/pom.xml
| 20
modules/plugins/validate-all-plugins/pom.xml
| 16
modules/plugins/virt/pom.xml
| 24
modules/test-utils/pom.xml
| 8
pom.xml
| 38
480 files changed, 38130 insertions(+), 9634 deletions(-)
New commits:
commit fbb4fd565dec268144e29692bb8c20cc98e9c487
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Mon Jul 2 14:36:31 2012 +0200
Javascript completor now correctly outputs the signatures of the methods.
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
index ff98b5c..a8da737 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
@@ -22,6 +22,7 @@ package org.rhq.enterprise.client.utility;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import javax.jws.WebParam;
@@ -34,6 +35,26 @@ import org.rhq.scripting.MetadataProvider;
public class CLIMetadataProvider implements MetadataProvider {
@Override
+ public Method getUnproxiedMethod(Method method) {
+ if (Proxy.isProxyClass(method.getDeclaringClass())) {
+ //ok, don't look at the proxy class but at the interface that is actually
defining this method
+ for (Class<?> iface : method.getDeclaringClass().getInterfaces()) {
+ try {
+ Method ifaceMethod = iface.getMethod(method.getName(),
method.getParameterTypes());
+ return ifaceMethod;
+ } catch (NoSuchMethodException e) {
+ //well, never mind, let's try the next interface
+ } catch (SecurityException e) {
+ //whoa
+ throw new IllegalStateException("Current code doesn't have
reflection permissions.", e);
+ }
+ }
+ }
+
+ return method;
+ }
+
+ @Override
public String getParameterName(Method method, int parameterIndex) {
String name = null;
diff --git
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
index 598d952..448da46 100644
---
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
+++
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
@@ -37,6 +37,21 @@ import java.lang.reflect.Type;
public interface MetadataProvider {
/**
+ * Many of the objects that RHQ exposes in the scripting environment are implemented
+ * using proxies. But proxies don't seem to maintain the generic types on them.
+ * <p>
+ * This method tries to find out if given method comes from a proxy class and if it
is,
+ * it tries to find the method in one of the interfaces that the proxy implements
that
+ * corresponds to it. That method is going to have all the metadata - i.e.
annotations,
+ * generics, etc.
+ *
+ * @param method the method to inspect
+ * @return the method from one of the interfaces implemented by the given
method's declaring class
+ * or the given method itself if it is not proxied.
+ */
+ Method getUnproxiedMethod(Method method);
+
+ /**
* Tries to determine the name of a parameter on a method.
*
* @param method the method
diff --git
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
index 36eb060..f90969a 100644
---
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
+++
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
@@ -276,6 +276,9 @@ public class JavascriptCompletor implements CodeCompletion {
maxReturnLength = sig[0].length();
}
+ output.println();
+ output.println();
+
for (String[] sig : signatures) {
for (i = 0; i < (maxReturnLength - sig[0].length()); i++) {
output.print(" ");
@@ -500,6 +503,7 @@ public class JavascriptCompletor implements CodeCompletion {
StringBuilder buf = new StringBuilder();
Type[] params = m.getGenericParameterTypes();
int i = 0;
+ m = metadataProvider.getUnproxiedMethod(m);
buf.append(metadataProvider.getTypeName(m.getGenericReturnType(), false));
buf.append(" ");
commit fca41ffec5ff7d32735f4c25d033b240a6d1df4b
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Mon Jul 2 14:32:56 2012 +0200
The CLI interactive console correctly handles the case where the completor outputs
some additional text to the output.
The output is flushed and the commandline is re-printed underneath it.
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 5d1af69..cfe1686 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -241,7 +241,7 @@ public class ClientMain {
initCodeCompletion();
consoleReader.addCompletor(new MultiCompletor(new Completor[] {
- new CodeCompletionCompletorWrapper(codeCompletion, outputWriter),
helpCompletor,
+ new CodeCompletionCompletorWrapper(codeCompletion, outputWriter,
consoleReader), helpCompletor,
commandCompletor }));
// enable pagination
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ChangeRegisteringPrintWriter.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ChangeRegisteringPrintWriter.java
new file mode 100644
index 0000000..dfc03b4
--- /dev/null
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ChangeRegisteringPrintWriter.java
@@ -0,0 +1,233 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.client.utility;
+
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.util.Locale;
+
+/**
+ * @author Lukas Krejci
+ *
+ */
+public class ChangeRegisteringPrintWriter extends PrintWriter {
+
+ private boolean changed;
+
+ public ChangeRegisteringPrintWriter(Writer out) {
+ super(out);
+ }
+
+ public boolean isChanged() {
+ return changed;
+ }
+
+ public void setChanged(boolean changed) {
+ this.changed = changed;
+ }
+
+ @Override
+ public PrintWriter append(char c) {
+ setChanged(true);
+ return super.append(c);
+ }
+
+ @Override
+ public void write(int c) {
+ setChanged(true);
+ super.write(c);
+ }
+
+ @Override
+ public void write(char[] buf, int off, int len) {
+ setChanged(true);
+ super.write(buf, off, len);
+ }
+
+ @Override
+ public void write(char[] buf) {
+ setChanged(true);
+ super.write(buf);
+ }
+
+ @Override
+ public void write(String s, int off, int len) {
+ setChanged(true);
+ super.write(s, off, len);
+ }
+
+ @Override
+ public void write(String s) {
+ setChanged(true);
+ super.write(s);
+ }
+
+ @Override
+ public void print(boolean b) {
+ setChanged(true);
+ super.print(b);
+ }
+
+ @Override
+ public void print(char c) {
+ setChanged(true);
+ super.print(c);
+ }
+
+ @Override
+ public void print(int i) {
+ setChanged(true);
+ super.print(i);
+ }
+
+ @Override
+ public void print(long l) {
+ setChanged(true);
+ super.print(l);
+ }
+
+ @Override
+ public void print(float f) {
+ setChanged(true);
+ super.print(f);
+ }
+
+ @Override
+ public void print(double d) {
+ setChanged(true);
+ super.print(d);
+ }
+
+ @Override
+ public void print(char[] s) {
+ setChanged(true);
+ super.print(s);
+ }
+
+ @Override
+ public void print(String s) {
+ setChanged(true);
+ super.print(s);
+ }
+
+ @Override
+ public void print(Object obj) {
+ setChanged(true);
+ super.print(obj);
+ }
+
+ @Override
+ public void println() {
+ setChanged(true);
+ super.println();
+ }
+
+ @Override
+ public void println(boolean x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(char x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(int x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(long x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(float x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(double x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(char[] x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(String x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public void println(Object x) {
+ setChanged(true);
+ super.println(x);
+ }
+
+ @Override
+ public PrintWriter printf(String format, Object... args) {
+ setChanged(true);
+ return super.printf(format, args);
+ }
+
+ @Override
+ public PrintWriter printf(Locale l, String format, Object... args) {
+ setChanged(true);
+ return super.printf(l, format, args);
+ }
+
+ @Override
+ public PrintWriter format(String format, Object... args) {
+ setChanged(true);
+ return super.format(format, args);
+ }
+
+ @Override
+ public PrintWriter format(Locale l, String format, Object... args) {
+ setChanged(true);
+ return super.format(l, format, args);
+ }
+
+ @Override
+ public PrintWriter append(CharSequence csq) {
+ setChanged(true);
+ return super.append(csq);
+ }
+
+ @Override
+ public PrintWriter append(CharSequence csq, int start, int end) {
+ setChanged(true);
+ return super.append(csq, start, end);
+ }
+
+}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
index 8f2570c..4be3613 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
@@ -1,24 +1,48 @@
package org.rhq.enterprise.client.utility;
+import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import jline.Completor;
+import jline.ConsoleReader;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.rhq.scripting.CodeCompletion;
public class CodeCompletionCompletorWrapper implements Completor {
+ private static final Log LOG =
LogFactory.getLog(CodeCompletionCompletorWrapper.class);
+
private CodeCompletion completion;
- private PrintWriter output;
+ private ChangeRegisteringPrintWriter output;
+ private ConsoleReader consoleReader;
- public CodeCompletionCompletorWrapper(CodeCompletion completion, PrintWriter output)
{
+ public CodeCompletionCompletorWrapper(CodeCompletion completion, PrintWriter output,
ConsoleReader consoleReader) {
this.completion = completion;
- this.output = output;
+ this.output = new ChangeRegisteringPrintWriter(output);
+ this.consoleReader = consoleReader;
}
@Override
public int complete(String buffer, int cursor, List candidates) {
- return completion.complete(output, buffer, cursor, candidates);
+ String start = this.consoleReader.getCursorBuffer().getBuffer().toString();
+
+ output.setChanged(false);
+ int ret = completion.complete(output, buffer, cursor, candidates);
+
+ if (output.isChanged()) {
+ try {
+ output.flush();
+ consoleReader.printNewline();
+ consoleReader.drawLine();
+ } catch (IOException e) {
+ LOG.debug("Failed to draw a console reader line.", e);
+ }
+ }
+
+ return ret;
}
}
commit 1d1e61836632b35abe0a30b67b6b999cd4a84ef0
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Mon Jul 2 14:30:32 2012 +0200
InterfaceSimplifier now mirrors the generic type signatures and annotations
on all levels.
The newly generated class preserves the generic type signatures and
annotations on the class, method and method parameter levels.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
index d6835a0..dc29bc9 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
@@ -18,13 +18,37 @@
*/
package org.rhq.bindings.util;
+import java.util.ArrayList;
+import java.util.List;
+
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
+import javassist.Modifier;
import javassist.NotFoundException;
+import javassist.bytecode.AnnotationsAttribute;
+import javassist.bytecode.ClassFile;
+import javassist.bytecode.ConstPool;
import javassist.bytecode.ParameterAnnotationsAttribute;
+import javassist.bytecode.SignatureAttribute;
+import javassist.bytecode.annotation.Annotation;
+import javassist.bytecode.annotation.AnnotationMemberValue;
+import javassist.bytecode.annotation.ArrayMemberValue;
+import javassist.bytecode.annotation.BooleanMemberValue;
+import javassist.bytecode.annotation.ByteMemberValue;
+import javassist.bytecode.annotation.CharMemberValue;
+import javassist.bytecode.annotation.ClassMemberValue;
+import javassist.bytecode.annotation.DoubleMemberValue;
+import javassist.bytecode.annotation.EnumMemberValue;
+import javassist.bytecode.annotation.FloatMemberValue;
+import javassist.bytecode.annotation.IntegerMemberValue;
+import javassist.bytecode.annotation.LongMemberValue;
+import javassist.bytecode.annotation.MemberValue;
+import javassist.bytecode.annotation.MemberValueVisitor;
+import javassist.bytecode.annotation.ShortMemberValue;
+import javassist.bytecode.annotation.StringMemberValue;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -33,18 +57,18 @@ import org.rhq.core.domain.auth.Subject;
/**
* The scripts can use simplified interfaces that omit the first "Subject"
argument
- * to most methods. This helper class prepares such simplified interfaces.
+ * to most methods from RHQ's remote API. This helper class prepares such simplified
interfaces.
*
* @author Greg Hinkle
* @author Lukas Krejci
*/
public class InterfaceSimplifier {
private static final Log LOG = LogFactory.getLog(InterfaceSimplifier.class);
-
+
private InterfaceSimplifier() {
-
+
}
-
+
public static Class<?> simplify(Class<?> intf) {
try {
ClassPool classPool = ClassPool.getDefault();
@@ -52,65 +76,125 @@ public class InterfaceSimplifier {
String simplifiedName = getSimplifiedName(intf);
LOG.debug("Simplifying " + intf + " (simplified interface
name: " + simplifiedName + ")...");
+ CtClass cached = null;
try {
- @SuppressWarnings("unused")
- CtClass cached = classPool.get(simplifiedName);
+ cached = classPool.get(simplifiedName);
return Class.forName(simplifiedName, false, classPool.getClassLoader());
-
} catch (NotFoundException e) {
// ok... load it
} catch (ClassNotFoundException e) {
LOG.debug("Class [" + simplifiedName + "] not found -
cause: " + e, e);
+ if (cached != null) {
+ // strange - we found the class definition in the class pool, which
means we must have touched it
+ // before but Class.forName failed to find the class in the class
pool's class loader.
+ return cached.toClass();
+ }
}
CtClass originalClass = classPool.get(intf.getName());
+ ClassFile originalClassFile = originalClass.getClassFile();
CtClass newClass = classPool.makeInterface(simplifiedName);
newClass.defrost();
+ ClassFile newClassFile = newClass.getClassFile();
+
+ //we'll be adding new constants to the class file (for generics and
annotations)
+ ConstPool constPool = newClassFile.getConstPool();
+
+ //copy the annotations on the class
+ AnnotationsAttribute annotations = (AnnotationsAttribute) originalClassFile
+ .getAttribute(AnnotationsAttribute.visibleTag);
+ AnnotationsAttribute newAnnotations = copyAnnotations(annotations,
constPool);
+ if (newAnnotations != null) {
+ newClassFile.addAttribute(newAnnotations);
+ }
+
+ //copy the generic signature of the class
+ SignatureAttribute signature = (SignatureAttribute)
originalClassFile.getAttribute(SignatureAttribute.tag);
+ if (signature != null) {
+ newClassFile.addAttribute(new SignatureAttribute(constPool,
signature.getSignature()));
+ }
+
+ //now copy over the methods
CtMethod[] methods = originalClass.getMethods();
for (CtMethod originalMethod : methods) {
+ //we are only simplifying interfaces here, but the CtClass.getMethods()
also returns concrete methods
+ //inherited from Object. Let's just skip those - we don't need to
worry about them...
+ if (!Modifier.isAbstract(originalMethod.getModifiers())) {
+ continue;
+ }
+
CtClass[] params = originalMethod.getParameterTypes();
- if (params.length > 0 &&
params[0].getName().equals(Subject.class.getName())) {
+ //capture all the runtime visible method annotations on the original
method
+ annotations = (AnnotationsAttribute)
originalMethod.getMethodInfo().getAttribute(
+ AnnotationsAttribute.visibleTag);
+
+ //capture all the runtime visible parameter annotations on the original
method
+ ParameterAnnotationsAttribute parameterAnnotations =
(ParameterAnnotationsAttribute) originalMethod
+
.getMethodInfo().getAttribute(ParameterAnnotationsAttribute.visibleTag);
+
+ //capture the generic signature of the original method.
+ signature = (SignatureAttribute)
originalMethod.getMethodInfo().getAttribute(
+ SignatureAttribute.tag);
+
+ boolean simplify = params.length > 0 &&
params[0].getName().equals(Subject.class.getName());
+
+ if (simplify) {
+ //generate new params, leaving out the first parameter (the subject)
CtClass[] simpleParams = new CtClass[params.length - 1];
System.arraycopy(params, 1, simpleParams, 0, params.length - 1);
- newClass.defrost();
+ params = simpleParams;
+ }
- CtMethod newMethod =
CtNewMethod.abstractMethod(originalMethod.getReturnType(), originalMethod
-.getName(), simpleParams, null, newClass);
+ //generate the new method with possibly modified parameters
+ CtMethod newMethod =
CtNewMethod.abstractMethod(originalMethod.getReturnType(),
+ originalMethod.getName(), params, originalMethod.getExceptionTypes(),
newClass);
- ParameterAnnotationsAttribute originalAnnotationsAttribute =
(ParameterAnnotationsAttribute) originalMethod
-
.getMethodInfo().getAttribute(ParameterAnnotationsAttribute.visibleTag);
+ //copy over the method annotations
+ annotations = copyAnnotations(annotations, constPool);
- // If there are any parameter annotations, copy the one's
we're keeping
- if (originalAnnotationsAttribute != null) {
+ if (simplify) {
+ if (signature != null) {
+ //fun, we need to modify the signature, too, because we have left
out the parameter
+ MethodSignature sig =
MethodSignature.parse(signature.getSignature());
- javassist.bytecode.annotation.Annotation[][] originalAnnotations
= originalAnnotationsAttribute
- .getAnnotations();
- javassist.bytecode.annotation.Annotation[][] newAnnotations = new
javassist.bytecode.annotation.Annotation[originalAnnotations.length - 1][];
+ sig.paramTypes.remove(0);
- for (int i = 1; i < originalAnnotations.length; i++) {
- newAnnotations[i - 1] = new
javassist.bytecode.annotation.Annotation[originalAnnotations[i].length];
- System.arraycopy(originalAnnotations[i], 0, newAnnotations[i
- 1], 0,
- originalAnnotations[i].length);
- }
+ signature = new SignatureAttribute(constPool, sig.toString());
+ }
- ParameterAnnotationsAttribute newAnnotationsAttribute = new
ParameterAnnotationsAttribute(
- newMethod.getMethodInfo().getConstPool(),
ParameterAnnotationsAttribute.visibleTag);
+ //next, we need to copy the parameter annotations
+ parameterAnnotations = copyParameterAnnotations(parameterAnnotations,
constPool, 1);
+ } else {
+ //just copy the sig and parameter annotations verbatim
+ if (signature != null) {
+ signature = new SignatureAttribute(constPool,
signature.getSignature());
+ }
- newAnnotationsAttribute.setAnnotations(newAnnotations);
+ parameterAnnotations = copyParameterAnnotations(parameterAnnotations,
constPool, 0);
+ }
- newMethod.getMethodInfo().addAttribute(newAnnotationsAttribute);
+ if (parameterAnnotations != null) {
+ newMethod.getMethodInfo().addAttribute(parameterAnnotations);
+ }
- }
+ if (signature != null) {
+ newMethod.getMethodInfo().addAttribute(signature);
+ }
- newClass.addMethod(newMethod);
+ if (annotations != null) {
+ newMethod.getMethodInfo().addAttribute(annotations);
}
+
+ //it is important to add the method directly to the classfile, not the
class
+ //because otherwise the generics info wouldn't survive
+ newClassFile.addMethod(newMethod.getMethodInfo());
}
return newClass.toClass();
@@ -127,9 +211,266 @@ public class InterfaceSimplifier {
String fullName = interfaceClass.getName();
String simpleName = interfaceClass.getSimpleName();
Package pkg = interfaceClass.getPackage();
- String packageName = (pkg != null) ? pkg.getName() :
- fullName.substring(0, fullName.length() - (simpleName.length() + 1));
+ String packageName = (pkg != null) ? pkg.getName() : fullName.substring(0,
+ fullName.length() - (simpleName.length() + 1));
return packageName + ".wrapped." + simpleName + "Simple";
}
+ /**
+ * Copies the provided annotation into the provided const pool.
+ *
+ * @param annotation
+ * @param constPool
+ * @return
+ * @throws NotFoundException
+ */
+ private static Annotation cloneAnnotation(Annotation annotation, final ConstPool
constPool)
+ throws NotFoundException {
+
+ Annotation ret = new Annotation(annotation.getTypeName(), constPool);
+
+ for (Object m : annotation.getMemberNames()) {
+ final String memberName = (String) m;
+
+ MemberValue origValue = annotation.getMemberValue(memberName);
+ final MemberValue[] newValue = new MemberValue[1];
+
+ origValue.accept(new ArrayIndexAssigningVisitor(newValue, 0, constPool));
+
+ ret.addMemberValue(memberName, newValue[0]);
+ }
+
+ return ret;
+ }
+
+ private static AnnotationsAttribute copyAnnotations(AnnotationsAttribute annotations,
ConstPool constPool)
+ throws NotFoundException {
+ if (annotations != null) {
+ Annotation[] origAnnotations = annotations.getAnnotations();
+ Annotation[] newClassAnnotations = new Annotation[origAnnotations.length];
+ for (int i = 0; i < newClassAnnotations.length; ++i) {
+ newClassAnnotations[i] = cloneAnnotation(origAnnotations[i], constPool);
+ }
+
+ AnnotationsAttribute newAnnotations = new AnnotationsAttribute(constPool,
AnnotationsAttribute.visibleTag);
+ newAnnotations.setAnnotations(newClassAnnotations);
+
+ return newAnnotations;
+ }
+
+ return null;
+ }
+
+ private static ParameterAnnotationsAttribute copyParameterAnnotations(
+ ParameterAnnotationsAttribute parameterAnnotations, ConstPool constPool, int
fromIndex)
+ throws NotFoundException {
+
+ if (parameterAnnotations != null) {
+ Annotation[][] originalAnnotations = parameterAnnotations.getAnnotations();
+
+ //return early if there are no annotations to copy
+ if (originalAnnotations.length - fromIndex <= 0) {
+ return null;
+ }
+
+ Annotation[][] newParameterAnnotations = new
Annotation[originalAnnotations.length - fromIndex][];
+
+ for (int i = fromIndex; i < originalAnnotations.length; i++) {
+ newParameterAnnotations[i - fromIndex] = new
Annotation[originalAnnotations[i].length];
+ for (int j = 0; j < originalAnnotations[i].length; ++j) {
+ Annotation origAnnotation = originalAnnotations[i][j];
+
+ newParameterAnnotations[i - fromIndex][j] =
cloneAnnotation(origAnnotation, constPool);
+ }
+ }
+
+ ParameterAnnotationsAttribute newAnnotationsAttribute = new
ParameterAnnotationsAttribute(constPool,
+ ParameterAnnotationsAttribute.visibleTag);
+
+ newAnnotationsAttribute.setAnnotations(newParameterAnnotations);
+
+ return newAnnotationsAttribute;
+ }
+
+ return null;
+ }
+
+ private static class ArrayIndexAssigningVisitor implements MemberValueVisitor {
+ private MemberValue[] array;
+ private int index;
+ private ConstPool constPool;
+
+ public ArrayIndexAssigningVisitor(MemberValue[] array, int index, ConstPool
constPool) {
+ this.array = array;
+ this.index = index;
+ this.constPool = constPool;
+ }
+
+ @Override
+ public void visitStringMemberValue(StringMemberValue node) {
+ array[index] = new StringMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitShortMemberValue(ShortMemberValue node) {
+ array[index] = new ShortMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitLongMemberValue(LongMemberValue node) {
+ array[index] = new LongMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitIntegerMemberValue(IntegerMemberValue node) {
+ array[index] = new IntegerMemberValue(constPool, node.getValue());
+ }
+
+ @Override
+ public void visitFloatMemberValue(FloatMemberValue node) {
+ array[index] = new FloatMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitEnumMemberValue(EnumMemberValue node) {
+ EnumMemberValue val = new EnumMemberValue(constPool);
+ val.setType(node.getType());
+ val.setValue(node.getValue());
+ array[index] = val;
+ }
+
+ @Override
+ public void visitDoubleMemberValue(DoubleMemberValue node) {
+ array[index] = new DoubleMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitClassMemberValue(ClassMemberValue node) {
+ array[index] = new ClassMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitCharMemberValue(CharMemberValue node) {
+ array[index] = new CharMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitByteMemberValue(ByteMemberValue node) {
+ array[index] = new ByteMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitBooleanMemberValue(BooleanMemberValue node) {
+ array[index] = new BooleanMemberValue(node.getValue(), constPool);
+ }
+
+ @Override
+ public void visitArrayMemberValue(ArrayMemberValue node) {
+ ArrayMemberValue val = new ArrayMemberValue(node.getType(), constPool);
+ MemberValue[] newVals = new MemberValue[node.getValue().length];
+ for (int i = 0; i < node.getValue().length; ++i) {
+ node.getValue()[i].accept(new ArrayIndexAssigningVisitor(newVals, i,
constPool));
+ }
+
+ val.setValue(newVals);
+ array[index] = val;
+ }
+
+ @Override
+ public void visitAnnotationMemberValue(AnnotationMemberValue node) {
+ array[index] = new AnnotationMemberValue(node.getValue(), constPool);
+ }
+ }
+
+ //a quick and dirty method signature parser
+ //see
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.3.4
+ private static class MethodSignature {
+ public String returnType;
+ public List<String> paramTypes = new ArrayList<String>();
+ public String typeParameters;
+ public String exceptionTypes;
+
+ public static MethodSignature parse(String signature) {
+ int startParams = signature.indexOf('(') + 1;
+ int endParams = signature.indexOf(')');
+ int startExceptions = signature.indexOf('^');
+
+ MethodSignature sig = new MethodSignature();
+ sig.typeParameters = signature.substring(0, startParams - 1);
+ if (startExceptions == -1) {
+ sig.returnType = signature.substring(endParams + 1);
+ sig.exceptionTypes = "";
+ } else {
+ sig.returnType = signature.substring(endParams + 1, startExceptions);
+ sig.exceptionTypes = signature.substring(startExceptions);
+ }
+
+ int idx = startParams;
+ while (idx < endParams) {
+ int end = findEndOfTypeSignature(idx, signature);
+ sig.paramTypes.add(signature.substring(idx, end));
+ idx = end;
+ }
+
+ return sig;
+ }
+
+ private static int findEndOfTypeSignature(int idx, String signature) {
+ int c = signature.charAt(idx);
+
+ switch (c) {
+ case 'L':
+ return findEndOfClassSignature(idx, signature);
+ case '[':
+ return findEndOfTypeSignature(idx + 1, signature);
+ case 'T':
+ return signature.indexOf(';', idx + 1) + 1;
+ default:
+ return idx + 1;
+ }
+ }
+
+ private static int findEndOfClassSignature(int indexOfL, String signature) {
+ int idx = indexOfL + 1;
+
+ int genericDeclDepth = 0;
+
+ while (idx < signature.length()) {
+ boolean sigComplete = false;
+
+ char c = signature.charAt(idx++);
+ switch (c) {
+ case '<':
+ genericDeclDepth++;
+ break;
+ case '>':
+ genericDeclDepth--;
+ break;
+ case ';':
+ sigComplete = genericDeclDepth == 0;
+ break;
+ }
+
+ if (sigComplete) {
+ break;
+ }
+ }
+
+ return idx;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder bld = new StringBuilder(typeParameters);
+ bld.append("(");
+ for (String p : paramTypes) {
+ bld.append(p);
+ }
+ bld.append(")");
+ bld.append(returnType);
+ bld.append(exceptionTypes);
+
+ return bld.toString();
+ }
+ }
}
diff --git
a/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/InterfaceSimplifierTest.java
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/InterfaceSimplifierTest.java
new file mode 100644
index 0000000..4312153
--- /dev/null
+++
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/InterfaceSimplifierTest.java
@@ -0,0 +1,317 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.bindings.util;
+
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.auth.Subject;
+
+/**
+ * @author Lukas Krejci
+ */
+@Test
+public class InterfaceSimplifierTest {
+
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ ElementType.TYPE, ElementType.PARAMETER, ElementType.METHOD })
+ public static @interface MyAnnotation {
+ int value() default 1;
+
+ String parameter();
+ }
+
+ public static interface NoSimplifications {
+ void voidMethodWithNoExceptions();
+
+ void voidMethodWithExceptions() throws IOException, InterruptedException;
+
+ int intMethod();
+
+ Object objectMethod();
+
+ Object objectMethodWithParams(int p1, Object p2);
+
+ Object objectMethodWithParamsAndExceptions(int p1, Object p2) throws IOException,
InterruptedException;
+ }
+
+ public static interface Simplifications {
+ void voidMethodWithNoExceptions(Subject s);
+
+ void voidMethodWithExceptions(Subject s) throws IOException,
InterruptedException;
+
+ int intMethod(Subject s);
+
+ Object objectMethod(Subject s);
+
+ Object objectMethodWithParams(Subject s, int p1, Object p2);
+
+ Object objectMethodWithParamsAndExceptions(Subject s, int p1, Object p2) throws
IOException,
+ InterruptedException;
+ }
+
+ public static interface Generics<C extends Type> {
+ void genericParameters(List<String> p, int p2);
+
+ <T extends Type> T typeParameters(T p, int p2);
+
+ <T extends Type> T typeParametersSimplified(Subject s, T p, int p2);
+
+ <T extends C> T classTypeParameters(T p, int p2);
+ }
+
+
+ @MyAnnotation(parameter = "CLASS")
+ public static interface Annotations {
+
+ @MyAnnotation(value = 2, parameter = "a")
+ int method(@MyAnnotation(parameter = "b") int p) throws IOException;
+
+ @MyAnnotation(value = 2, parameter = "c")
+ int methodSimplified(@MyAnnotation(parameter = "disappear") Subject s,
@MyAnnotation(parameter = "d") int p)
+ throws IOException;
+ }
+
+ public void testNoSimplifications() throws Exception {
+ Class<?> iface = InterfaceSimplifier.simplify(NoSimplifications.class);
+
+ Method voidMethodWithNoExceptions =
iface.getMethod("voidMethodWithNoExceptions");
+ Assert.assertEquals(voidMethodWithNoExceptions.getReturnType(), void.class);
+
+ Method voidMethodWithExceptions =
iface.getMethod("voidMethodWithExceptions");
+ List<Class<?>> exceptions =
Arrays.asList(voidMethodWithExceptions.getExceptionTypes());
+ Assert.assertTrue(exceptions.contains(IOException.class),
+ "The 'voidMethodWithExceptions doesn't seem to declare throws
IOException");
+ Assert.assertTrue(exceptions.contains(InterruptedException.class),
+ "The 'voidMethodWithExceptions doesn't seem to declare throws
InterruptedException");
+
+ Method intMethod = iface.getMethod("intMethod");
+ Assert.assertEquals(intMethod.getReturnType(), int.class);
+
+ Method objectMethod = iface.getMethod("objectMethod");
+ Assert.assertEquals(objectMethod.getReturnType(), Object.class);
+
+ Method objectMethodWithParams =
iface.getMethod("objectMethodWithParams", int.class, Object.class);
+ Assert.assertEquals(objectMethodWithParams.getReturnType(), Object.class);
+
+ Method objectMethodWithParamsAndExceptions =
iface.getMethod("objectMethodWithParamsAndExceptions", int.class,
+ Object.class);
+ Assert.assertEquals(objectMethodWithParamsAndExceptions.getReturnType(),
Object.class);
+ exceptions =
Arrays.asList(objectMethodWithParamsAndExceptions.getExceptionTypes());
+ Assert.assertTrue(exceptions.contains(IOException.class),
+ "The 'objectMethodWithParamsAndExceptions doesn't seem to
declare throws IOException");
+ Assert.assertTrue(exceptions.contains(InterruptedException.class),
+ "The 'objectMethodWithParamsAndExceptions doesn't seem to
declare throws InterruptedException");
+ }
+
+ public void testSimplifications() throws Exception {
+ Class<?> iface = InterfaceSimplifier.simplify(Simplifications.class);
+
+ //These tests are exactly the same as for the NoSimplifications class, because
+ //the simplifier should leave out all the subject parameters in the
Simplifications
+ //class' methods.
+
+ Method voidMethodWithNoExceptions =
iface.getMethod("voidMethodWithNoExceptions");
+ Assert.assertEquals(voidMethodWithNoExceptions.getReturnType(), void.class);
+
+ Method voidMethodWithExceptions =
iface.getMethod("voidMethodWithExceptions");
+ List<Class<?>> exceptions =
Arrays.asList(voidMethodWithExceptions.getExceptionTypes());
+ Assert.assertTrue(exceptions.contains(IOException.class),
+ "The 'voidMethodWithExceptions doesn't seem to declare throws
IOException");
+ Assert.assertTrue(exceptions.contains(InterruptedException.class),
+ "The 'voidMethodWithExceptions doesn't seem to declare throws
InterruptedException");
+
+ Method intMethod = iface.getMethod("intMethod");
+ Assert.assertEquals(intMethod.getReturnType(), int.class);
+
+ Method objectMethod = iface.getMethod("objectMethod");
+ Assert.assertEquals(objectMethod.getReturnType(), Object.class);
+
+ Method objectMethodWithParams =
iface.getMethod("objectMethodWithParams", int.class, Object.class);
+ Assert.assertEquals(objectMethodWithParams.getReturnType(), Object.class);
+
+ Method objectMethodWithParamsAndExceptions =
iface.getMethod("objectMethodWithParamsAndExceptions", int.class,
+ Object.class);
+ Assert.assertEquals(objectMethodWithParamsAndExceptions.getReturnType(),
Object.class);
+ exceptions =
Arrays.asList(objectMethodWithParamsAndExceptions.getExceptionTypes());
+ Assert.assertTrue(exceptions.contains(IOException.class),
+ "The 'objectMethodWithParamsAndExceptions doesn't seem to
declare throws IOException");
+ Assert.assertTrue(exceptions.contains(InterruptedException.class),
+ "The 'objectMethodWithParamsAndExceptions doesn't seem to
declare throws InterruptedException");
+ }
+
+ public <T> void testGenerics() throws Exception {
+ @SuppressWarnings("unchecked")
+ Class<T> iface = (Class<T>)
InterfaceSimplifier.simplify(Generics.class);
+
+ TypeVariable<Class<T>>[] classTypeParameters =
iface.getTypeParameters();
+ Assert.assertEquals(classTypeParameters.length, 1, "There should be 1 type
parameter on the class Generics.");
+ TypeVariable<?> typeVariable = classTypeParameters[0];
+ Assert.assertEquals(typeVariable.getName(), "C", "Unexpected type
parameter name on 'Generics' class.");
+ Type[] bounds = typeVariable.getBounds();
+ Assert.assertEquals(bounds.length, 1, "The type parameter on the class
'Generics' should have 1 upper bound.");
+ Assert.assertEquals(bounds[0], Type.class,
+ "The type parameter on the class 'Generics' should have the
upper bound of the Type class.");
+
+ Method genericParameters = iface.getMethod("genericParameters",
List.class, int.class);
+ Assert.assertEquals(genericParameters.getReturnType(), void.class);
+
+ Type firstParamType = genericParameters.getGenericParameterTypes()[0];
+ Assert.assertTrue(firstParamType instanceof ParameterizedType,
+ "The first parameter of the 'genericParameters' should be
parameterized.");
+ Assert.assertEquals(((ParameterizedType) firstParamType).getRawType(),
List.class,
+ "The first parameter of the 'genericParameters' method should be
a List.");
+ Assert.assertEquals(((ParameterizedType)
firstParamType).getActualTypeArguments()[0], String.class,
+ "The first parameter of the 'genericParamters' method should be
a List<String>");
+
+ Method typeParameters = iface.getMethod("typeParameters", Type.class,
int.class);
+ Assert.assertEquals(typeParameters.getReturnType(), Type.class);
+
+ TypeVariable<Method>[] typeVariables = typeParameters.getTypeParameters();
+ Assert.assertEquals(typeVariables.length, 1,
+ "There should be 1 type parameter on the the 'typeParameters'
method.");
+ typeVariable = typeVariables[0];
+ Assert.assertEquals(typeVariable.getName(), "T", "Unexpected type
parameter name on 'typeParameters' method.");
+ bounds = typeVariable.getBounds();
+ Assert.assertEquals(bounds.length, 1, "The type parameter on the method
'typeParameters' should have 1 upper bound.");
+ Assert.assertEquals(bounds[0], Type.class,
+ "The type parameter on the method 'typeParameters' should have
the upper bound of the Type class.");
+
+ Type returnType = typeParameters.getGenericReturnType();
+ Assert.assertTrue(returnType instanceof TypeVariable,
+ "The generic return type of the 'typeParameters' class should be
a type variable.");
+ typeVariable = (TypeVariable<?>) returnType;
+ Assert.assertEquals(typeVariable.getName(), "T",
+ "Unexpected type parameter at the return type of the
'typeParameters' method.");
+
+ Method typeParametersSimplified =
iface.getMethod("typeParametersSimplified", Type.class, int.class);
+ Assert.assertEquals(typeParameters.getReturnType(), Type.class);
+
+ typeVariables = typeParametersSimplified.getTypeParameters();
+ Assert.assertEquals(typeVariables.length, 1,
+ "There should be 1 type parameter on the the
'typeParametersSimplified' method.");
+ typeVariable = typeVariables[0];
+ Assert.assertEquals(typeVariable.getName(), "T",
+ "Unexpected type parameter name on 'typeParametersSimplified'
method.");
+ bounds = typeVariable.getBounds();
+ Assert.assertEquals(bounds.length, 1,
+ "The type parameter on the method 'typeParametersSimplified'
should have 1 upper bound.");
+ Assert
+ .assertEquals(bounds[0], Type.class,
+ "The type parameter on the method 'typeParametersSimplified'
should have the upper bound of the Type class.");
+
+ returnType = typeParametersSimplified.getGenericReturnType();
+ Assert.assertTrue(returnType instanceof TypeVariable,
+ "The generic return type of the 'typeParametersSimplified' class
should be a type variable.");
+ typeVariable = (TypeVariable<?>) returnType;
+ Assert.assertEquals(typeVariable.getName(), "T",
+ "Unexpected type parameter at the return type of the
'typeParametersSimplified' method.");
+ }
+
+ public void testAnnotations() throws Exception {
+ Class<?> iface = InterfaceSimplifier.simplify(Annotations.class);
+
+ Annotation[] annotations = iface.getAnnotations();
+ Assert.assertEquals(annotations.length, 1, "UNexpected number of annotations
on the 'Annotations' class.");
+ Annotation annotation = annotations[0];
+ Assert.assertEquals(annotation.annotationType(), MyAnnotation.class,
+ "Unexpected annotation type on the class 'Annotations");
+ Assert.assertEquals(((MyAnnotation) annotation).value(), 1,
+ "Unexpected value of the 'value' attribute on the annotation on
the 'Annotations' class.");
+ Assert.assertEquals(((MyAnnotation) annotation).parameter(), "CLASS",
+ "Unexpected value of the 'parameter' attribute on the annotation
on the 'Annotations' class.");
+
+ Method method = iface.getMethod("method", int.class);
+ annotations = method.getAnnotations();
+ Assert.assertEquals(annotations.length, 1, "Unexpected number of annotations
on the 'method' method.");
+
+ annotation = annotations[0];
+ Assert.assertEquals(annotation.annotationType(), MyAnnotation.class,
+ "Unexpected annotation type on the method 'method");
+
+ Assert.assertEquals(((MyAnnotation) annotation).value(), 2,
+ "Unexpected value of the 'value' attribute on the annotation on
the 'method' method.");
+ Assert.assertEquals(((MyAnnotation) annotation).parameter(), "a",
+ "Unexpected value of the 'parameter' attribute on the annotation
on the 'method' method.");
+
+ Annotation[][] parameterAnnotations = method.getParameterAnnotations();
+
+ Assert
+ .assertEquals(parameterAnnotations.length, 1,
+ "Method 'Annotations.method(int)' has 1 parameter with
annotations but we got a different number of parameters.");
+
+ Assert.assertEquals(parameterAnnotations[0].length, 1,
+ "The parameter of 'Annotations.method(int)' method has an
annotation but we couldn't detect any.");
+
+ annotation = parameterAnnotations[0][0];
+ Assert.assertEquals(annotation.annotationType(), MyAnnotation.class,
+ "Unexpected annotation type on the parameter 'p' of
'Annotations.method(int)'");
+ Assert.assertEquals(((MyAnnotation) annotation).value(), 1,
+ "Unexpected value of the 'value' of the annotation on the
parameter p of 'Annotations.method(int)'.");
+ Assert.assertEquals(((MyAnnotation) annotation).parameter(), "b",
+ "Unexpected value of the 'parameter' of the annotation on the
parameter p of 'Annotations.method(int)'.");
+
+ method = iface.getMethod("methodSimplified", int.class);
+ annotations = method.getAnnotations();
+ Assert
+ .assertEquals(annotations.length, 1, "Unexpected number of annotations
on the 'methodSimplified' method.");
+
+ annotation = annotations[0];
+ Assert.assertEquals(annotation.annotationType(), MyAnnotation.class,
+ "Unexpected annotation type on the method 'methodSimplified");
+
+ Assert.assertEquals(((MyAnnotation) annotation).value(), 2,
+ "Unexpected value of the 'value' attribute on the annotation on
the 'methodSimplified' method.");
+ Assert.assertEquals(((MyAnnotation) annotation).parameter(), "c",
+ "Unexpected value of the 'parameter' attribute on the annotation
on the 'methodSimplified' method.");
+
+ parameterAnnotations = method.getParameterAnnotations();
+
+ Assert
+ .assertEquals(parameterAnnotations.length, 1,
+ "Method 'Annotations.methodSimplified(int)' has 1 parameter
with annotations but we got a different number of parameters.");
+
+ Assert.assertEquals(parameterAnnotations[0].length, 1,
+ "The parameter of 'Annotations.methodSimplified(int)' method
has an annotation but we couldn't detect any.");
+
+ annotation = parameterAnnotations[0][0];
+ Assert.assertEquals(annotation.annotationType(), MyAnnotation.class,
+ "Unexpected annotation type on the parameter 'p' of
'Annotations.methodSimplified(int)'");
+ Assert.assertEquals(((MyAnnotation) annotation).value(), 1,
+ "Unexpected value of the 'value' of the annotation on the
parameter p of 'Annotations.methodSimplified(int)'.");
+ Assert
+ .assertEquals(((MyAnnotation) annotation).parameter(), "d",
+ "Unexpected value of the 'parameter' of the annotation on
the parameter p of 'Annotations.methodSimplified(int)'.");
+ }
+}
commit 76a9b14a24bf361f6916203c133500a77d98da73
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 15:29:43 2012 +0200
Rename the method to be more descriptive.
diff --git
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
index e350302..384a6e0 100644
---
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
+++
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
@@ -81,7 +81,7 @@ public class LocalClient implements RhqFacade {
Object proxy = AccessController.doPrivileged(new
PrivilegedAction<Object>() {
@Override
public Object run() {
- return getProxy(getLocalSLSB(manager),
manager.remote());
+ return getScriptingProxy(getLocalSLSB(manager),
manager);
}
});
@@ -112,8 +112,8 @@ public class LocalClient implements RhqFacade {
return remoteApiIface.cast(proxy);
}
- private <T> T getProxy(Object slsb, Class<T> iface) {
- RhqManager manager = RhqManager.forInterface(iface);
+ private Object getScriptingProxy(Object slsb, RhqManager manager) {
+ Class<?> iface = manager.remote();
Class<?> simplified = null;
@@ -128,7 +128,7 @@ public class LocalClient implements RhqFacade {
Object proxy = Proxy.newProxyInstance(iface.getClassLoader(), new
Class<?>[] { simplified },
new LocalClientProxy(slsb, this, manager));
- return iface.cast(proxy);
+ return proxy;
}
private Object getLocalSLSB(RhqManager manager) {
commit 56d3bb7e5f2b3ec81138841058edebe9a6bc1ac2
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 15:29:15 2012 +0200
CLI code completion should now be language independent.
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 9811d2a..5d1af69 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -40,9 +40,6 @@ import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
-import gnu.getopt.Getopt;
-import gnu.getopt.LongOpt;
-
import jline.ArgumentCompletor;
import jline.Completor;
import jline.ConsoleReader;
@@ -56,7 +53,11 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.client.commands.ClientCommand;
import org.rhq.enterprise.client.commands.ScriptCommand;
import org.rhq.enterprise.client.script.CommandLineParseException;
+import org.rhq.enterprise.client.utility.CLIMetadataProvider;
+import org.rhq.enterprise.client.utility.CodeCompletionCompletorWrapper;
+import org.rhq.enterprise.client.utility.DummyCodeCompletion;
import org.rhq.enterprise.clientapi.RemoteClient;
+import org.rhq.scripting.CodeCompletion;
/**
* @author Greg Hinkle
@@ -100,7 +101,7 @@ public class ClientMain {
// The subject that will be used to carry out all requested actions
private Subject subject;
- private InteractiveJavascriptCompletor serviceCompletor;
+ private CodeCompletion codeCompletion;
private boolean interactiveMode = true;
@@ -199,12 +200,9 @@ public class ClientMain {
sc.initClient(this);
}
- private void initServiceCompletor() {
- this.serviceCompletor.setContext(getScriptEngine().getContext());
-
- if (remoteClient != null) {
- this.serviceCompletor.setServices(remoteClient.getScriptingAPI());
- }
+ private void initCodeCompletion() {
+ this.codeCompletion.setScriptContext(getScriptEngine().getContext());
+ this.codeCompletion.setMetadataProvider(new CLIMetadataProvider());
}
public ClientMain() {
@@ -233,12 +231,19 @@ public class ClientMain {
Completor helpCompletor = new ArgumentCompletor(new Completor[] { new
SimpleCompletor("help"),
new SimpleCompletor(commands.keySet().toArray(new
String[commands.size()])) });
- this.serviceCompletor = new InteractiveJavascriptCompletor(consoleReader);
- consoleReader.addCompletor(new MultiCompletor(new Completor[] {
serviceCompletor, helpCompletor,
+ this.codeCompletion = ScriptEngineFactory.getCodeCompletion(getLanguage());
+ if (codeCompletion == null) {
+ //the language module for this language doesn't support code
completion
+ //let's provide a dummy one.
+ codeCompletion = new DummyCodeCompletion();
+ }
+
+ initCodeCompletion();
+
+ consoleReader.addCompletor(new MultiCompletor(new Completor[] {
+ new CodeCompletionCompletorWrapper(codeCompletion, outputWriter),
helpCompletor,
commandCompletor }));
- initServiceCompletor();
-
// enable pagination
consoleReader.setUsePagination(true);
}
@@ -375,7 +380,7 @@ public class ClientMain {
} else {
boolean result = commands.get("exec").execute(this, args);
if (loggedIn()) {
- this.serviceCompletor.setContext(getScriptEngine().getContext());
+ this.codeCompletion.setScriptContext(getScriptEngine().getContext());
}
return result;
@@ -595,7 +600,7 @@ public class ClientMain {
initScriptCommand();
if (isInteractiveMode()) {
- initServiceCompletor();
+ initCodeCompletion();
}
}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
deleted file mode 100644
index 0f1b232..0000000
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.rhq.enterprise.client;
-
-import java.beans.BeanInfo;
-import java.beans.Introspector;
-import java.beans.MethodDescriptor;
-import java.beans.PropertyDescriptor;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jws.WebParam;
-import javax.script.Bindings;
-import javax.script.ScriptContext;
-
-import jline.Completor;
-import jline.ConsoleReader;
-
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.client.utility.ReflectionUtility;
-import org.rhq.enterprise.clientapi.RemoteClientProxy;
-
-/**
- * A Contextual JavaScript interactive completor. Not perfect, but
- * handles a fair number of cases.
- *
- * @author Greg Hinkle
- */
-public class InteractiveJavascriptCompletor implements Completor {
-
- private Map<String, Object> services;
-
- private ScriptContext context;
-
- private String lastComplete;
-
- // Consecutive times this exact complete has been requested
- private int recomplete;
- private ConsoleReader consoleReader;
-
- private static final Set<String> IGNORED_METHODS;
- static {
- IGNORED_METHODS = new HashSet<String>();
- IGNORED_METHODS.add("newProxyInstance");
- IGNORED_METHODS.add("hashCode");
- IGNORED_METHODS.add("equals");
- IGNORED_METHODS.add("getInvocationHandler");
- IGNORED_METHODS.add("setHandler");
- IGNORED_METHODS.add("isProxyClass");
- IGNORED_METHODS.add("newProxyInstance");
- IGNORED_METHODS.add("getProxyClass");
- IGNORED_METHODS.add("main");
- IGNORED_METHODS.add("handler");
- IGNORED_METHODS.add("init");
- IGNORED_METHODS.add("initChildren");
- IGNORED_METHODS.add("initMeasurements");
- IGNORED_METHODS.add("initOperations");
- }
-
- public InteractiveJavascriptCompletor(ConsoleReader reader) {
- this.consoleReader = reader;
- }
-
- public void setServices(Map<String, Object> services) {
- this.services = services;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public int complete(String s, int i, @SuppressWarnings("rawtypes") List
list) {
- try {
- if (lastComplete != null && lastComplete.equals(s)) {
- recomplete++;
- } else {
- recomplete = 1;
- }
-
- lastComplete = s;
-
- String base = s;
-
- int rootLength = 0;
-
- if (s.indexOf('=') > 0) {
- base = s.substring(s.indexOf("=") + 1).trim();
- rootLength = s.length() - base.length();
- }
-
- String[] call = base.split("\\.");
- if (base.endsWith(".")) {
- String[] argPadded = new String[call.length + 1];
- System.arraycopy(call, 0, argPadded, 0, call.length);
- argPadded[call.length] = "";
- call = argPadded;
- }
-
- if (call.length == 1) {
- Map<String, Object> matches = getContextMatches(call[0]);
- if (matches.size() == 1 && matches.containsKey(call[0])
&& !s.endsWith(".")) {
- list.add(".");
- return rootLength + call[0].length() + 1;
-
- } else {
- list.addAll(matches.keySet());
- }
- } else {
- Object rootObject = context.getAttribute(call[0]);
- if (rootObject != null) {
- String theRest = base.substring(call[0].length() + 1,
base.length());
- int matchIndex = contextComplete(rootObject, theRest, i, list);
- Collections.sort(list);
- return rootLength + call[0].length() + 1 + matchIndex;
- }
- }
-
- Collections.sort(list);
-
- return (list.size() == 0) ? (-1) : rootLength;
- } catch (Exception e) {
- e.printStackTrace();
- return -1;
- }
- }
-
- /**
- * Base Object can be an object where we're looking for methods on it, or an
- * interface. This recursively works off the completions left to right.
- *
- * Objects can be completed with fields or method calls.
- * method parameters are completed with type matching
- * method result chainings are completed based on declared return types
- *
- * e.g. have a Resource in context as myResource. Original string is
- * "myResource.name". This method would be called with a baseObject ==
- * to myResource and the string "name".
- *
- * Note: this method will not and should not execute methods, but will
- * read field properties to continue chained completions.
- *
- * @param baseObject the context object or class to complete from
- * @param s the relative command string to check
- * @param i
- * @param list
- * @return location of relative completion
- */
- private int contextComplete(Object baseObject, String s, int i, List<String>
list) {
- String temp = s.split("\\(", 2)[0];
- if (temp.contains(".")) {
- String[] call = temp.split("\\.", 2);
-
- String next = call[0];
- if (next.contains("(")) {
- next = next.substring(0, next.indexOf("("));
- }
-
- Map<String, List<Object>> matches = getContextMatches(baseObject,
next);
- if (!matches.isEmpty()) {
- Object rootObject = matches.get(next).get(0);
- if (rootObject instanceof PropertyDescriptor && !(baseObject
instanceof Class)) {
- try {
- rootObject = invoke(baseObject, ((PropertyDescriptor)
rootObject).getReadMethod());
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else if (rootObject instanceof Method) {
- rootObject = ((Method) rootObject).getReturnType();
- }
-
- return call[0].length() + 1 + contextComplete(rootObject, call[1], i,
list);
- } else {
- return -1;
- }
- } else {
- String[] call = s.split("\\(", 2);
-
- Map<String, List<Object>> matches = getContextMatches(baseObject,
call[0]);
-
- if (call.length == 2 && matches.containsKey(call[0])) {
-
- int x = 0;
- for (String key : matches.keySet()) {
-
- List<Object> matchList = matches.get(key);
-
- if (recomplete == 2) {
- List<Method> methods = new ArrayList<Method>();
- for (Object match : matchList) {
- if (match instanceof Method) {
- methods.add((Method) match);
- }
- }
- displaySignatures(baseObject, methods.toArray(new
Method[methods.size()]));
- return -1;
- }
-
- for (Object match : matchList) {
-
- if (key.equals(call[0]) && match instanceof Method) {
-
- int result = completeParameters(baseObject, call[1], i, list,
(Method) match); // x should be the same for all calls
- if (result > 0) {
- x = result;
- }
- }
- }
- }
- return call[0].length() + 1 + x;
- }
-
- if (matches.size() == 1 && matches.containsKey(call[0])) {
- if (matches.get(call[0]).get(0) instanceof Method) {
- list.add("(" + (((Method)
matches.get(call[0]).get(0)).getParameterTypes().length == 0 ? ")" :
""));
- }
- return call[0].length() + 1;
- }
-
- if (recomplete == 2) {
- List<Method> methods = new ArrayList<Method>();
- for (List<Object> matchList : matches.values()) {
- for (Object val : matchList) {
- if (val instanceof Method) {
- methods.add((Method) val);
- }
- }
- }
- displaySignatures(baseObject, methods.toArray(new
Method[methods.size()]));
- } else {
- if (matches.size() == 1 &&
matches.values().iterator().next().get(0) instanceof Method) {
- list.add(matches.keySet().iterator().next()
- + "("
- + ((((Method)
matches.values().iterator().next().get(0)).getParameterTypes().length == 0 ?
")"
- : "")));
- } else {
- list.addAll(matches.keySet());
- }
- }
- return 0;
-
- }
- }
-
- private void displaySignatures(Object object, Method... methods) {
- try {
- String start = this.consoleReader.getCursorBuffer().getBuffer().toString();
- while ((this.consoleReader.getCursorBuffer().cursor > 0) &&
this.consoleReader.backspace()) {
- ;
- }
- this.consoleReader.printNewline();
- this.consoleReader.printNewline();
- String[][] signatures = new String[methods.length][];
- int i = 0;
- for (Method m : methods) {
- signatures[i++] = getSignature(object, m).split(" ", 2);
- }
-
- int maxReturnLength = 0;
- for (String[] sig : signatures) {
- if (sig[0].length() > maxReturnLength)
- maxReturnLength = sig[0].length();
- }
-
- for (String[] sig : signatures) {
- for (i = 0; i < (maxReturnLength - sig[0].length()); i++) {
- this.consoleReader.printString(" ");
- }
-
- this.consoleReader.printString(sig[0]);
- this.consoleReader.printString(" ");
- this.consoleReader.printString(sig[1]);
- this.consoleReader.printNewline();
- }
-
- this.consoleReader.drawLine();
- this.consoleReader.putString(start);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Split apart the parameters to a method call and complete the last parameter. If
the last
- * paramater has a valid value close that field with a "," for the next
param or a ")" if is
- * the last parameter. Does all machting according to the type of the parameters of
the
- * supplied method.
- *
- * @param baseObject
- * @param params
- * @param i
- * @param list
- * @param method
- * @return
- */
- public int completeParameters(Object baseObject, String params, int i,
List<String> list, Method method) {
-
- String[] paramList = params.split(",");
-
- Class<?>[] c = method.getParameterTypes();
-
- String lastParam = paramList[paramList.length - 1];
- int paramIndex = paramList.length - 1;
- if (params.trim().endsWith(",")) {
- lastParam = "";
- paramIndex++;
- }
-
- int baseLength = 0;
-
- for (int x = 0; x < paramIndex; x++) {
- Object paramFound = context.getAttribute(paramList[x]);
-
- if (paramFound != null &&
!c[x].isAssignableFrom(paramFound.getClass())) {
- return -1;
- }
- baseLength += paramList[x].length() + 1;
- }
-
- if (paramIndex >= c.length) {
- if (params.endsWith(")")) {
- return -1;
- } else {
- list.add(params + ")");
- return (params + ")").length();
- }
- } else {
-
- if (baseObject instanceof Map &&
method.getName().equals("get") && method.getParameterTypes().length ==
1) {
- //unused Class<?> keyType = method.getParameterTypes()[0];
- for (Object key : ((Map<?, ?>) baseObject).keySet()) {
- String lookupChoice = "\'" + String.valueOf(key) +
"\'";
- if (lookupChoice.startsWith(lastParam)) {
- list.add(lookupChoice);
- }
- }
- if (list.size() == 1) {
- list.set(0, list.get(0) + ")");
- }
-
- } else {
- Class<?> parameterType = c[paramIndex];
-
- Map<String, Object> matches = getContextMatches(lastParam,
parameterType);
-
- if (matches.size() == 1 && matches.containsKey(lastParam)) {
-
- list.add(paramIndex == c.length - 1 ? ")" :
",");
- return baseLength + lastParam.length();
- } else {
- list.addAll(matches.keySet());
- }
- }
-
- return baseLength;
- }
- }
-
- private Map<String, Object> getContextMatches(String start) {
- Map<String, Object> found = new HashMap<String, Object>();
- if (context != null) {
- for (Integer scope : context.getScopes()) {
- Bindings bindings = context.getBindings(scope);
- for (String var : bindings.keySet()) {
- if (var.startsWith(start)) {
- found.put(var, bindings.get(var));
- }
- }
- }
- }
- if (services != null) {
- for (String var : services.keySet()) {
- if (var.startsWith(start)) {
- found.put(var, services.get(var));
- }
- }
- }
- return found;
- }
-
- /**
- * Look through all available contexts to find bindings that both start with
- * the supplied start and match the typeFilter.
- * @param start
- * @param typeFilter
- * @return
- */
- private Map<String, Object> getContextMatches(String start, Class<?>
typeFilter) {
- Map<String, Object> found = new HashMap<String, Object>();
- if (context != null) {
- for (int scope : context.getScopes()) {
- Bindings bindings = context.getBindings(scope);
- for (String var : bindings.keySet()) {
- if (var.startsWith(start)) {
-
- if ((bindings.get(var) != null &&
typeFilter.isAssignableFrom(bindings.get(var).getClass()))
- || recomplete == 3) {
- found.put(var, bindings.get(var));
- }
- }
- }
- }
-
- if (typeFilter.isEnum()) {
- for (Object ec : typeFilter.getEnumConstants()) {
- Enum<?> e = (Enum<?>) ec;
- String code = typeFilter.getSimpleName() + "." + e.name();
- if (code.startsWith(start)) {
- found.put(typeFilter.getSimpleName() + "." + e.name(),
e);
- }
- }
- }
- }
- return found;
- }
-
- private Map<String, List<Object>> getContextMatches(Object baseObject,
String start) {
- Map<String, List<Object>> found = new HashMap<String,
List<Object>>();
-
- Class<?> baseObjectClass = null;
- if (baseObject instanceof Class) {
- baseObjectClass = (Class<?>) baseObject;
- } else {
- baseObjectClass = baseObject.getClass();
- }
-
- try {
- if (baseObjectClass.equals(Void.TYPE))
- return found;
-
- BeanInfo info = null;
- if (baseObjectClass.isInterface() || baseObjectClass.equals(Object.class)) {
- info = Introspector.getBeanInfo(baseObjectClass);
- } else {
- info = Introspector.getBeanInfo(baseObjectClass, Object.class);
- }
-
- Set<Method> methodsCovered = new HashSet<Method>();
-
- PropertyDescriptor[] descriptors = info.getPropertyDescriptors();
- for (PropertyDescriptor desc : descriptors) {
- if (desc.getName().startsWith(start) &&
(!IGNORED_METHODS.contains(desc.getName()))) {
-
- List<Object> list = found.get(desc.getName());
- if (list == null) {
- list = new ArrayList<Object>();
- found.put(desc.getName(), list);
- }
- list.add(desc);
-
- methodsCovered.add(desc.getReadMethod());
- methodsCovered.add(desc.getWriteMethod());
- }
- }
-
- MethodDescriptor[] methods = info.getMethodDescriptors();
- for (MethodDescriptor desc : methods) {
- if (desc.getName().startsWith(start) &&
!methodsCovered.contains(desc.getMethod())
- && !desc.getName().startsWith("_d") &&
!IGNORED_METHODS.contains(desc.getName())) {
-
- Method m = desc.getMethod();
- boolean isProxy = isProxyMethod(baseObject, m);
- Class<?>[] parameters = m.getParameterTypes();
- boolean startsWithSubject = ((parameters.length > 0) &&
parameters[0].equals(Subject.class));
- if ((isProxy && startsWithSubject) || !startsWithSubject) {
-
- List<Object> list = found.get(desc.getName());
- if (list == null) {
- list = new ArrayList<Object>();
- found.put(desc.getName(), list);
- }
- list.add(m);
- }
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return found;
- }
-
- private static String getSignature(Object object, Method m) {
-
- // If its our service proxy lookup the original interface that has the
annotations
- if (isProxyMethod(object, m)) {
- Class<?>[] params = m.getParameterTypes();
- Class<?>[] newParams = new Class[params.length + 1];
- System.arraycopy(params, 0, newParams, 1, params.length);
- newParams[0] = Subject.class;
-
- try {
- m =
- ((RemoteClientProxy)
Proxy.getInvocationHandler(object)).getRemoteInterface().getDeclaredMethod(
- m.getName(), newParams);
- } catch (NoSuchMethodException nsme) {
- //
- }
- }
-
- StringBuilder buf = new StringBuilder();
- Type[] params = m.getGenericParameterTypes();
- Annotation[][] annotations = m.getParameterAnnotations();
- int i = 0;
-
- buf.append(ReflectionUtility.getSimpleTypeString(m.getGenericReturnType()));
- buf.append(" ");
-
- buf.append(m.getName());
- buf.append("(");
- boolean first = true;
- for (Type type : params) {
- if (i == 0 && type.equals(Subject.class)) {
- i++;
- continue;
- }
- if (!first) {
- buf.append(", ");
- } else {
- first = false;
- }
-
- String name = null;
-
- if (annotations != null && annotations.length >= i) {
- Annotation[] as = annotations[i];
- for (Annotation a : as) {
- if (a instanceof WebParam) {
- name = ReflectionUtility.getSimpleTypeString(type) + "
" + ((WebParam) a).name();
- }
- }
- }
-
- if (name == null) {
- name = ReflectionUtility.getSimpleTypeString(type);
- }
-
- buf.append(name);
-
- i++;
- }
- buf.append(")");
- return buf.toString();
- }
-
- private static boolean isProxyMethod(Object object, Method m) {
-
- boolean result = false;
- if (object instanceof Proxy) {
- if (Proxy.getInvocationHandler(object) instanceof RemoteClientProxy) {
- try {
- m =
- ((RemoteClientProxy)
Proxy.getInvocationHandler(object)).getRemoteInterface()
- .getDeclaredMethod(m.getName(), m.getParameterTypes());
- } catch (NoSuchMethodException e) {
- result = true;
- }
- }
- }
- return result;
- }
-
- public ScriptContext getContext() {
- return context;
- }
-
- public void setContext(ScriptContext context) {
- this.context = context;
- }
-
- private static Object invoke(Object o, Method m) throws IllegalAccessException,
InvocationTargetException {
- boolean access = m.isAccessible();
- m.setAccessible(true);
- try {
- return m.invoke(o);
- } finally {
- m.setAccessible(access);
- }
- }
-}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
new file mode 100644
index 0000000..ff98b5c
--- /dev/null
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CLIMetadataProvider.java
@@ -0,0 +1,72 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.client.utility;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+import javax.jws.WebParam;
+
+import org.rhq.scripting.MetadataProvider;
+
+/**
+ * @author Lukas Krejci
+ */
+public class CLIMetadataProvider implements MetadataProvider {
+
+ @Override
+ public String getParameterName(Method method, int parameterIndex) {
+ String name = null;
+
+ Annotation[][] paramAnnotations = method.getParameterAnnotations();
+
+ if (paramAnnotations.length > parameterIndex) {
+ Annotation[] annotations = paramAnnotations[parameterIndex];
+ for (Annotation a : annotations) {
+ if (a instanceof WebParam) {
+ name = ((WebParam) a).name();
+ break;
+ }
+ }
+ }
+
+ return name;
+ }
+
+ @Override
+ public String getDocumentation(Class<?> clazz) {
+ // TODO it'd be fantastic if we could do this, wouldn't it?
+ return null;
+ }
+
+ @Override
+ public String getDocumentation(Method method) {
+ // TODO it'd be fantastic if we could do this, wouldn't it?
+ return null;
+ }
+
+ @Override
+ public String getTypeName(Type type, boolean fullNames) {
+ return ReflectionUtility.getTypeString(type, fullNames);
+ }
+
+}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
new file mode 100644
index 0000000..8f2570c
--- /dev/null
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/CodeCompletionCompletorWrapper.java
@@ -0,0 +1,24 @@
+package org.rhq.enterprise.client.utility;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import jline.Completor;
+
+import org.rhq.scripting.CodeCompletion;
+
+public class CodeCompletionCompletorWrapper implements Completor {
+
+ private CodeCompletion completion;
+ private PrintWriter output;
+
+ public CodeCompletionCompletorWrapper(CodeCompletion completion, PrintWriter output)
{
+ this.completion = completion;
+ this.output = output;
+ }
+
+ @Override
+ public int complete(String buffer, int cursor, List candidates) {
+ return completion.complete(output, buffer, cursor, candidates);
+ }
+}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/DummyCodeCompletion.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/DummyCodeCompletion.java
new file mode 100644
index 0000000..2c28a4f
--- /dev/null
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/DummyCodeCompletion.java
@@ -0,0 +1,50 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.client.utility;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import javax.script.ScriptContext;
+
+import org.rhq.scripting.CodeCompletion;
+import org.rhq.scripting.MetadataProvider;
+
+/**
+ * @author Lukas Krejci
+ *
+ */
+public class DummyCodeCompletion implements CodeCompletion {
+
+ @Override
+ public void setScriptContext(ScriptContext scriptContext) {
+ }
+
+ @Override
+ public void setMetadataProvider(MetadataProvider metadataProvider) {
+ }
+
+ @Override
+ public int complete(PrintWriter output, String context, int cursorPosition, List
candidates) {
+ return cursorPosition;
+ }
+
+}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ReflectionUtility.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ReflectionUtility.java
index c5c2f08..3bcb1cc 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ReflectionUtility.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ReflectionUtility.java
@@ -18,10 +18,10 @@
*/
package org.rhq.enterprise.client.utility;
-import java.lang.reflect.Type;
+import java.lang.reflect.GenericArrayType;
import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
-import java.lang.reflect.GenericArrayType;
import java.lang.reflect.WildcardType;
/**
@@ -32,6 +32,10 @@ public class ReflectionUtility {
public static String getSimpleTypeString(Type type) {
+ return getTypeString(type, false);
+ }
+
+ public static String getTypeString(Type type, boolean fullNames) {
if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) type;
Type[] typeArguments = pType.getActualTypeArguments();
@@ -43,26 +47,29 @@ public class ReflectionUtility {
typeArgString += ",";
}
- typeArgString += getSimpleTypeString(typeArgument);
+ typeArgString += getTypeString(typeArgument, fullNames);
}
- return getSimpleTypeString(pType.getRawType()) + "<" +
typeArgString + ">";
-
+ return getTypeString(pType.getRawType(), fullNames) + "<" +
typeArgString + ">";
} else if (type instanceof TypeVariable) {
- TypeVariable vType = (TypeVariable) type;
- return vType.getClass().getSimpleName();
+ TypeVariable<?> vType = (TypeVariable<?>) type;
+ return getName(vType.getClass(), fullNames);
} else if (type instanceof GenericArrayType) {
GenericArrayType aType = (GenericArrayType) type;
- return aType.getClass().getSimpleName() + "[" +
getSimpleTypeString(aType.getGenericComponentType()) + "]";
+ return getName(aType.getClass(), fullNames) + "["
+ + getTypeString(aType.getGenericComponentType(), fullNames) +
"]";
} else if (type instanceof WildcardType) {
- return ((WildcardType)type).toString();
+ return ((WildcardType) type).toString();
} else {
if (type == null) {
return "";
} else {
- return ((Class)type).getSimpleName();
+ return getName((Class<?>) type, fullNames);
}
}
}
+ private static String getName(Class<?> cls, boolean fullName) {
+ return fullName ? cls.getName() : cls.getSimpleName();
+ }
}
diff --git
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
index d1df7f5..36eb060 100644
---
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
+++
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
@@ -38,6 +38,9 @@ import java.util.Set;
import javax.script.Bindings;
import javax.script.ScriptContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.rhq.scripting.CodeCompletion;
import org.rhq.scripting.MetadataProvider;
@@ -50,7 +53,8 @@ import org.rhq.scripting.MetadataProvider;
*/
public class JavascriptCompletor implements CodeCompletion {
- private static final String SUBJECT_CLASS_NAME =
"org.rhq.core.domain.auth.Subject";
+ private static final Log LOG = LogFactory.getLog(JavascriptCompletor.class);
+
private ScriptContext context;
private MetadataProvider metadataProvider;
@@ -473,26 +477,21 @@ public class JavascriptCompletor implements CodeCompletion {
&& !desc.getName().startsWith("_d") &&
!IGNORED_METHODS.contains(desc.getName())) {
Method m = desc.getMethod();
- //TODO THIS IS SO WRONG - the methods are there but we just
"forget" to
- //to mention them to the user.
- boolean isProxy = isProxyMethod(baseObject, m);
- Class<?>[] parameters = m.getParameterTypes();
- boolean startsWithSubject = ((parameters.length > 0) &&
isSubjectClass(parameters[0]));
- if ((isProxy && startsWithSubject) || !startsWithSubject) {
-
- List<Object> list = found.get(desc.getName());
- if (list == null) {
- list = new ArrayList<Object>();
- found.put(desc.getName(), list);
- }
- list.add(m);
+
+ List<Object> list = found.get(desc.getName());
+ if (list == null) {
+ list = new ArrayList<Object>();
+ found.put(desc.getName(), list);
}
+ list.add(m);
}
}
} catch (Exception e) {
+ LOG.info("Failure during code completion", e);
e.printStackTrace(output);
}
+
return found;
}
@@ -529,26 +528,6 @@ public class JavascriptCompletor implements CodeCompletion {
return buf.toString();
}
- private static boolean isProxyMethod(Object object, Method m) {
- // TODO this has to be changed - we have the MetaDataProvider which should be
able
- // to provide enough info so that the completors don't have to go through
these hoops.
- return false;
-
- // boolean result = false;
- // if (object instanceof Proxy) {
- // if (Proxy.getInvocationHandler(object) instanceof
RemoteClientProxy) {
- // try {
- // m =
- // ((RemoteClientProxy)
Proxy.getInvocationHandler(object)).getRemoteInterface()
- // .getDeclaredMethod(m.getName(),
m.getParameterTypes());
- // } catch (NoSuchMethodException e) {
- // result = true;
- // }
- // }
- // }
- // return result;
- }
-
@Override
public void setScriptContext(ScriptContext context) {
this.context = context;
@@ -563,16 +542,4 @@ public class JavascriptCompletor implements CodeCompletion {
m.setAccessible(access);
}
}
-
- private boolean isSubjectClass(Class<?> cls) {
- while (cls != null) {
- if (SUBJECT_CLASS_NAME.equals(cls.getName())) {
- return true;
- }
-
- cls = cls.getSuperclass();
- }
-
- return false;
- }
}
commit c7cd0fa0318df8039f0864dd2faf3b2d67d4aaef
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 15:23:53 2012 +0200
The simplified interfaces no longer inherit from the remote interfaces.
They just provide the same (or simplified) methods.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
index 8407206..d6835a0 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/InterfaceSimplifier.java
@@ -47,31 +47,29 @@ public class InterfaceSimplifier {
public static Class<?> simplify(Class<?> intf) {
try {
- ClassPool cp = ClassPool.getDefault();
+ ClassPool classPool = ClassPool.getDefault();
String simplifiedName = getSimplifiedName(intf);
LOG.debug("Simplifying " + intf + " (simplified interface
name: " + simplifiedName + ")...");
try {
- CtClass cached = cp.get(simplifiedName);
- return Class.forName(simplifiedName, false, cp.getClassLoader());
+ @SuppressWarnings("unused")
+ CtClass cached = classPool.get(simplifiedName);
+ return Class.forName(simplifiedName, false, classPool.getClassLoader());
} catch (NotFoundException e) {
// ok... load it
} catch (ClassNotFoundException e) {
- LOG.debug("Class [" + simplifiedName + "] not found -
cause: " + e);
+ LOG.debug("Class [" + simplifiedName + "] not found -
cause: " + e, e);
}
- CtClass cc = cp.get(intf.getName());
+ CtClass originalClass = classPool.get(intf.getName());
- CtClass cz = cp.getAndRename(intf.getName(), simplifiedName);
- // CtClass cz = cp.makeInterface(simpleName, cc);
+ CtClass newClass = classPool.makeInterface(simplifiedName);
- cz.defrost();
+ newClass.defrost();
- cz.setSuperclass(cc);
-
- CtMethod[] methods = cc.getMethods();
+ CtMethod[] methods = originalClass.getMethods();
for (CtMethod originalMethod : methods) {
@@ -81,10 +79,10 @@ public class InterfaceSimplifier {
CtClass[] simpleParams = new CtClass[params.length - 1];
System.arraycopy(params, 1, simpleParams, 0, params.length - 1);
- cz.defrost();
+ newClass.defrost();
CtMethod newMethod =
CtNewMethod.abstractMethod(originalMethod.getReturnType(), originalMethod
- .getName(), simpleParams, null, cz);
+.getName(), simpleParams, null, newClass);
ParameterAnnotationsAttribute originalAnnotationsAttribute =
(ParameterAnnotationsAttribute) originalMethod
.getMethodInfo().getAttribute(ParameterAnnotationsAttribute.visibleTag);
@@ -111,11 +109,11 @@ public class InterfaceSimplifier {
}
- cz.addMethod(newMethod);
+ newClass.addMethod(newMethod);
}
}
- return cz.toClass();
+ return newClass.toClass();
} catch (NotFoundException e) {
LOG.debug("Failed to simplify " + intf + " - cause: " +
e);
diff --git
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
index eac3705..2236923 100644
---
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
+++
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
@@ -33,14 +33,13 @@ import javax.naming.spi.InitialContextFactory;
import org.jmock.Expectations;
import org.jmock.api.Invocation;
import org.jmock.lib.action.CustomAction;
+import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.rhq.bindings.client.RhqManager;
import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.client.LocalClient;
-import org.rhq.enterprise.server.alert.AlertManagerLocal;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
import org.rhq.test.JMockTest;
/**
@@ -67,13 +66,6 @@ public class LocalClientTest extends JMockTest {
@Test
public void testResilienceAgainstContextClassloaders() throws Exception {
CONTEXT_MOCK_FOR_TEST = context.mock(Context.class);
- final AlertManagerRemote alertManagerMock = (AlertManagerRemote)
Proxy.newProxyInstance(getClass().getClassLoader(), new Class<?>[] {
AlertManagerRemote.class, AlertManagerLocal.class }, new InvocationHandler() {
- @Override
- public Object invoke(Object proxy, Method method, Object[] args) throws
Throwable {
- return null;
- }
-
- });
context.checking(new Expectations() {{
allowing(CONTEXT_MOCK_FOR_TEST).lookup(with(any(String.class)));
@@ -122,8 +114,14 @@ public class LocalClientTest extends JMockTest {
//this call creates the proxy and is theoretically prone to the context
classloader
Object am = lc.getScriptingAPI().get("AlertManager");
- //check that both the original and simplified methods exist on the returned
object
- am.getClass().getMethod("deleteAlerts", new Class<?>[] {
Subject.class, int[].class });
+ //check that only the simplified method exists on the returned object
+ try {
+ am.getClass().getMethod("deleteAlerts", new Class<?>[] {
Subject.class, int[].class });
+ Assert.fail("The original remote interface method should not be
available on the scripting API proxy.");
+ } catch (NoSuchMethodException e) {
+ //expected
+ }
+
am.getClass().getMethod("deleteAlerts", new Class<?>[] {
int[].class });
} finally {
Thread.currentThread().setContextClassLoader(origCl);
commit 32a6fdd2b88f8711c1d1c14763e8230a62a8eb91
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 15:21:44 2012 +0200
Fixing the local client tests and some leftover compilation errors in
the code after the RhqFacade refactoring.
diff --git
a/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/AbstractPerspectiveResourceUIBean.java
b/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/AbstractPerspectiveResourceUIBean.java
index 74f7ab8..f13e087 100644
---
a/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/AbstractPerspectiveResourceUIBean.java
+++
b/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/AbstractPerspectiveResourceUIBean.java
@@ -2,7 +2,9 @@ package org.rhq.enterprise.server.perspective;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.jboss.seam.annotations.web.RequestParameter;
+
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.Resource;
@@ -37,7 +39,7 @@ public class AbstractPerspectiveResourceUIBean extends
AbstractPerspectiveUIBean
Subject subject = this.perspectiveClient.getSubject();
// ***NOTE***: The javassist.NotFoundException stack traces that are logged by
this call can be ignored.
- ResourceManagerRemote resourceManager = remoteClient.getResourceManager();
+ ResourceManagerRemote resourceManager =
remoteClient.getProxy(ResourceManagerRemote.class);
ResourceCriteria resourceCriteria = new ResourceCriteria();
resourceCriteria.addFilterId(this.rhqResourceId);
PageList<Resource> resources =
resourceManager.findResourcesByCriteria(subject, resourceCriteria);
diff --git
a/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/PerspectiveClientUIBean.java
b/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/PerspectiveClientUIBean.java
index 77d8f24..d73431a 100644
---
a/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/PerspectiveClientUIBean.java
+++
b/modules/enterprise/gui/base-perspective-jar/src/main/java/org/rhq/enterprise/server/perspective/PerspectiveClientUIBean.java
@@ -87,7 +87,7 @@ public class PerspectiveClientUIBean {
if (subject == null) {
RemoteClient remoteClient = getRemoteClient();
// ***NOTE***: The javassist.NotFoundException stack traces that are logged
by this call can be ignored.
- SubjectManagerRemote subjectManager = remoteClient.getSubjectManager();
+ SubjectManagerRemote subjectManager =
remoteClient.getProxy(SubjectManagerRemote.class);
if (this.rhqSessionId != null) {
log.info("Retrieving subject for user [" + getUsername() +
"] and sessionId [" + this.rhqSessionId
+ "]...");
diff --git a/modules/enterprise/server/client-api/pom.xml
b/modules/enterprise/server/client-api/pom.xml
index 81b559c..91682fa 100644
--- a/modules/enterprise/server/client-api/pom.xml
+++ b/modules/enterprise/server/client-api/pom.xml
@@ -46,7 +46,15 @@
<artifactId>test-utils</artifactId>
<version>${project.version}</version>
<scope>test</scope>
- </dependency>
+ </dependency>
+
+ <!-- Needed for the successful creation of the fake SLSB impls in the
LocalClient test. -->
+ <dependency>
+ <groupId>org.opensymphony.quartz</groupId>
+ <artifactId>quartz</artifactId>
+ <!-- NOTE: The version is defined in the root POM's dependencyManagement
section. -->
+ <scope>test</scope>
+ </dependency>
</dependencies>
<profiles>
diff --git
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
index e9bd928..eac3705 100644
---
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
+++
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
@@ -31,9 +31,12 @@ import javax.naming.NamingException;
import javax.naming.spi.InitialContextFactory;
import org.jmock.Expectations;
+import org.jmock.api.Invocation;
+import org.jmock.lib.action.CustomAction;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.client.LocalClient;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
@@ -74,7 +77,36 @@ public class LocalClientTest extends JMockTest {
context.checking(new Expectations() {{
allowing(CONTEXT_MOCK_FOR_TEST).lookup(with(any(String.class)));
- will(returnValue(alertManagerMock));
+ will(new CustomAction("Fake JNDI lookup") {
+
+ @Override
+ public Object invoke(Invocation invocation) throws Throwable {
+ //the JNDI name is "rhq/<BEAN_NAME>/local"
+ String jndiName = (String) invocation.getParameter(0);
+
+ String beanName =
jndiName.substring(jndiName.indexOf('/') + 1, jndiName.lastIndexOf('/'));
+
+ String managerName = beanName.substring(0, beanName.length() -
"Bean".length());
+
+ //we basically need to define a mock implementation of both the
local and remote
+ //interface here - as if it were a proper SLSB.
+ RhqManager manager = Enum.valueOf(RhqManager.class,
managerName);
+ Class<?> remoteIface = manager.remote();
+
+ String localIfaceName = remoteIface.getName().substring(0,
+ remoteIface.getName().length() -
"Remote".length())
+ + "Local";
+ Class<?> localIface = Class.forName(localIfaceName);
+
+ return Proxy.newProxyInstance(getClass().getClassLoader(), new
Class<?>[] { localIface,
+ remoteIface }, new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[]
args) throws Throwable {
+ return null;
+ }
+ });
+ }
+ });
allowing(CONTEXT_MOCK_FOR_TEST).close();
}});
commit 910d79257e03273a2f43465c41e9690373630ccd
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 12:25:57 2012 +0200
Resolve the initializer using the ScriptEngine.NAME parameter rather than
the language name - this is in line with how the different language support
modules identify themselves.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/ScriptEngineFactory.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/ScriptEngineFactory.java
index df78b41..fbaf1a7 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/ScriptEngineFactory.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/ScriptEngineFactory.java
@@ -216,7 +216,9 @@ public class ScriptEngineFactory {
return;
}
- ScriptEngineInitializer initializer =
getInitializer(scriptEngine.getFactory().getLanguageName());
+ ScriptEngineInitializer initializer = getInitializer((String)
scriptEngine.getFactory().getParameter(
+ ScriptEngine.NAME));
+
try {
BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass(),
Object.class);
MethodDescriptor[] methodDescriptors = beanInfo.getMethodDescriptors();
diff --git
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/ScriptEngineProvider.java
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/ScriptEngineProvider.java
index db22068..2742970 100644
---
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/ScriptEngineProvider.java
+++
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/ScriptEngineProvider.java
@@ -32,6 +32,8 @@ public interface ScriptEngineProvider {
/**
* @return the scripting language understood by this provider.
+ * This must return the same string as
<code>ScriptEngine.getFactory().getParameter(ScriptEngine.NAME)</code>
+ * of the script engine that this provider provides (through the initializer).
*/
@NotNull
String getSupportedLanguage();
commit cdf864db43dc1c9908bdf157dd1eb283e05f5b14
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 12:22:41 2012 +0200
Removing all the get*Manager() methods on the RhqFacade and replacing it
with one generic getProxy(Class) method. This method returns a proxy of
the original remote API interface (i.e. the interface is NOT simplified).
The getManagers() method returns a map of manager proxies where
the interfaces ARE simplified.
This is in preparation for making the simplified interfaces NOT implement
the original remote APIs so that we have greater freedom in what can be done
with the API and also make code completion significantly more clean and
simple.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
index 05e6a09..812b4ae 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
@@ -120,7 +120,7 @@ public class StandardBindings extends HashMap<String, Object> {
put(SCRIPT_UTIL, new ScriptUtil(rhqFacade));
if (rhqFacade != null) {
- managers = rhqFacade.getManagers();
+ managers = rhqFacade.getScriptingAPI();
put(SUBJECT, rhqFacade.getSubject());
put(PROXY_FACTORY, new ResourceClientFactory(rhqFacade, output));
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
index ef46bb2..bd37131 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
@@ -50,23 +50,31 @@ public abstract class AbstractRhqFacadeProxy<T extends
RhqFacade> implements Inv
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- Class<?>[] params = method.getParameterTypes();
-
+ Class<?>[] interfaces = method.getDeclaringClass().getInterfaces();
+ Class<?> originalClass;
+ if (interfaces != null && interfaces.length > 0) {
+ originalClass = interfaces[0];
+ } else {
+ originalClass = method.getDeclaringClass();
+ }
+
try {
- Class<?>[] interfaces = method.getDeclaringClass().getInterfaces();
-
- Class<?> originalClass;
- if (interfaces != null && interfaces.length > 0) {
- originalClass = interfaces[0];
- } else {
- originalClass = method.getDeclaringClass();
- }
-
// See if this method really exists or if its a simplified set of parameters
originalClass.getMethod(method.getName(), method.getParameterTypes());
-
- } catch (Exception e) {
+ } catch (NoSuchMethodException e) {
// If this was not in the original interface it must've been added in the
Simplifier... add back the subject argument
+ Class<?>[] origParams = method.getParameterTypes();
+ Class<?>[] params = new Class<?>[origParams.length + 1];
+ params[0] = Subject.class;
+ System.arraycopy(method.getParameterTypes(), 0, params, 1,
origParams.length);
+
+ try {
+ method = originalClass.getMethod(method.getName(), params);
+ } catch (NoSuchMethodException e2) {
+ throw new IllegalArgumentException("Method " + method + "
doesn't seem to be present on the interface "
+ + originalClass + " neither in its original or simplified
form.");
+ }
+
int numArgs = (null == args) ? 0 : args.length;
Object[] newArgs = new Object[numArgs + 1];
if (numArgs > 0) {
@@ -74,17 +82,9 @@ public abstract class AbstractRhqFacadeProxy<T extends RhqFacade>
implements Inv
}
newArgs[0] = getRhqFacade().getSubject();
args = newArgs;
-
- int numParams = (null == params) ? 0 : params.length;
- Class<?>[] newParams = new Class[numParams + 1];
- if (numParams > 0) {
- System.arraycopy(params, 0, newParams, 1, numParams);
- }
- newParams[0] = Subject.class;
- params = newParams;
}
- return doInvoke(proxy, method, params, args);
+ return doInvoke(proxy, method, args);
}
/**
@@ -93,10 +93,9 @@ public abstract class AbstractRhqFacadeProxy<T extends RhqFacade>
implements Inv
*
* @param proxy the proxy the method is executing on
* @param originalMethod the original method
- * @param argTypes the de-simplified argument types
* @param args the de-simplified argumens
* @return the result of the invocation
* @throws Throwable if invocation throws an error
*/
- protected abstract Object doInvoke(Object proxy, Method originalMethod,
Class<?>[] argTypes, Object[] args) throws Throwable;
+ protected abstract Object doInvoke(Object proxy, Method originalMethod, Object[]
args) throws Throwable;
}
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientProxy.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientProxy.java
index ff39171..10ee612 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientProxy.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientProxy.java
@@ -67,7 +67,12 @@ import org.rhq.core.domain.util.PageOrdering;
import org.rhq.core.domain.util.Summary;
import org.rhq.core.server.MeasurementConverter;
import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
import org.rhq.enterprise.server.content.ContentManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
+import org.rhq.enterprise.server.operation.OperationManagerRemote;
+import org.rhq.enterprise.server.resource.ResourceManagerRemote;
import org.rhq.enterprise.server.resource.ResourceTypeNotFoundException;
/**
@@ -199,7 +204,8 @@ public class ResourceClientProxy {
public void init() {
- this.resource =
remoteClient.getResourceManager().getResource(remoteClient.getSubject(), resourceId);
+ this.resource =
remoteClient.getProxy(ResourceManagerRemote.class).getResource(remoteClient.getSubject(),
+ resourceId);
// Lazy init children, not here
initMeasurements();
@@ -217,10 +223,11 @@ public class ResourceClientProxy {
}
private void initConfigDefs() {
- this.resourceConfigurationDefinition = remoteClient.getConfigurationManager()
+ ConfigurationManagerRemote configurationManager =
remoteClient.getProxy(ConfigurationManagerRemote.class);
+ this.resourceConfigurationDefinition = configurationManager
.getResourceConfigurationDefinitionWithTemplatesForResourceType(remoteClient.getSubject(),
resource.getResourceType().getId());
- this.pluginConfigurationDefinition = remoteClient.getConfigurationManager()
+ this.pluginConfigurationDefinition = configurationManager
.getPluginConfigurationDefinitionForResourceType(remoteClient.getSubject(),
resource.getResourceType().getId());
}
@@ -228,7 +235,7 @@ public class ResourceClientProxy {
private void initChildren() {
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterParentResourceId(resourceId);
- PageList<Resource> childResources =
remoteClient.getResourceManager().findResourcesByCriteria(
+ PageList<Resource> childResources =
remoteClient.getProxy(ResourceManagerRemote.class).findResourcesByCriteria(
remoteClient.getSubject(), criteria);
for (Resource child : childResources) {
@@ -242,7 +249,7 @@ public class ResourceClientProxy {
// criteria.addFilterResourceTypeName(resource.getResourceType().getName());
// criteria.setStrict(true);
- this.measurementDefinitions = remoteClient.getMeasurementDefinitionManager()
+ this.measurementDefinitions =
remoteClient.getProxy(MeasurementDefinitionManagerRemote.class)
.findMeasurementDefinitionsByCriteria(remoteClient.getSubject(), criteria);
this.measurementMap = new HashMap<String, Measurement>();
@@ -263,7 +270,8 @@ public class ResourceClientProxy {
criteria.fetchParametersConfigurationDefinition(true);
criteria.fetchResultsConfigurationDefinition(true);
- this.operationDefinitions =
remoteClient.getOperationManager().findOperationDefinitionsByCriteria(
+ this.operationDefinitions = remoteClient.getProxy(OperationManagerRemote.class)
+ .findOperationDefinitionsByCriteria(
remoteClient.getSubject(), criteria);
for (OperationDefinition def : operationDefinitions) {
@@ -274,7 +282,7 @@ public class ResourceClientProxy {
}
private void initContent() {
- ContentManagerRemote contentManager = remoteClient.getContentManager();
+ ContentManagerRemote contentManager =
remoteClient.getProxy(ContentManagerRemote.class);
List<PackageType> types = null;
try {
types = contentManager.findPackageTypes(remoteClient.getSubject(),
resource.getResourceType().getName(),
@@ -302,7 +310,7 @@ public class ResourceClientProxy {
}
public List<PackageVersion> getInstalledPackages() {
- ContentManagerRemote contentManager = remoteClient.getContentManager();
+ ContentManagerRemote contentManager =
remoteClient.getProxy(ContentManagerRemote.class);
PackageVersionCriteria criteria = new PackageVersionCriteria();
criteria.addFilterResourceId(resourceId);
@@ -359,7 +367,7 @@ public class ResourceClientProxy {
public Object getValue() {
try {
- Set<MeasurementData> d =
remoteClient.getMeasurementDataManager().findLiveData(
+ Set<MeasurementData> d =
remoteClient.getProxy(MeasurementDataManagerRemote.class).findLiveData(
remoteClient.getSubject(), resourceId, new int[] { definition.getId()
});
MeasurementData data = d.iterator().next();
return data.getValue();
@@ -404,7 +412,9 @@ public class ResourceClientProxy {
Configuration parameters =
ConfigurationClassBuilder.translateParametersToConfig(definition
.getParametersConfigurationDefinition(), args);
- ResourceOperationSchedule schedule =
remoteClient.getOperationManager().scheduleResourceOperation(
+ OperationManagerRemote operationManager =
remoteClient.getProxy(OperationManagerRemote.class);
+
+ ResourceOperationSchedule schedule =
operationManager.scheduleResourceOperation(
remoteClient.getSubject(), resourceId, definition.getName(), 0, 0, 0,
30000, parameters,
"Executed from commandline");
@@ -421,7 +431,7 @@ public class ResourceClientProxy {
ResourceOperationHistory history = null;
while (history == null && retries-- > 0) {
Thread.sleep(1000);
- PageList<ResourceOperationHistory> histories =
remoteClient.getOperationManager()
+ PageList<ResourceOperationHistory> histories = operationManager
.findResourceOperationHistoriesByCriteria(remoteClient.getSubject(),
criteria);
if (histories.size() > 0 && histories.get(0).getStatus() !=
OperationRequestStatus.INPROGRESS) {
history = histories.get(0);
@@ -459,7 +469,8 @@ public class ResourceClientProxy {
public Configuration getPluginConfiguration() {
if (!LazyLoadScenario.isShouldLoad())
return null;
- return
remoteClient.getConfigurationManager().getPluginConfiguration(remoteClient.getSubject(),
+ return
remoteClient.getProxy(ConfigurationManagerRemote.class).getPluginConfiguration(
+ remoteClient.getSubject(),
resourceClientProxy.resourceId);
}
@@ -468,8 +479,8 @@ public class ResourceClientProxy {
}
public PluginConfigurationUpdate updatePluginConfiguration(Configuration
configuration) {
- PluginConfigurationUpdate update =
- remoteClient.getConfigurationManager().updatePluginConfiguration(
+ PluginConfigurationUpdate update =
remoteClient.getProxy(ConfigurationManagerRemote.class)
+ .updatePluginConfiguration(
remoteClient.getSubject(),
resourceClientProxy.getId(),
configuration);
@@ -481,7 +492,8 @@ public class ResourceClientProxy {
if (!LazyLoadScenario.isShouldLoad())
return null;
- return
remoteClient.getConfigurationManager().getResourceConfiguration(remoteClient.getSubject(),
+ return
remoteClient.getProxy(ConfigurationManagerRemote.class).getResourceConfiguration(
+ remoteClient.getSubject(),
resourceClientProxy.resourceId);
}
@@ -490,8 +502,8 @@ public class ResourceClientProxy {
}
public ResourceConfigurationUpdate updateResourceConfiguration(Configuration
configuration) {
- ResourceConfigurationUpdate update =
- remoteClient.getConfigurationManager().updateResourceConfiguration(
+ ResourceConfigurationUpdate update =
remoteClient.getProxy(ConfigurationManagerRemote.class)
+ .updateResourceConfiguration(
remoteClient.getSubject(),
resourceClientProxy.getId(),
configuration);
@@ -502,7 +514,8 @@ public class ResourceClientProxy {
public InstalledPackage getBackingContent() {
- return
remoteClient.getContentManager().getBackingPackageForResource(remoteClient.getSubject(),
resourceClientProxy.resourceId);
+ return
remoteClient.getProxy(ContentManagerRemote.class).getBackingPackageForResource(
+ remoteClient.getSubject(), resourceClientProxy.resourceId);
}
/**
@@ -538,8 +551,9 @@ public class ResourceClientProxy {
InstalledPackage oldPackage = getBackingContent();
- PackageVersion pv =
-
remoteClient.getContentManager().createPackageVersionWithDisplayVersion(
+ ContentManagerRemote contentManager =
remoteClient.getProxy(ContentManagerRemote.class);
+
+ PackageVersion pv = contentManager.createPackageVersionWithDisplayVersion(
remoteClient.getSubject(),
oldPackage.getPackageVersion().getGeneralPackage().getName(),
oldPackage.getPackageVersion().getGeneralPackage().getPackageType().getId(),
@@ -548,7 +562,7 @@ public class ResourceClientProxy {
oldPackage.getPackageVersion().getArchitecture().getId(),
fileContents);
- remoteClient.getContentManager().deployPackagesWithNote(
+ contentManager.deployPackagesWithNote(
remoteClient.getSubject(),
new int[] { resourceClientProxy.getId()},
new int[] {pv.getId()},
@@ -564,8 +578,7 @@ public class ResourceClientProxy {
File file = new File(fileName);
- byte[] data =
- remoteClient.getContentManager().getPackageBytes(
+ byte[] data =
remoteClient.getProxy(ContentManagerRemote.class).getPackageBytes(
remoteClient.getSubject(), resourceClientProxy.resourceId,
installedPackage.getId());
FileOutputStream fos = new FileOutputStream(file);
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
index ca7fa83..b975436 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
@@ -22,35 +22,6 @@ package org.rhq.bindings.client;
import java.util.Map;
import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
-import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.bundle.BundleManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
-import org.rhq.enterprise.server.drift.DriftManagerRemote;
-import org.rhq.enterprise.server.event.EventManagerRemote;
-import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
-import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
-import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.report.DataAccessManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
-import org.rhq.enterprise.server.support.SupportManagerRemote;
-import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
-import org.rhq.enterprise.server.system.SystemManagerRemote;
-import org.rhq.enterprise.server.tagging.TagManagerRemote;
/**
* This is an interface through which the script can communicate with RHQ server.
@@ -70,69 +41,22 @@ public interface RhqFacade {
boolean isLoggedIn();
- AlertManagerRemote getAlertManager();
-
- AlertDefinitionManagerRemote getAlertDefinitionManager();
-
- AvailabilityManagerRemote getAvailabilityManager();
-
- BundleManagerRemote getBundleManager();
-
- CallTimeDataManagerRemote getCallTimeDataManager();
-
- RepoManagerRemote getRepoManager();
-
- ConfigurationManagerRemote getConfigurationManager();
-
- ContentManagerRemote getContentManager();
-
- DataAccessManagerRemote getDataAccessManager();
-
- DiscoveryBossRemote getDiscoveryBoss();
-
- DriftManagerRemote getDriftManager();
-
- EventManagerRemote getEventManager();
-
- MeasurementBaselineManagerRemote getMeasurementBaselineManager();
-
- MeasurementDataManagerRemote getMeasurementDataManager();
-
- MeasurementDefinitionManagerRemote getMeasurementDefinitionManager();
-
- MeasurementScheduleManagerRemote getMeasurementScheduleManager();
-
- OperationManagerRemote getOperationManager();
-
- ResourceManagerRemote getResourceManager();
-
- ResourceFactoryManagerRemote getResourceFactoryManager();
-
- ResourceGroupManagerRemote getResourceGroupManager();
-
- ResourceTypeManagerRemote getResourceTypeManager();
-
- RoleManagerRemote getRoleManager();
-
- SavedSearchManagerRemote getSavedSearchManager();
-
- SubjectManagerRemote getSubjectManager();
-
- SupportManagerRemote getSupportManager();
-
- SystemManagerRemote getSystemManager();
-
- RemoteInstallManagerRemote getRemoteInstallManager();
-
- TagManagerRemote getTagManager();
-
- SynchronizationManagerRemote getSynchronizationManager();
-
/**
* This map is constructed using all the elements in the {@link RhqManager} enum
which are then proxied
* using this instance.
*
* @return a map of all available proxied managers keyed by their names.
*/
- Map<String, Object> getManagers();
+ Map<String, Object> getScriptingAPI();
+
+ /**
+ * Unlike the {@link #getScriptingAPI()} method that returns objects with modified
signatures
+ * meant to be used by the scripting environment, this method provides the access to
the "raw"
+ * remote API interface implementation backed by this RHQ facade implementation.
+ *
+ * @param remoteApiIface one of the RHQ's remote API interfaces of which the
proxied instance
+ * should be returned
+ * @return the proxy of the remote API interface backed by this facade
+ */
+ <T> T getProxy(Class<T> remoteApiIface);
}
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptAssert.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptAssert.java
index 15ed37c..a268621 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptAssert.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptAssert.java
@@ -245,20 +245,30 @@ public class ScriptAssert {
}
}
- public void assertEquals(Object[] actual, Object[] expected, String msg) {
- if (actual == expected) {
- return;
- }
+ /* These are no longer needed in Rhino 1.7R3, because native javascript arrays
implement
+ * the collection interfaces.
+ */
+ /*
+ public void assertEquals(Object[] actual, Object[] expected, String msg) {
+ if (actual == expected) {
+ return;
+ }
- if ((actual == null && expected != null) || (actual != null &&
expected == null)) {
- if (msg != null) {
- fail(msg);
- } else {
- fail("Arrays not equal: " + Arrays.toString(expected) + "
and " + Arrays.toString(actual));
+ if ((actual == null && expected != null) || (actual != null
&& expected == null)) {
+ if (msg != null) {
+ fail(msg);
+ } else {
+ fail("Arrays not equal: " + Arrays.toString(expected) +
" and " + Arrays.toString(actual));
+ }
}
+ assertEquals(Arrays.asList(actual), Arrays.asList(expected), msg);
+ }
+
+ public void assertEquals(Object[] actual, Object[] expected) {
+ assertEquals(actual, expected, null);
}
- assertEquals(Arrays.asList(actual), Arrays.asList(expected), msg);
- }
+
+ */
public void assertEqualsNoOrder(Object[] actual, Object[] expected, String msg) {
if (actual == expected) {
@@ -288,10 +298,6 @@ public class ScriptAssert {
}
}
- public void assertEquals(Object[] actual, Object[] expected) {
- assertEquals(actual, expected, null);
- }
-
public void assertEqualsNoOrder(Object[] actual, Object[] expected) {
assertEqualsNoOrder(actual, expected, null);
}
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptUtil.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptUtil.java
index 6ed095e..bd121e7 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptUtil.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ScriptUtil.java
@@ -43,6 +43,7 @@ import org.rhq.core.domain.operation.bean.ResourceOperationSchedule;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
+import org.rhq.enterprise.server.operation.OperationManagerRemote;
import org.rhq.enterprise.server.resource.ResourceManagerRemote;
/**
@@ -74,7 +75,7 @@ public class ScriptUtil {
throw new IllegalStateException("The findResources() method requires a
connection to the RHQ server.");
}
- ResourceManagerRemote resourceManager = remoteClient.getResourceManager();
+ ResourceManagerRemote resourceManager =
remoteClient.getProxy(ResourceManagerRemote.class);
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterName(string);
@@ -166,7 +167,7 @@ public class ScriptUtil {
while(history == null && i < maxIntervals) {
Thread.sleep(intervalDuration);
- PageList<ResourceOperationHistory> histories =
remoteClient.getOperationManager()
+ PageList<ResourceOperationHistory> histories =
remoteClient.getProxy(OperationManagerRemote.class)
.findResourceOperationHistoriesByCriteria(remoteClient.getSubject(),
criteria);
if (histories.size() > 0 && histories.get(0).getStatus() !=
OperationRequestStatus.INPROGRESS) {
history = histories.get(0);
diff --git a/modules/enterprise/binding/src/test/java/org/rhq/bindings/FakeRhqFacade.java
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/FakeRhqFacade.java
index a3dcbdc..d42f3e1 100644
--- a/modules/enterprise/binding/src/test/java/org/rhq/bindings/FakeRhqFacade.java
+++ b/modules/enterprise/binding/src/test/java/org/rhq/bindings/FakeRhqFacade.java
@@ -24,35 +24,6 @@ import java.util.Map;
import org.rhq.bindings.client.RhqFacade;
import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
-import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.bundle.BundleManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
-import org.rhq.enterprise.server.drift.DriftManagerRemote;
-import org.rhq.enterprise.server.event.EventManagerRemote;
-import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
-import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
-import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.report.DataAccessManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
-import org.rhq.enterprise.server.support.SupportManagerRemote;
-import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
-import org.rhq.enterprise.server.system.SystemManagerRemote;
-import org.rhq.enterprise.server.tagging.TagManagerRemote;
public class FakeRhqFacade implements RhqFacade {
@@ -71,127 +42,13 @@ public class FakeRhqFacade implements RhqFacade {
public boolean isLoggedIn() {
return false;
}
-
- public AlertManagerRemote getAlertManager() {
- return null;
- }
-
- public AlertDefinitionManagerRemote getAlertDefinitionManager() {
- return null;
- }
-
- public AvailabilityManagerRemote getAvailabilityManager() {
- return null;
- }
-
- public BundleManagerRemote getBundleManager() {
- return null;
- }
-
- public CallTimeDataManagerRemote getCallTimeDataManager() {
- return null;
- }
-
- public RepoManagerRemote getRepoManager() {
- return null;
- }
-
- public ConfigurationManagerRemote getConfigurationManager() {
- return null;
- }
-
- public ContentManagerRemote getContentManager() {
- return null;
- }
-
- public DataAccessManagerRemote getDataAccessManager() {
- return null;
- }
-
- public DiscoveryBossRemote getDiscoveryBoss() {
- return null;
- }
-
- public EventManagerRemote getEventManager() {
- return null;
- }
-
- public MeasurementBaselineManagerRemote getMeasurementBaselineManager() {
- return null;
- }
-
- public MeasurementDataManagerRemote getMeasurementDataManager() {
- return null;
- }
-
- public MeasurementDefinitionManagerRemote getMeasurementDefinitionManager() {
- return null;
- }
-
- public MeasurementScheduleManagerRemote getMeasurementScheduleManager() {
- return null;
- }
-
- public OperationManagerRemote getOperationManager() {
- return null;
- }
-
- public ResourceManagerRemote getResourceManager() {
- return null;
- }
-
- public ResourceFactoryManagerRemote getResourceFactoryManager() {
- return null;
- }
-
- public ResourceGroupManagerRemote getResourceGroupManager() {
- return null;
- }
-
- public ResourceTypeManagerRemote getResourceTypeManager() {
- return null;
- }
-
- public RoleManagerRemote getRoleManager() {
- return null;
- }
-
- public SavedSearchManagerRemote getSavedSearchManager() {
- return null;
- }
-
- public SubjectManagerRemote getSubjectManager() {
- return null;
- }
-
- public SupportManagerRemote getSupportManager() {
- return null;
- }
-
- public SystemManagerRemote getSystemManager() {
- return null;
- }
-
- public RemoteInstallManagerRemote getRemoteInstallManager() {
- return null;
- }
-
- public TagManagerRemote getTagManager() {
- return null;
- }
-
- @Override
- public DriftManagerRemote getDriftManager() {
- return null;
+
+ public Map<String, Object> getScriptingAPI() {
+ return Collections.emptyMap();
}
@Override
- public SynchronizationManagerRemote getSynchronizationManager() {
+ public <T> T getProxy(Class<T> remoteApiIface) {
return null;
}
-
- public Map<String, Object> getManagers() {
- return Collections.emptyMap();
- }
-
}
diff --git
a/modules/enterprise/binding/src/test/java/org/rhq/bindings/ScriptEngineTest.java
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/ScriptEngineTest.java
index 15184c1..c3d5450 100644
--- a/modules/enterprise/binding/src/test/java/org/rhq/bindings/ScriptEngineTest.java
+++ b/modules/enterprise/binding/src/test/java/org/rhq/bindings/ScriptEngineTest.java
@@ -86,11 +86,13 @@ public class ScriptEngineTest {
}
private ScriptEngine getScriptEngine() throws ScriptException, IOException {
- return ScriptEngineFactory.getScriptEngine("JavaScript", new
PackageFinder(Collections.<File>emptyList()), EMPTY_BINDINGS);
+ return ScriptEngineFactory.getScriptEngine("javascript", new
PackageFinder(Collections.<File> emptyList()),
+ EMPTY_BINDINGS);
}
private ScriptEngine getSecuredScriptEngine() throws ScriptException, IOException {
- return ScriptEngineFactory.getSecuredScriptEngine("JavaScript", new
PackageFinder(Collections.<File>emptyList()), EMPTY_BINDINGS, new
StandardScriptPermissions());
+ return ScriptEngineFactory.getSecuredScriptEngine("javascript",
+ new PackageFinder(Collections.<File> emptyList()), EMPTY_BINDINGS, new
StandardScriptPermissions());
}
private void assertSecurityExceptionPresent(Throwable t) {
diff --git
a/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/ScriptAssertTest.java
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/ScriptAssertTest.java
index 8fed153..1d7f657 100644
---
a/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/ScriptAssertTest.java
+++
b/modules/enterprise/binding/src/test/java/org/rhq/bindings/util/ScriptAssertTest.java
@@ -46,8 +46,7 @@ public class ScriptAssertTest {
@BeforeTest
public void verifyScriptEngineIsAvailable() throws Exception {
StandardBindings bindings = new StandardBindings(new PrintWriter(System.out), new
FakeRhqFacade());
- engine =
- ScriptEngineFactory.getScriptEngine("JavaScript", new
PackageFinder(Collections.<File> emptyList()),
+ engine = ScriptEngineFactory.getScriptEngine("javascript", new
PackageFinder(Collections.<File> emptyList()),
bindings);
}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 4a1ed62..9811d2a 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -203,7 +203,7 @@ public class ClientMain {
this.serviceCompletor.setContext(getScriptEngine().getContext());
if (remoteClient != null) {
- this.serviceCompletor.setServices(remoteClient.getManagers());
+ this.serviceCompletor.setServices(remoteClient.getScriptingAPI());
}
}
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/HelpCommand.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/HelpCommand.java
index 4676730..69b3c7a 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/HelpCommand.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/HelpCommand.java
@@ -61,7 +61,7 @@ public class HelpCommand implements ClientCommand {
tw.setHideRowCount(true);
tw.print(data);
} else if ("api".equals(args[1])) {
- Map<String, Object> services = client.getRemoteClient().getManagers();
+ Map<String, Object> services =
client.getRemoteClient().getScriptingAPI();
if (args.length == 2) {
TabularWriter tw = new TabularWriter(client.getPrintWriter(),
"API", "Package");
tw.setWidth(client.getConsoleWidth());
diff --git
a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
index fc59cf3..8cf3ceb 100644
---
a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
+++
b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
@@ -1,36 +1,23 @@
package org.rhq.enterprise.client.commands;
-import static java.util.Collections.*;
import static java.util.Arrays.asList;
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
-import java.util.Map;
-import java.util.Collections;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
+
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
import org.testng.annotations.Test;
-import org.rhq.enterprise.client.ClientMain;
-import org.rhq.enterprise.client.commands.ScriptCommand;
-import org.rhq.enterprise.clientapi.RemoteClient;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.auth.SubjectManagerRemote;
+
import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.output.TabularWriter;
import org.rhq.bindings.util.ScriptUtil;
import org.rhq.core.domain.auth.Subject;
-
-import javax.script.ScriptEngine;
-import javax.script.ScriptContext;
-import javax.script.Bindings;
+import org.rhq.enterprise.client.ClientMain;
+import org.rhq.enterprise.clientapi.RemoteClient;
public class ScriptCommandTest {
@@ -122,56 +109,6 @@ public class ScriptCommandTest {
public RemoteClientStub(String host, int port) {
super(host, port);
}
-
- @Override
- public AlertManagerRemote getAlertManager() {
- return null;
- }
-
- @Override
- public AlertDefinitionManagerRemote getAlertDefinitionManager() {
- return null;
- }
-
- @Override
- public ConfigurationManagerRemote getConfigurationManager() {
- return null;
- }
-
- @Override
- public RepoManagerRemote getRepoManager() {
- return null;
- }
-
- @Override
- public ContentManagerRemote getContentManager() {
- return null;
- }
-
- @Override
- public OperationManagerRemote getOperationManager() {
- return null;
- }
-
- @Override
- public RoleManagerRemote getRoleManager() {
- return null;
- }
-
- @Override
- public ResourceManagerRemote getResourceManager() {
- return null;
- }
-
- @Override
- public ResourceGroupManagerRemote getResourceGroupManager() {
- return null;
- }
-
- @Override
- public SubjectManagerRemote getSubjectManager() {
- return null;
- }
}
}
diff --git
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
index 57829b9..4ea3267 100644
---
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
+++
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.clientapi;
import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.Map;
@@ -28,44 +29,18 @@ import org.apache.maven.artifact.versioning.ComparableVersion;
import org.jboss.remoting.Client;
import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.invocation.NameBasedInvocation;
import org.jboss.remoting.security.SSLSocketBuilder;
import org.jboss.remoting.transport.http.ssl.HTTPSClientInvoker;
import org.rhq.bindings.client.RhqFacade;
import org.rhq.bindings.client.RhqManager;
+import org.rhq.bindings.util.InterfaceSimplifier;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.ProductInfo;
import org.rhq.enterprise.communications.util.SecurityUtil;
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.bundle.BundleManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
-import org.rhq.enterprise.server.drift.DriftManagerRemote;
-import org.rhq.enterprise.server.drift.DriftTemplateManagerRemote;
-import org.rhq.enterprise.server.event.EventManagerRemote;
-import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
-import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
-import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.report.DataAccessManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
-import org.rhq.enterprise.server.support.SupportManagerRemote;
-import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
import org.rhq.enterprise.server.system.SystemManagerRemote;
-import org.rhq.enterprise.server.tagging.TagManagerRemote;
/**
* A remote access client that provides transparent servlet-based proxies to an RHQ
Server.
@@ -127,6 +102,29 @@ public class RemoteClient implements RhqFacade {
this.subsystem = subsystem;
}
+ public <T> T remoteInvoke(RhqManager manager, Method method, Class<T>
expectedReturnType, Object... parameters)
+ throws Throwable {
+
+ String methodSig = manager.beanName() + ":" + method.getName();
+
+ Class<?>[] paramTypes = method.getParameterTypes();
+ String[] paramSig = new String[paramTypes.length];
+ for (int x = 0; x < paramTypes.length; x++) {
+ paramSig[x] = paramTypes[x].getName();
+ }
+
+ NameBasedInvocation request = new NameBasedInvocation(methodSig, parameters,
paramSig);
+
+ Object response = getRemotingClient().invoke(request);
+
+ if (response instanceof Throwable) {
+ throw (Throwable) response;
+ }
+
+ return response == null ? null : expectedReturnType.cast(response);
+
+ }
+
/**
* Connects to the remote server and logs in with the given credentials.
* After successfully executing this, {@link #isLoggedIn()} will be
<code>true</code>
@@ -144,7 +142,16 @@ public class RemoteClient implements RhqFacade {
logout();
doConnect();
- this.subject = getSubjectManager().login(user, password);
+ Method loginMethod =
SubjectManagerRemote.class.getDeclaredMethod("login", String.class,
String.class);
+
+ try {
+ this.subject = remoteInvoke(RhqManager.SubjectManager, loginMethod,
Subject.class, user, password);
+ } catch (Exception e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new Exception("Failed to login due to a throwable of type " +
e.getClass().getName(), e);
+ }
+
this.loggedIn = true;
return this.subject;
@@ -154,12 +161,16 @@ public class RemoteClient implements RhqFacade {
* Logs out from the server and disconnects this client.
*/
public void logout() {
- try {
- if (this.loggedIn && this.subject != null) {
- getSubjectManager().logout(this.subject);
+ if (this.loggedIn && this.subject != null) {
+ try {
+ Method logoutMethod =
SubjectManagerRemote.class.getDeclaredMethod("logout", Subject.class);
+ remoteInvoke(RhqManager.SubjectManager, logoutMethod, Void.class,
this.subject);
+ } catch (NoSuchMethodException e) {
+ throw new IllegalStateException(
+ "Couldn't find the logout method on the SubjectManagerRemote
interface.", e);
+ } catch (Throwable e) {
+ // just keep going so we can disconnect this client
}
- } catch (Exception e) {
- // just keep going so we can disconnect this client
}
doDisconnect();
@@ -260,145 +271,25 @@ public class RemoteClient implements RhqFacade {
this.transport = transport;
}
- public AlertManagerRemote getAlertManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.AlertManager);
- }
-
- public AlertDefinitionManagerRemote getAlertDefinitionManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.AlertDefinitionManager);
- }
-
- public AvailabilityManagerRemote getAvailabilityManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.AvailabilityManager);
- }
-
- public BundleManagerRemote getBundleManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.BundleManager);
- }
-
- public CallTimeDataManagerRemote getCallTimeDataManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.CallTimeDataManager);
- }
-
- public DriftManagerRemote getDriftManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.DriftManager);
- }
-
- public DriftTemplateManagerRemote getDriftTemplateManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.DriftTemplateManager);
- }
-
- public RepoManagerRemote getRepoManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.RepoManager);
- }
-
- public ConfigurationManagerRemote getConfigurationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ConfigurationManager);
- }
-
- public ContentManagerRemote getContentManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ContentManager);
- }
-
- public DataAccessManagerRemote getDataAccessManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.DataAccessManager);
- }
-
- public DiscoveryBossRemote getDiscoveryBoss() {
- return RemoteClientProxy.getProcessor(this, RhqManager.DiscoveryBoss);
- }
-
- public EventManagerRemote getEventManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.EventManager);
- }
-
- public MeasurementBaselineManagerRemote getMeasurementBaselineManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementBaselineManager);
- }
-
- public MeasurementDataManagerRemote getMeasurementDataManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.MeasurementDataManager);
- }
-
- public MeasurementDefinitionManagerRemote getMeasurementDefinitionManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementDefinitionManager);
- }
-
- public MeasurementScheduleManagerRemote getMeasurementScheduleManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementScheduleManager);
- }
-
- public OperationManagerRemote getOperationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.OperationManager);
- }
-
- public ResourceManagerRemote getResourceManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ResourceManager);
- }
-
- public ResourceFactoryManagerRemote getResourceFactoryManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ResourceFactoryManager);
- }
-
- public ResourceGroupManagerRemote getResourceGroupManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ResourceGroupManager);
- }
-
- public ResourceTypeManagerRemote getResourceTypeManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.ResourceTypeManager);
- }
-
- public RoleManagerRemote getRoleManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.RoleManager);
- }
-
- public SavedSearchManagerRemote getSavedSearchManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.SavedSearchManager);
- }
-
- public SubjectManagerRemote getSubjectManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.SubjectManager);
- }
-
- public SupportManagerRemote getSupportManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.SupportManager);
- }
-
- public SystemManagerRemote getSystemManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.SystemManager);
- }
-
- public RemoteInstallManagerRemote getRemoteInstallManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.RemoteInstallManager);
- }
-
- public TagManagerRemote getTagManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.TagManager);
- }
-
- public SynchronizationManagerRemote getSynchronizationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManager.SynchronizationManager);
- }
-
/**
* Returns the map of all remote managers running in the server that this
* client can talk to.
*
* @return Map K=manager name V=remote proxy
*/
- public Map<String, Object> getManagers() {
+ public Map<String, Object> getScriptingAPI() {
if (this.managers == null) {
this.managers = new HashMap<String, Object>();
for (RhqManager manager : RhqManager.values()) {
- try {
- Method m = this.getClass().getMethod("get" +
manager.name());
- if (manager.enabled()) {
- this.managers.put(manager.name(), m.invoke(this));
+ if (manager.enabled()) {
+ try {
+ Object proxy = getProcessor(this, manager, true);
+ this.managers.put(manager.name(), proxy);
+ } catch (Throwable e) {
+ LOG.error("Failed to load manager " + manager + "
due to missing class.", e);
}
- } catch (Throwable e) {
- LOG.error("Failed to load manager " + manager + " due
to missing class.", e);
}
}
}
@@ -407,6 +298,17 @@ public class RemoteClient implements RhqFacade {
}
@Override
+ public <T> T getProxy(Class<T> remoteApiIface) {
+ RhqManager manager = RhqManager.forInterface(remoteApiIface);
+
+ if (manager == null) {
+ throw new IllegalArgumentException("Unknown remote interface " +
remoteApiIface);
+ }
+
+ return getProcessor(this, manager, false);
+ }
+
+ @Override
public String toString() {
return this.getClass().getSimpleName() + "[" + "transport=" +
transport + ", host=" + host + ", port=" + port
+ ", subsystem=" + subsystem + ", connected=" + connected
+ ", loggedIn=" + loggedIn + ", subject="
@@ -443,6 +345,20 @@ public class RemoteClient implements RhqFacade {
return (this.serverInfo != null) ? this.serverInfo.getBuildNumber() : null;
}
+ @SuppressWarnings("unchecked")
+ private static <T> T getProcessor(RemoteClient remoteClient, RhqManager
manager, boolean simplify) {
+ try {
+ RemoteClientProxy gpc = new RemoteClientProxy(remoteClient, manager);
+
+ Class<?> intf = simplify ?
InterfaceSimplifier.simplify(manager.remote()) : manager.remote();
+
+ return (T)
Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new
Class<?>[] { intf },
+ gpc);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to get remote connection proxy",
e);
+ }
+ }
+
private void doDisconnect() {
try {
if (this.remotingClient != null && this.remotingClient.isConnected())
{
@@ -470,13 +386,21 @@ public class RemoteClient implements RhqFacade {
this.remotingClient.connect();
// make sure the remote server can support this client
- this.serverInfo = getSystemManager().getProductInfo(subject);
try {
+ Method getProductInfoMethod =
SystemManagerRemote.class.getDeclaredMethod("getProductInfo", Subject.class);
+
+ this.serverInfo = remoteInvoke(RhqManager.SystemManager,
getProductInfoMethod, ProductInfo.class,
+ this.subject);
checkServerSupported(this.serverInfo);
+ } catch (NoSuchMethodException e) {
+ throw new IllegalStateException("Could not find the
getProductInfo(Subject) method on the SystemManager.",
+ e);
} catch (Exception e) {
// our client cannot be supported by the server - disconnect and rethrow the
exception
doDisconnect();
throw e;
+ } catch (Throwable e) {
+ throw new IllegalStateException("Unknown error occured during
connect.", e);
}
}
diff --git
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
index 23dea3c..a6b04f1 100644
---
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
+++
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
@@ -19,16 +19,12 @@
package org.rhq.enterprise.clientapi;
import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.remoting.invocation.NameBasedInvocation;
-
import org.rhq.bindings.client.AbstractRhqFacadeProxy;
import org.rhq.bindings.client.RhqManager;
-import org.rhq.bindings.util.InterfaceSimplifier;
import org.rhq.core.domain.server.ExternalizableStrategy;
/**
@@ -46,24 +42,11 @@ public class RemoteClientProxy extends
AbstractRhqFacadeProxy<RemoteClient> {
super(client, manager);
}
+ @Deprecated
public Class<?> getRemoteInterface() {
return this.getManager().remote();
}
- @SuppressWarnings("unchecked")
- public static <T> T getProcessor(RemoteClient remoteClient, RhqManager manager)
{
- try {
- RemoteClientProxy gpc = new RemoteClientProxy(remoteClient, manager);
-
- Class<?> intf = InterfaceSimplifier.simplify(manager.remote());
-
- return (T) Proxy
- .newProxyInstance(Thread.currentThread().getContextClassLoader(), new
Class<?>[] { intf }, gpc);
- } catch (Exception e) {
- throw new RuntimeException("Failed to get remote connection proxy",
e);
- }
- }
-
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try {
return super.invoke(proxy, method, args);
@@ -73,29 +56,9 @@ public class RemoteClientProxy extends
AbstractRhqFacadeProxy<RemoteClient> {
}
}
- protected Object doInvoke(Object proxy, Method originalMethod,
java.lang.Class<?>[] argTypes, Object[] args) throws Throwable {
+ protected Object doInvoke(Object proxy, Method originalMethod, Object[] args) throws
Throwable {
ExternalizableStrategy.setStrategy(ExternalizableStrategy.Subsystem.REFLECTIVE_SERIALIZATION);
- String methodName = getManager().beanName() + ":" +
originalMethod.getName();
-
- String[] paramSig = createParamSignature(argTypes);
-
- NameBasedInvocation request = new NameBasedInvocation(methodName, args,
paramSig);
-
- Object response = getRhqFacade().getRemotingClient().invoke(request);
-
- if (response instanceof Throwable) {
- throw (Throwable) response;
- }
-
- return response;
- }
-
- private String[] createParamSignature(Class<?>[] types) {
- String[] paramSig = new String[types.length];
- for (int x = 0; x < types.length; x++) {
- paramSig[x] = types[x].getName();
- }
- return paramSig;
+ return getRhqFacade().remoteInvoke(getManager(), originalMethod, Object.class,
args);
}
}
diff --git
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
index dbb4424..e350302 100644
---
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
+++
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
@@ -19,11 +19,9 @@
package org.rhq.enterprise.client;
-import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
import java.util.HashMap;
import java.util.Map;
@@ -34,36 +32,6 @@ import org.rhq.bindings.client.RhqFacade;
import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.util.InterfaceSimplifier;
import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
-import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.bundle.BundleManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
-import org.rhq.enterprise.server.drift.DriftManagerRemote;
-import org.rhq.enterprise.server.drift.DriftTemplateManagerRemote;
-import org.rhq.enterprise.server.event.EventManagerRemote;
-import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
-import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
-import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.report.DataAccessManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
-import org.rhq.enterprise.server.support.SupportManagerRemote;
-import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
-import org.rhq.enterprise.server.system.SystemManagerRemote;
-import org.rhq.enterprise.server.tagging.TagManagerRemote;
import org.rhq.enterprise.server.util.LookupUtil;
/**
@@ -102,331 +70,46 @@ public class LocalClient implements RhqFacade {
}
@Override
- public AlertManagerRemote getAlertManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<AlertManagerRemote>() {
- @Override
- public AlertManagerRemote run() {
- return AccessController.doPrivileged(new
PrivilegedAction<AlertManagerRemote>() {
- @Override
- public AlertManagerRemote run() {
- return getProxy(LookupUtil.getAlertManager(),
AlertManagerRemote.class);
- }
- });
- }
- });
- }
-
- @Override
- public AlertDefinitionManagerRemote getAlertDefinitionManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<AlertDefinitionManagerRemote>() {
- @Override
- public AlertDefinitionManagerRemote run() {
- return getProxy(LookupUtil.getAlertDefinitionManager(),
AlertDefinitionManagerRemote.class);
- }
- });
- }
+ public Map<String, Object> getScriptingAPI() {
+ if (managers == null) {
- @Override
- public AvailabilityManagerRemote getAvailabilityManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<AvailabilityManagerRemote>() {
- @Override
- public AvailabilityManagerRemote run() {
- return getProxy(LookupUtil.getAvailabilityManager(),
AvailabilityManagerRemote.class);
- }
- });
- }
+ managers = new HashMap<String, Object>();
- @Override
- public BundleManagerRemote getBundleManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<BundleManagerRemote>() {
- @Override
- public BundleManagerRemote run() {
- return AccessController.doPrivileged(new
PrivilegedAction<BundleManagerRemote>() {
- @Override
- public BundleManagerRemote run() {
- return getProxy(LookupUtil.getBundleManager(),
BundleManagerRemote.class);
+ for (final RhqManager manager : RhqManager.values()) {
+ if (manager.enabled()) {
+ try {
+ Object proxy = AccessController.doPrivileged(new
PrivilegedAction<Object>() {
+ @Override
+ public Object run() {
+ return getProxy(getLocalSLSB(manager),
manager.remote());
+ }
+ });
+
+ managers.put(manager.name(), proxy);
+ } catch (Throwable e) {
+ LOG.error("Failed to load manager " + manager + "
due to missing class.", e);
}
- });
- }
- });
- }
-
- @Override
- public CallTimeDataManagerRemote getCallTimeDataManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<CallTimeDataManagerRemote>() {
- @Override
- public CallTimeDataManagerRemote run() {
- return getProxy(LookupUtil.getCallTimeDataManager(),
CallTimeDataManagerRemote.class);
- }
- });
- }
-
- @Override
- public RepoManagerRemote getRepoManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<RepoManagerRemote>() {
- @Override
- public RepoManagerRemote run() {
- return getProxy(LookupUtil.getRepoManagerLocal(),
RepoManagerRemote.class);
- }
- });
- }
-
- @Override
- public ConfigurationManagerRemote getConfigurationManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ConfigurationManagerRemote>() {
- @Override
- public ConfigurationManagerRemote run() {
- return getProxy(LookupUtil.getConfigurationManager(),
ConfigurationManagerRemote.class);
- }
- });
- }
-
- @Override
- public ContentManagerRemote getContentManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ContentManagerRemote>() {
- @Override
- public ContentManagerRemote run() {
- return getProxy(LookupUtil.getContentManager(),
ContentManagerRemote.class);
- }
- });
- }
-
- @Override
- public DataAccessManagerRemote getDataAccessManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<DataAccessManagerRemote>() {
- @Override
- public DataAccessManagerRemote run() {
- return getProxy(LookupUtil.getDataAccessManager(),
DataAccessManagerRemote.class);
- }
- });
- }
-
- @Override
- public DiscoveryBossRemote getDiscoveryBoss() {
- return AccessController.doPrivileged(new
PrivilegedAction<DiscoveryBossRemote>() {
- @Override
- public DiscoveryBossRemote run() {
- return getProxy(LookupUtil.getDiscoveryBoss(),
DiscoveryBossRemote.class);
- }
- });
- }
-
- @Override
- public DriftManagerRemote getDriftManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<DriftManagerRemote>() {
- @Override
- public DriftManagerRemote run() {
- return getProxy(LookupUtil.getDriftManager(), DriftManagerRemote.class);
- }
- });
- }
-
- public DriftTemplateManagerRemote getDriftTemplateManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<DriftTemplateManagerRemote>() {
- @Override
- public DriftTemplateManagerRemote run() {
- return getProxy(LookupUtil.getDriftTemplateManager(),
DriftTemplateManagerRemote.class);
- }
- });
- }
-
- @Override
- public EventManagerRemote getEventManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<EventManagerRemote>() {
- @Override
- public EventManagerRemote run() {
- return getProxy(LookupUtil.getEventManager(), EventManagerRemote.class);
- }
- });
- }
-
- @Override
- public MeasurementBaselineManagerRemote getMeasurementBaselineManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<MeasurementBaselineManagerRemote>() {
- @Override
- public MeasurementBaselineManagerRemote run() {
- return getProxy(LookupUtil.getMeasurementBaselineManager(),
MeasurementBaselineManagerRemote.class);
- }
- });
- }
-
- @Override
- public MeasurementDataManagerRemote getMeasurementDataManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<MeasurementDataManagerRemote>() {
- @Override
- public MeasurementDataManagerRemote run() {
- return getProxy(LookupUtil.getMeasurementDataManager(),
MeasurementDataManagerRemote.class);
- }
- });
- }
-
- @Override
- public MeasurementDefinitionManagerRemote getMeasurementDefinitionManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<MeasurementDefinitionManagerRemote>() {
- @Override
- public MeasurementDefinitionManagerRemote run() {
- return getProxy(LookupUtil.getMeasurementDefinitionManager(),
MeasurementDefinitionManagerRemote.class);
- }
- });
- }
-
- @Override
- public MeasurementScheduleManagerRemote getMeasurementScheduleManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<MeasurementScheduleManagerRemote>() {
- @Override
- public MeasurementScheduleManagerRemote run() {
- return getProxy(LookupUtil.getMeasurementScheduleManager(),
MeasurementScheduleManagerRemote.class);
- }
- });
- }
-
- @Override
- public OperationManagerRemote getOperationManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<OperationManagerRemote>() {
- @Override
- public OperationManagerRemote run() {
- return getProxy(LookupUtil.getOperationManager(),
OperationManagerRemote.class);
- }
- });
- }
-
- @Override
- public ResourceManagerRemote getResourceManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ResourceManagerRemote>() {
- @Override
- public ResourceManagerRemote run() {
- return getProxy(LookupUtil.getResourceManager(),
ResourceManagerRemote.class);
- }
- });
- }
-
- @Override
- public ResourceFactoryManagerRemote getResourceFactoryManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ResourceFactoryManagerRemote>() {
- @Override
- public ResourceFactoryManagerRemote run() {
- return getProxy(LookupUtil.getResourceFactoryManager(),
ResourceFactoryManagerRemote.class);
- }
- });
- }
-
- @Override
- public ResourceGroupManagerRemote getResourceGroupManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ResourceGroupManagerRemote>() {
- @Override
- public ResourceGroupManagerRemote run() {
- return getProxy(LookupUtil.getResourceGroupManager(),
ResourceGroupManagerRemote.class);
- }
- });
- }
-
- @Override
- public ResourceTypeManagerRemote getResourceTypeManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<ResourceTypeManagerRemote>() {
- @Override
- public ResourceTypeManagerRemote run() {
- return getProxy(LookupUtil.getResourceTypeManager(),
ResourceTypeManagerRemote.class);
- }
- });
- }
-
- @Override
- public RoleManagerRemote getRoleManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<RoleManagerRemote>() {
- @Override
- public RoleManagerRemote run() {
- return getProxy(LookupUtil.getRoleManager(), RoleManagerRemote.class);
- }
- });
- }
-
- @Override
- public SavedSearchManagerRemote getSavedSearchManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<SavedSearchManagerRemote>() {
- @Override
- public SavedSearchManagerRemote run() {
- return getProxy(LookupUtil.getSavedSearchManager(),
SavedSearchManagerRemote.class);
- }
- });
- }
-
- @Override
- public SubjectManagerRemote getSubjectManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<SubjectManagerRemote>() {
- @Override
- public SubjectManagerRemote run() {
- return getProxy(LookupUtil.getSubjectManager(),
SubjectManagerRemote.class);
- }
- });
- }
-
- @Override
- public SupportManagerRemote getSupportManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<SupportManagerRemote>() {
- @Override
- public SupportManagerRemote run() {
- return getProxy(LookupUtil.getSupportManager(),
SupportManagerRemote.class);
- }
- });
- }
-
- @Override
- public SystemManagerRemote getSystemManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<SystemManagerRemote>() {
- @Override
- public SystemManagerRemote run() {
- return getProxy(LookupUtil.getSystemManager(),
SystemManagerRemote.class);
- }
- });
- }
-
- @Override
- public RemoteInstallManagerRemote getRemoteInstallManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<RemoteInstallManagerRemote>() {
- @Override
- public RemoteInstallManagerRemote run() {
- return getProxy(LookupUtil.getRemoteInstallManager(),
RemoteInstallManagerRemote.class);
+ }
}
- });
- }
+ }
- @Override
- public TagManagerRemote getTagManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<TagManagerRemote>() {
- @Override
- public TagManagerRemote run() {
- return getProxy(LookupUtil.getTagManager(), TagManagerRemote.class);
- }
- });
+ return managers;
}
@Override
- public SynchronizationManagerRemote getSynchronizationManager() {
- return AccessController.doPrivileged(new
PrivilegedAction<SynchronizationManagerRemote>() {
- @Override
- public SynchronizationManagerRemote run() {
- return getProxy(LookupUtil.getSynchronizationManager(),
SynchronizationManagerRemote.class);
- }
- });
- }
+ public <T> T getProxy(Class<T> remoteApiIface) {
+ RhqManager manager = RhqManager.forInterface(remoteApiIface);
- @Override
- public Map<String, Object> getManagers() {
- if (managers == null) {
+ if (manager == null) {
+ throw new IllegalArgumentException("Unknown remote interface " +
remoteApiIface);
+ }
- managers = new HashMap<String, Object>();
+ Object localSLSB = getLocalSLSB(manager);
- for (RhqManager manager : RhqManager.values()) {
- try {
- Method m = getClass().getMethod("get" + manager.name());
- managers.put(manager.name(), m.invoke(this));
- } catch (Throwable e) {
- LOG.error("Failed to load manager " + manager + " due
to missing class.", e);
- }
- }
- }
+ Object proxy = Proxy.newProxyInstance(remoteApiIface.getClassLoader(), new
Class<?>[] { remoteApiIface },
+ new LocalClientProxy(localSLSB, this, manager));
- return managers;
+ return remoteApiIface.cast(proxy);
}
private <T> T getProxy(Object slsb, Class<T> iface) {
@@ -442,10 +125,77 @@ public class LocalClient implements RhqFacade {
Thread.currentThread().setContextClassLoader(cl);
}
- Object proxy =
- Proxy.newProxyInstance(iface.getClassLoader(), new Class<?>[] {
simplified }, new LocalClientProxy(slsb,
- this, manager));
+ Object proxy = Proxy.newProxyInstance(iface.getClassLoader(), new
Class<?>[] { simplified },
+ new LocalClientProxy(slsb, this, manager));
return iface.cast(proxy);
}
+
+ private Object getLocalSLSB(RhqManager manager) {
+ switch (manager) {
+ case AlertDefinitionManager:
+ return LookupUtil.getAlertDefinitionManager();
+ case AlertManager:
+ return LookupUtil.getAlertManager();
+ case AvailabilityManager:
+ return LookupUtil.getAvailabilityManager();
+ case BundleManager:
+ return LookupUtil.getBundleManager();
+ case CallTimeDataManager:
+ return LookupUtil.getCallTimeDataManager();
+ case ConfigurationManager:
+ return LookupUtil.getConfigurationManager();
+ case ContentManager:
+ return LookupUtil.getContentManager();
+ case DataAccessManager:
+ return LookupUtil.getDataAccessManager();
+ case DiscoveryBoss:
+ return LookupUtil.getDiscoveryBoss();
+ case DriftManager:
+ return LookupUtil.getDriftManager();
+ case DriftTemplateManager:
+ return LookupUtil.getDriftTemplateManager();
+ case EventManager:
+ return LookupUtil.getEventManager();
+ case MeasurementBaselineManager:
+ return LookupUtil.getMeasurementBaselineManager();
+ case MeasurementDataManager:
+ return LookupUtil.getMeasurementDataManager();
+ case MeasurementDefinitionManager:
+ return LookupUtil.getMeasurementDefinitionManager();
+ case MeasurementScheduleManager:
+ return LookupUtil.getMeasurementScheduleManager();
+ case OperationManager:
+ return LookupUtil.getOperationManager();
+ case RemoteInstallManager:
+ return LookupUtil.getRemoteInstallManager();
+ case RepoManager:
+ return LookupUtil.getRepoManagerLocal();
+ case ResourceFactoryManager:
+ return LookupUtil.getResourceFactoryManager();
+ case ResourceGroupManager:
+ return LookupUtil.getResourceGroupManager();
+ case ResourceManager:
+ return LookupUtil.getResourceManager();
+ case ResourceTypeManager:
+ return LookupUtil.getResourceTypeManager();
+ case RoleManager:
+ return LookupUtil.getRoleManager();
+ case SavedSearchManager:
+ return LookupUtil.getSavedSearchManager();
+ case SubjectManager:
+ return LookupUtil.getSubjectManager();
+ case SupportManager:
+ return LookupUtil.getSupportManager();
+ case SynchronizationManager:
+ return LookupUtil.getSynchronizationManager();
+ case SystemManager:
+ return LookupUtil.getSystemManager();
+ case TagManager:
+ return LookupUtil.getTagManager();
+ }
+
+ throw new IllegalStateException("LocalClient does not handle the manager:
" + manager
+ + ". This is a bug, please report it.");
+ }
}
diff --git
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
index 67bd5e7..54d20e0 100644
---
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
+++
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
@@ -56,9 +56,10 @@ public class LocalClientProxy extends
AbstractRhqFacadeProxy<LocalClient> {
}
}
- protected Object doInvoke(Object proxy, Method originalMethod,
java.lang.Class<?>[] argTypes, final Object[] args) throws Throwable {
+ protected Object doInvoke(Object proxy, Method originalMethod, final Object[] args)
throws Throwable {
try {
- final Method realMethod =
localSLSB.getClass().getMethod(originalMethod.getName(), argTypes);
+ final Method realMethod =
localSLSB.getClass().getMethod(originalMethod.getName(),
+ originalMethod.getParameterTypes());
//run this through the privileged block to elevate the privs of the script
//the scripts don't have the AllowEjbAccessPermission but this code has
@@ -72,7 +73,9 @@ public class LocalClientProxy extends
AbstractRhqFacadeProxy<LocalClient> {
}
});
} catch (NoSuchMethodException e) {
- throw new IllegalArgumentException("Method [" + originalMethod +
"] does not have a desimplified counterpart with arguments " +
Arrays.asList(argTypes) + ".", e);
+ throw new IllegalArgumentException("Method [" + originalMethod
+ + "] does not have a desimplified counterpart with arguments "
+ + Arrays.asList(originalMethod.getParameterTypes()) + ".", e);
}
};
diff --git
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
index 3b949e3..e9bd928 100644
---
a/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
+++
b/modules/enterprise/server/client-api/src/test/java/org/rhq/enterprise/client/test/LocalClientTest.java
@@ -31,7 +31,6 @@ import javax.naming.NamingException;
import javax.naming.spi.InitialContextFactory;
import org.jmock.Expectations;
-import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -89,7 +88,7 @@ public class LocalClientTest extends JMockTest {
LocalClient lc = new LocalClient(null);
//this call creates the proxy and is theoretically prone to the context
classloader
- AlertManagerRemote am = lc.getAlertManager();
+ Object am = lc.getScriptingAPI().get("AlertManager");
//check that both the original and simplified methods exist on the returned
object
am.getClass().getMethod("deleteAlerts", new Class<?>[] {
Subject.class, int[].class });
commit 09e7b73cf38378ccc825b8c9041ddc8b6a6b5429
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 09:37:39 2012 +0200
Renaming "RhqManagers" to "RhqManager".
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
index 7f3a56f..ef46bb2 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/AbstractRhqFacadeProxy.java
@@ -34,9 +34,9 @@ import org.rhq.core.domain.auth.Subject;
public abstract class AbstractRhqFacadeProxy<T extends RhqFacade> implements
InvocationHandler {
private T facade;
- private RhqManagers manager;
+ private RhqManager manager;
- protected AbstractRhqFacadeProxy(T facade, RhqManagers manager) {
+ protected AbstractRhqFacadeProxy(T facade, RhqManager manager) {
this.facade = facade;
this.manager = manager;
}
@@ -45,7 +45,7 @@ public abstract class AbstractRhqFacadeProxy<T extends RhqFacade>
implements Inv
return facade;
}
- protected RhqManagers getManager() {
+ protected RhqManager getManager() {
return manager;
}
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
index f2bde27..ca7fa83 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqFacade.java
@@ -129,7 +129,7 @@ public interface RhqFacade {
SynchronizationManagerRemote getSynchronizationManager();
/**
- * This map is constructed using all the elements in the {@link RhqManagers} enum
which are then proxied
+ * This map is constructed using all the elements in the {@link RhqManager} enum
which are then proxied
* using this instance.
*
* @return a map of all available proxied managers keyed by their names.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
new file mode 100644
index 0000000..cfa52e2
--- /dev/null
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
@@ -0,0 +1,133 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.bindings.client;
+
+import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
+import org.rhq.enterprise.server.alert.AlertManagerRemote;
+import org.rhq.enterprise.server.auth.SubjectManagerRemote;
+import org.rhq.enterprise.server.authz.RoleManagerRemote;
+import org.rhq.enterprise.server.bundle.BundleManagerRemote;
+import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
+import org.rhq.enterprise.server.content.ContentManagerRemote;
+import org.rhq.enterprise.server.content.RepoManagerRemote;
+import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
+import org.rhq.enterprise.server.drift.DriftManagerRemote;
+import org.rhq.enterprise.server.drift.DriftTemplateManagerRemote;
+import org.rhq.enterprise.server.event.EventManagerRemote;
+import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
+import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
+import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
+import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
+import org.rhq.enterprise.server.operation.OperationManagerRemote;
+import org.rhq.enterprise.server.report.DataAccessManagerRemote;
+import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
+import org.rhq.enterprise.server.resource.ResourceManagerRemote;
+import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
+import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
+import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
+import org.rhq.enterprise.server.support.SupportManagerRemote;
+import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
+import org.rhq.enterprise.server.system.SystemManagerRemote;
+import org.rhq.enterprise.server.tagging.TagManagerRemote;
+
+/**
+ * An enumeration of all remote SLSBs of the RHQ server.
+ *
+ * @author Lukas Krejci
+ * @author Greg Hinkle
+ */
+public enum RhqManager {
+ AlertManager(AlertManagerRemote.class, "${AlertManager}"), //
+ AlertDefinitionManager(AlertDefinitionManagerRemote.class,
"${AlertDefinitionManager}"), //
+ AvailabilityManager(AvailabilityManagerRemote.class,
"${AvailabilityManager}"), //
+ BundleManager(BundleManagerRemote.class, "${BundleManager}"), //
+ CallTimeDataManager(CallTimeDataManagerRemote.class,
"${CallTimeDataManager}"), //
+ RepoManager(RepoManagerRemote.class, "${RepoManager}"), //
+ ConfigurationManager(ConfigurationManagerRemote.class,
"${ConfigurationManager}"), //
+ ContentManager(ContentManagerRemote.class, "${ContentManager}"), //
+ DataAccessManager(DataAccessManagerRemote.class, "${DataAccessManager}"),
//
+ DriftManager(DriftManagerRemote.class, "${DriftManager}"), //
+ DriftTemplateManager(DriftTemplateManagerRemote.class,
"${DriftTemplateManager}"), //
+ DiscoveryBoss(DiscoveryBossRemote.class, "${DiscoveryBoss}"), //
+ EventManager(EventManagerRemote.class, "${EventManager}"), //
+ MeasurementBaselineManager(MeasurementBaselineManagerRemote.class,
"${MeasurementBaselineManager}"), //
+ MeasurementDataManager(MeasurementDataManagerRemote.class,
"${MeasurementDataManager}"), //
+ MeasurementDefinitionManager(MeasurementDefinitionManagerRemote.class,
"${MeasurementDefinitionManager}"), //
+ MeasurementScheduleManager(MeasurementScheduleManagerRemote.class,
"${MeasurementScheduleManager}"), //
+ OperationManager(OperationManagerRemote.class, "${OperationManager}"), //
+ ResourceManager(ResourceManagerRemote.class, "${ResourceManager}"), //
+ ResourceFactoryManager(ResourceFactoryManagerRemote.class,
"${ResourceFactoryManager}"), //
+ ResourceGroupManager(ResourceGroupManagerRemote.class,
"${ResourceGroupManager}"), //
+ ResourceTypeManager(ResourceTypeManagerRemote.class,
"${ResourceTypeManager}"), //
+ RoleManager(RoleManagerRemote.class, "${RoleManager}"), //
+ SavedSearchManager(SavedSearchManagerRemote.class,
"${SavedSearchManager}"), //
+ SubjectManager(SubjectManagerRemote.class, "${SubjectManager}"), //
+ SupportManager(SupportManagerRemote.class, "${SupportManager}"), //
+ SystemManager(SystemManagerRemote.class, "${SystemManager}"), //
+ RemoteInstallManager(RemoteInstallManagerRemote.class,
"${RemoteInstallManager}"), //
+ TagManager(TagManagerRemote.class, "${TagManager}"), //
+ SynchronizationManager(SynchronizationManagerRemote.class,
"${SynchronizationManager}");
+
+ private Class<?> remote;
+ private String remoteName;
+ private String beanName;
+ private boolean enabled;
+
+ private RhqManager(Class<?> remote, String enable) {
+ this.remote = remote;
+ this.beanName = this.name() + "Bean";
+ this.remoteName = this.name() + "Remote";
+ //defaults and evaluates to TRUE unless the string contains "false".
Done to defend against
+ //possible errors in string replacement during rhq build.
+ this.enabled = true;
+ if ((enable != null) && (enable.trim().length() > 0)) {
+ this.enabled = (enable.trim().equalsIgnoreCase("false")) ?
Boolean.FALSE : Boolean.TRUE;
+ }
+ }
+
+ public static RhqManager forInterface(Class<?> iface) {
+ for (RhqManager m : values()) {
+ if (m.remote().equals(iface)) {
+ return m;
+ }
+ }
+
+ return null;
+ }
+
+ public Class<?> remote() {
+ return this.remote;
+ }
+
+ public String beanName() {
+ return this.beanName;
+ }
+
+ public String remoteName() {
+ return this.remoteName;
+ }
+
+ public boolean enabled() {
+ return this.enabled;
+ }
+}
\ No newline at end of file
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManagers.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManagers.java
deleted file mode 100644
index dfe600c..0000000
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManagers.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-package org.rhq.bindings.client;
-
-import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
-import org.rhq.enterprise.server.alert.AlertManagerRemote;
-import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.enterprise.server.authz.RoleManagerRemote;
-import org.rhq.enterprise.server.bundle.BundleManagerRemote;
-import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote;
-import org.rhq.enterprise.server.content.ContentManagerRemote;
-import org.rhq.enterprise.server.content.RepoManagerRemote;
-import org.rhq.enterprise.server.discovery.DiscoveryBossRemote;
-import org.rhq.enterprise.server.drift.DriftManagerRemote;
-import org.rhq.enterprise.server.drift.DriftTemplateManagerRemote;
-import org.rhq.enterprise.server.event.EventManagerRemote;
-import org.rhq.enterprise.server.install.remote.RemoteInstallManagerRemote;
-import org.rhq.enterprise.server.measurement.AvailabilityManagerRemote;
-import org.rhq.enterprise.server.measurement.CallTimeDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementBaselineManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDataManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
-import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
-import org.rhq.enterprise.server.operation.OperationManagerRemote;
-import org.rhq.enterprise.server.report.DataAccessManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceManagerRemote;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
-import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
-import org.rhq.enterprise.server.search.SavedSearchManagerRemote;
-import org.rhq.enterprise.server.support.SupportManagerRemote;
-import org.rhq.enterprise.server.sync.SynchronizationManagerRemote;
-import org.rhq.enterprise.server.system.SystemManagerRemote;
-import org.rhq.enterprise.server.tagging.TagManagerRemote;
-
-/**
- * An enumeration of all remote SLSBs of the RHQ server.
- *
- * @author Lukas Krejci
- * @author Greg Hinkle
- */
-public enum RhqManagers {
- AlertManager(AlertManagerRemote.class, "${AlertManager}"), //
- AlertDefinitionManager(AlertDefinitionManagerRemote.class,
"${AlertDefinitionManager}"), //
- AvailabilityManager(AvailabilityManagerRemote.class,
"${AvailabilityManager}"), //
- BundleManager(BundleManagerRemote.class, "${BundleManager}"), //
- CallTimeDataManager(CallTimeDataManagerRemote.class,
"${CallTimeDataManager}"), //
- RepoManager(RepoManagerRemote.class, "${RepoManager}"), //
- ConfigurationManager(ConfigurationManagerRemote.class,
"${ConfigurationManager}"), //
- ContentManager(ContentManagerRemote.class, "${ContentManager}"), //
- DataAccessManager(DataAccessManagerRemote.class, "${DataAccessManager}"),
//
- DriftManager(DriftManagerRemote.class, "${DriftManager}"), //
- DriftTemplateManager(DriftTemplateManagerRemote.class,
"${DriftTemplateManager}"), //
- DiscoveryBoss(DiscoveryBossRemote.class, "${DiscoveryBoss}"), //
- EventManager(EventManagerRemote.class, "${EventManager}"), //
- MeasurementBaselineManager(MeasurementBaselineManagerRemote.class,
"${MeasurementBaselineManager}"), //
- MeasurementDataManager(MeasurementDataManagerRemote.class,
"${MeasurementDataManager}"), //
- MeasurementDefinitionManager(MeasurementDefinitionManagerRemote.class,
"${MeasurementDefinitionManager}"), //
- MeasurementScheduleManager(MeasurementScheduleManagerRemote.class,
"${MeasurementScheduleManager}"), //
- OperationManager(OperationManagerRemote.class, "${OperationManager}"), //
- ResourceManager(ResourceManagerRemote.class, "${ResourceManager}"), //
- ResourceFactoryManager(ResourceFactoryManagerRemote.class,
"${ResourceFactoryManager}"), //
- ResourceGroupManager(ResourceGroupManagerRemote.class,
"${ResourceGroupManager}"), //
- ResourceTypeManager(ResourceTypeManagerRemote.class,
"${ResourceTypeManager}"), //
- RoleManager(RoleManagerRemote.class, "${RoleManager}"), //
- SavedSearchManager(SavedSearchManagerRemote.class,
"${SavedSearchManager}"), //
- SubjectManager(SubjectManagerRemote.class, "${SubjectManager}"), //
- SupportManager(SupportManagerRemote.class, "${SupportManager}"), //
- SystemManager(SystemManagerRemote.class, "${SystemManager}"), //
- RemoteInstallManager(RemoteInstallManagerRemote.class,
"${RemoteInstallManager}"), //
- TagManager(TagManagerRemote.class, "${TagManager}"), //
- SynchronizationManager(SynchronizationManagerRemote.class,
"${SynchronizationManager}");
-
- private Class<?> remote;
- private String remoteName;
- private String beanName;
- private boolean enabled;
-
- private RhqManagers(Class<?> remote, String enable) {
- this.remote = remote;
- this.beanName = this.name() + "Bean";
- this.remoteName = this.name() + "Remote";
- //defaults and evaluates to TRUE unless the string contains "false".
Done to defend against
- //possible errors in string replacement during rhq build.
- this.enabled = true;
- if ((enable != null) && (enable.trim().length() > 0)) {
- this.enabled = (enable.trim().equalsIgnoreCase("false")) ?
Boolean.FALSE : Boolean.TRUE;
- }
- }
-
- public static RhqManagers forInterface(Class<?> iface) {
- for (RhqManagers m : values()) {
- if (m.remote().equals(iface)) {
- return m;
- }
- }
-
- return null;
- }
-
- public Class<?> remote() {
- return this.remote;
- }
-
- public String beanName() {
- return this.beanName;
- }
-
- public String remoteName() {
- return this.remoteName;
- }
-
- public boolean enabled() {
- return this.enabled;
- }
-}
\ No newline at end of file
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java
index f3084d1..e80c346 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java
@@ -36,7 +36,7 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.bindings.ScriptEngineFactory;
import org.rhq.bindings.StandardBindings;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.output.TabularWriter;
import org.rhq.bindings.util.PackageFinder;
import org.rhq.enterprise.client.ClientMain;
@@ -295,6 +295,6 @@ public class ScriptCommand implements ClientCommand {
public String getDetailedHelp() {
return "Execute a statement or a script. The following service managers are
available: "
- + Arrays.toString(RhqManagers.values());
+ + Arrays.toString(RhqManager.values());
}
}
diff --git
a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
index fe109a8..fc59cf3 100644
---
a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
+++
b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/commands/ScriptCommandTest.java
@@ -23,7 +23,7 @@ import org.rhq.enterprise.server.authz.RoleManagerRemote;
import org.rhq.enterprise.server.resource.ResourceManagerRemote;
import org.rhq.enterprise.server.resource.group.ResourceGroupManagerRemote;
import org.rhq.enterprise.server.auth.SubjectManagerRemote;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.output.TabularWriter;
import org.rhq.bindings.util.ScriptUtil;
import org.rhq.core.domain.auth.Subject;
@@ -76,7 +76,7 @@ public class ScriptCommandTest {
ScriptEngine scriptEngine = client.getScriptEngine();
List<String> mgrsNotBound = new ArrayList<String>();
- for (RhqManagers mgr : RhqManagers.values()) {
+ for (RhqManager mgr : RhqManager.values()) {
if
(!scriptEngine.getBindings(ScriptContext.ENGINE_SCOPE).containsKey(mgr.name())) {
mgrsNotBound.add(mgr.remoteName());
}
diff --git
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
index d0fb529..57829b9 100644
---
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
+++
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
@@ -32,7 +32,7 @@ import org.jboss.remoting.security.SSLSocketBuilder;
import org.jboss.remoting.transport.http.ssl.HTTPSClientInvoker;
import org.rhq.bindings.client.RhqFacade;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.ProductInfo;
import org.rhq.enterprise.communications.util.SecurityUtil;
@@ -261,123 +261,123 @@ public class RemoteClient implements RhqFacade {
}
public AlertManagerRemote getAlertManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.AlertManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.AlertManager);
}
public AlertDefinitionManagerRemote getAlertDefinitionManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.AlertDefinitionManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.AlertDefinitionManager);
}
public AvailabilityManagerRemote getAvailabilityManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.AvailabilityManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.AvailabilityManager);
}
public BundleManagerRemote getBundleManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.BundleManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.BundleManager);
}
public CallTimeDataManagerRemote getCallTimeDataManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.CallTimeDataManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.CallTimeDataManager);
}
public DriftManagerRemote getDriftManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.DriftManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.DriftManager);
}
public DriftTemplateManagerRemote getDriftTemplateManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.DriftTemplateManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.DriftTemplateManager);
}
public RepoManagerRemote getRepoManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.RepoManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.RepoManager);
}
public ConfigurationManagerRemote getConfigurationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ConfigurationManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ConfigurationManager);
}
public ContentManagerRemote getContentManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ContentManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ContentManager);
}
public DataAccessManagerRemote getDataAccessManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.DataAccessManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.DataAccessManager);
}
public DiscoveryBossRemote getDiscoveryBoss() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.DiscoveryBoss);
+ return RemoteClientProxy.getProcessor(this, RhqManager.DiscoveryBoss);
}
public EventManagerRemote getEventManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.EventManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.EventManager);
}
public MeasurementBaselineManagerRemote getMeasurementBaselineManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManagers.MeasurementBaselineManager);
+ return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementBaselineManager);
}
public MeasurementDataManagerRemote getMeasurementDataManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.MeasurementDataManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.MeasurementDataManager);
}
public MeasurementDefinitionManagerRemote getMeasurementDefinitionManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManagers.MeasurementDefinitionManager);
+ return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementDefinitionManager);
}
public MeasurementScheduleManagerRemote getMeasurementScheduleManager() {
- return RemoteClientProxy.getProcessor(this,
RhqManagers.MeasurementScheduleManager);
+ return RemoteClientProxy.getProcessor(this,
RhqManager.MeasurementScheduleManager);
}
public OperationManagerRemote getOperationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.OperationManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.OperationManager);
}
public ResourceManagerRemote getResourceManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ResourceManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ResourceManager);
}
public ResourceFactoryManagerRemote getResourceFactoryManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ResourceFactoryManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ResourceFactoryManager);
}
public ResourceGroupManagerRemote getResourceGroupManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ResourceGroupManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ResourceGroupManager);
}
public ResourceTypeManagerRemote getResourceTypeManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.ResourceTypeManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.ResourceTypeManager);
}
public RoleManagerRemote getRoleManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.RoleManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.RoleManager);
}
public SavedSearchManagerRemote getSavedSearchManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.SavedSearchManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.SavedSearchManager);
}
public SubjectManagerRemote getSubjectManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.SubjectManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.SubjectManager);
}
public SupportManagerRemote getSupportManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.SupportManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.SupportManager);
}
public SystemManagerRemote getSystemManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.SystemManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.SystemManager);
}
public RemoteInstallManagerRemote getRemoteInstallManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.RemoteInstallManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.RemoteInstallManager);
}
public TagManagerRemote getTagManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.TagManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.TagManager);
}
public SynchronizationManagerRemote getSynchronizationManager() {
- return RemoteClientProxy.getProcessor(this, RhqManagers.SynchronizationManager);
+ return RemoteClientProxy.getProcessor(this, RhqManager.SynchronizationManager);
}
/**
@@ -391,7 +391,7 @@ public class RemoteClient implements RhqFacade {
this.managers = new HashMap<String, Object>();
- for (RhqManagers manager : RhqManagers.values()) {
+ for (RhqManager manager : RhqManager.values()) {
try {
Method m = this.getClass().getMethod("get" +
manager.name());
if (manager.enabled()) {
diff --git
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
index e9751c2..23dea3c 100644
---
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
+++
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java
@@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.remoting.invocation.NameBasedInvocation;
import org.rhq.bindings.client.AbstractRhqFacadeProxy;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.util.InterfaceSimplifier;
import org.rhq.core.domain.server.ExternalizableStrategy;
@@ -42,7 +42,7 @@ public class RemoteClientProxy extends
AbstractRhqFacadeProxy<RemoteClient> {
private static final Log LOG = LogFactory.getLog(RemoteClientProxy.class);
- public RemoteClientProxy(RemoteClient client, RhqManagers manager) {
+ public RemoteClientProxy(RemoteClient client, RhqManager manager) {
super(client, manager);
}
@@ -51,7 +51,7 @@ public class RemoteClientProxy extends
AbstractRhqFacadeProxy<RemoteClient> {
}
@SuppressWarnings("unchecked")
- public static <T> T getProcessor(RemoteClient remoteClient, RhqManagers
manager) {
+ public static <T> T getProcessor(RemoteClient remoteClient, RhqManager manager)
{
try {
RemoteClientProxy gpc = new RemoteClientProxy(remoteClient, manager);
diff --git
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
index 2e48048..dbb4424 100644
---
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
+++
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClient.java
@@ -31,7 +31,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.bindings.client.RhqFacade;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
import org.rhq.bindings.util.InterfaceSimplifier;
import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
@@ -416,7 +416,7 @@ public class LocalClient implements RhqFacade {
managers = new HashMap<String, Object>();
- for (RhqManagers manager : RhqManagers.values()) {
+ for (RhqManager manager : RhqManager.values()) {
try {
Method m = getClass().getMethod("get" + manager.name());
managers.put(manager.name(), m.invoke(this));
@@ -430,7 +430,7 @@ public class LocalClient implements RhqFacade {
}
private <T> T getProxy(Object slsb, Class<T> iface) {
- RhqManagers manager = RhqManagers.forInterface(iface);
+ RhqManager manager = RhqManager.forInterface(iface);
Class<?> simplified = null;
diff --git
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
index e9f1e4d..67bd5e7 100644
---
a/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
+++
b/modules/enterprise/server/client-api/src/main/java/org/rhq/enterprise/client/LocalClientProxy.java
@@ -28,7 +28,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.bindings.client.AbstractRhqFacadeProxy;
-import org.rhq.bindings.client.RhqManagers;
+import org.rhq.bindings.client.RhqManager;
/**
* This is a proxy interface that simply calls given (de-simplified) method on a provided
object.
@@ -42,7 +42,7 @@ public class LocalClientProxy extends
AbstractRhqFacadeProxy<LocalClient> {
private Object localSLSB;
- public LocalClientProxy(Object localSLSB, LocalClient client, RhqManagers manager) {
+ public LocalClientProxy(Object localSLSB, LocalClient client, RhqManager manager) {
super(client, manager);
this.localSLSB = localSLSB;
}
commit 573dd3715035d095bd65f823dc9539e72a27fbe9
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 20 09:22:03 2012 +0200
Making it all compile again and provide basic abstractions to cut the code completion
out of the CLI.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
index da544c4..05e6a09 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/StandardBindings.java
@@ -133,13 +133,11 @@ public class StandardBindings extends HashMap<String, Object>
{
putAll(managers);
}
- @Override
public void preInject(ScriptEngine scriptEngine) {
((ScriptUtil) get(SCRIPT_UTIL)).init(scriptEngine);
((ScriptAssert) get(ASSERT)).init(scriptEngine);
}
- @Override
public void postInject(ScriptEngine scriptEngine) {
ScriptEngineFactory.bindIndirectionMethods(scriptEngine, SCRIPT_UTIL);
ScriptEngineFactory.bindIndirectionMethods(scriptEngine, ASSERT);
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 7ebe141..4a1ed62 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -22,6 +22,9 @@
*/
package org.rhq.enterprise.client;
+import gnu.getopt.Getopt;
+import gnu.getopt.LongOpt;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
@@ -34,6 +37,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+
import gnu.getopt.Getopt;
import gnu.getopt.LongOpt;
@@ -44,6 +50,8 @@ import jline.MultiCompletor;
import jline.SimpleCompletor;
import mazz.i18n.Msg;
+import org.rhq.bindings.ScriptEngineFactory;
+import org.rhq.bindings.util.PackageFinder;
import org.rhq.core.domain.auth.Subject;
import org.rhq.enterprise.client.commands.ClientCommand;
import org.rhq.enterprise.client.commands.ScriptCommand;
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
index f51e148..0f1b232 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/InteractiveJavascriptCompletor.java
@@ -91,6 +91,7 @@ public class InteractiveJavascriptCompletor implements Completor {
this.services = services;
}
+ @Override
@SuppressWarnings("unchecked")
public int complete(String s, int i, @SuppressWarnings("rawtypes") List
list) {
try {
@@ -168,7 +169,7 @@ public class InteractiveJavascriptCompletor implements Completor {
* @param list
* @return location of relative completion
*/
- public int contextComplete(Object baseObject, String s, int i, List<String>
list) {
+ private int contextComplete(Object baseObject, String s, int i, List<String>
list) {
String temp = s.split("\\(", 2)[0];
if (temp.contains(".")) {
String[] call = temp.split("\\.", 2);
diff --git a/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
b/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
index ecf304e..202bef7 100644
--- a/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
+++ b/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
@@ -67,6 +67,10 @@
<copy
file="${settings.localRepository}/net/sf/opencsv/opencsv/${opencsv.version}/opencsv-${opencsv.version}.jar"
tofile="${lib.home}/opencsv-${opencsv.version}.jar" verbose="true"
/>
<copy
file="${settings.localRepository}/org/rhq/rhq-script-bindings/${project.version}/rhq-script-bindings-${project.version}.jar"
tofile="${lib.home}/rhq-script-bindings-${project.version}.jar"
verbose="true" />
<copy
file="${settings.localRepository}/hibernate-annotations/hibernate-annotations/${hibernate-annotations.version}/hibernate-annotations-${hibernate-annotations.version}.jar"
todir="${lib.home}" verbose="true" />
+
+ <copy
file="${settings.localRepository}/org/rhq/rhq-scripting-api/${project.version}/rhq-scripting-api-${project.version}.jar"
tofile="${lib.home}/rhq-scripting-api-${project.version}.jar"
verbose="true" />
+ <copy
file="${settings.localRepository}/org/rhq/rhq-scripting-javascript/${project.version}/rhq-scripting-javascript-${project.version}.jar"
tofile="${lib.home}/rhq-scripting-javascript-${project.version}.jar"
verbose="true" />
+ <copy
file="${settings.localRepository}/org/mozilla/rhino/${rhino.version}/rhino-${rhino.version}.jar"
tofile="${lib.home}/rhino-${rhino.version}.jar" verbose="true" />
</target>
<target name="prepare-samples-dir">
diff --git
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/CodeCompletion.java
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/CodeCompletion.java
index f8beb28..2c89718 100644
---
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/CodeCompletion.java
+++
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/CodeCompletion.java
@@ -19,8 +19,11 @@
package org.rhq.scripting;
+import java.io.PrintWriter;
import java.util.List;
+import javax.script.ScriptContext;
+
/**
* An interface for performing code completion in a given language.
* This inspired by the jline's <code>Completor</code> interface but
@@ -32,8 +35,29 @@ import java.util.List;
public interface CodeCompletion {
/**
+ * The code completor can use the provided script context to find out about possible
+ * completions.
+ * <p>
+ * This method is called once before the first {@link #complete(PrintWriter, String,
int, List)} method
+ * is called.
+ *
+ * @param scriptContext
+ */
+ void setScriptContext(ScriptContext scriptContext);
+
+ /**
+ * Provides the code completion implementation with the metadata provider it can use
to
+ * format more meaningful completion hints.
+ *
+ * @param metadataProvider
+ */
+ void setMetadataProvider(MetadataProvider metadataProvider);
+
+ /**
* Generates the completion candidates and fills the supplied list with them.
*
+ * @param output the output the completor can use to write some additional
information to convey some
+ * additional info to the user
* @param context the context of the code completion, usually that is the current
* statement being edited by the user
* @param cursorPosition the position of the cursor inside the context
@@ -42,5 +66,5 @@ public interface CodeCompletion {
* @return the character index in the context for which the completion candidates
were
* actually generated (might be different from the cursorPosition).
*/
- int complete(String context, int cursorPosition,
@SuppressWarnings("rawtypes") List candidates);
+ int complete(PrintWriter output, String context, int cursorPosition,
@SuppressWarnings("rawtypes") List candidates);
}
diff --git
a/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
new file mode 100644
index 0000000..598d952
--- /dev/null
+++
b/modules/enterprise/scripting/api/src/main/java/org/rhq/scripting/MetadataProvider.java
@@ -0,0 +1,69 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.scripting;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+/**
+ * The scripting implementations don't have to supply an implementation of this
interface but
+ * rather one is provided to the {@link CodeCompletion}.
+ * <p>
+ * The code completion can ask this implementation for various metadata on methods or
classes.
+ * <p>
+ * The {@link CodeCompletion} implementations can use this information to format more
meaningful
+ * completion hints.
+ *
+ * @author Lukas Krejci
+ */
+public interface MetadataProvider {
+
+ /**
+ * Tries to determine the name of a parameter on a method.
+ *
+ * @param method the method
+ * @param parameterIndex the index of the method parameter
+ * @return The name of the parameter or null if it could not be determined
+ */
+ String getParameterName(Method method, int parameterIndex);
+
+ /**
+ * @param clazz
+ * @return the (java)doc on a class or null if none could be determined
+ */
+ String getDocumentation(Class<?> clazz);
+
+ /**
+ * @param method
+ * @return the (java)doc on a method or null if none could be determined
+ */
+ String getDocumentation(Method method);
+
+ /**
+ * This is a utility method for determining the type name including the type
parameters.
+ *
+ * @param type the type to determine the name for
+ * @param fullNames if true, all the types and type parameters will be the full class
names, otherwise
+ * only the simple name of the class / type parameter will be used.
+ * @return the name of the type including type parameters
+ */
+ String getTypeName(Type type, boolean fullNames);
+}
diff --git
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
new file mode 100644
index 0000000..d1df7f5
--- /dev/null
+++
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JavascriptCompletor.java
@@ -0,0 +1,578 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.scripting.javascript;
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
+import java.beans.PropertyDescriptor;
+import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+
+import org.rhq.scripting.CodeCompletion;
+import org.rhq.scripting.MetadataProvider;
+
+/**
+ * A Contextual JavaScript interactive completor. Not perfect, but
+ * handles a fair number of cases.
+ *
+ * @author Greg Hinkle
+ * @author Lukas Krejci
+ */
+public class JavascriptCompletor implements CodeCompletion {
+
+ private static final String SUBJECT_CLASS_NAME =
"org.rhq.core.domain.auth.Subject";
+ private ScriptContext context;
+ private MetadataProvider metadataProvider;
+
+ private String lastComplete;
+
+ // Consecutive times this exact complete has been requested
+ private int recomplete;
+
+ private static final Set<String> IGNORED_METHODS;
+ static {
+ IGNORED_METHODS = new HashSet<String>();
+ IGNORED_METHODS.add("newProxyInstance");
+ IGNORED_METHODS.add("hashCode");
+ IGNORED_METHODS.add("equals");
+ IGNORED_METHODS.add("getInvocationHandler");
+ IGNORED_METHODS.add("setHandler");
+ IGNORED_METHODS.add("isProxyClass");
+ IGNORED_METHODS.add("newProxyInstance");
+ IGNORED_METHODS.add("getProxyClass");
+ IGNORED_METHODS.add("main");
+ IGNORED_METHODS.add("handler");
+ IGNORED_METHODS.add("init");
+ IGNORED_METHODS.add("initChildren");
+ IGNORED_METHODS.add("initMeasurements");
+ IGNORED_METHODS.add("initOperations");
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public int complete(PrintWriter output, String s, int i,
@SuppressWarnings("rawtypes") List list) {
+ try {
+ if (lastComplete != null && lastComplete.equals(s)) {
+ recomplete++;
+ } else {
+ recomplete = 1;
+ }
+
+ lastComplete = s;
+
+ String base = s;
+
+ int rootLength = 0;
+
+ if (s.indexOf('=') > 0) {
+ base = s.substring(s.indexOf("=") + 1).trim();
+ rootLength = s.length() - base.length();
+ }
+
+ String[] call = base.split("\\.");
+ if (base.endsWith(".")) {
+ String[] argPadded = new String[call.length + 1];
+ System.arraycopy(call, 0, argPadded, 0, call.length);
+ argPadded[call.length] = "";
+ call = argPadded;
+ }
+
+ if (call.length == 1) {
+ Map<String, Object> matches = getContextMatches(call[0]);
+ if (matches.size() == 1 && matches.containsKey(call[0])
&& !s.endsWith(".")) {
+ list.add(".");
+ return rootLength + call[0].length() + 1;
+
+ } else {
+ list.addAll(matches.keySet());
+ }
+ } else {
+ Object rootObject = context.getAttribute(call[0]);
+ if (rootObject != null) {
+ String theRest = base.substring(call[0].length() + 1,
base.length());
+ int matchIndex = contextComplete(output, rootObject, theRest, i,
list);
+ Collections.sort(list);
+ return rootLength + call[0].length() + 1 + matchIndex;
+ }
+ }
+
+ Collections.sort(list);
+
+ return (list.size() == 0) ? (-1) : rootLength;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ }
+
+ @Override
+ public void setMetadataProvider(MetadataProvider metadataProvider) {
+ this.metadataProvider = metadataProvider;
+ }
+
+ /**
+ * Base Object can be an object where we're looking for methods on it, or an
+ * interface. This recursively works off the completions left to right.
+ *
+ * Objects can be completed with fields or method calls.
+ * method parameters are completed with type matching
+ * method result chainings are completed based on declared return types
+ *
+ * e.g. have a Resource in context as myResource. Original string is
+ * "myResource.name". This method would be called with a baseObject ==
+ * to myResource and the string "name".
+ *
+ * Note: this method will not and should not execute methods, but will
+ * read field properties to continue chained completions.
+ *
+ * @param output the output that can the completor use to convey info to the user
+ * @param baseObject the context object or class to complete from
+ * @param s the relative command string to check
+ * @param i
+ * @param list
+ * @return location of relative completion
+ */
+ private int contextComplete(PrintWriter output, Object baseObject, String s, int i,
List<String> list) {
+ String temp = s.split("\\(", 2)[0];
+ if (temp.contains(".")) {
+ String[] call = temp.split("\\.", 2);
+
+ String next = call[0];
+ if (next.contains("(")) {
+ next = next.substring(0, next.indexOf("("));
+ }
+
+ Map<String, List<Object>> matches = getContextMatches(output,
baseObject, next);
+ if (!matches.isEmpty()) {
+ Object rootObject = matches.get(next).get(0);
+ if (rootObject instanceof PropertyDescriptor && !(baseObject
instanceof Class)) {
+ try {
+ rootObject = invoke(baseObject, ((PropertyDescriptor)
rootObject).getReadMethod());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else if (rootObject instanceof Method) {
+ rootObject = ((Method) rootObject).getReturnType();
+ }
+
+ return call[0].length() + 1 + contextComplete(output, rootObject,
call[1], i, list);
+ } else {
+ return -1;
+ }
+ } else {
+ String[] call = s.split("\\(", 2);
+
+ Map<String, List<Object>> matches = getContextMatches(output,
baseObject, call[0]);
+
+ if (call.length == 2 && matches.containsKey(call[0])) {
+
+ int x = 0;
+ for (String key : matches.keySet()) {
+
+ List<Object> matchList = matches.get(key);
+
+ if (recomplete == 2) {
+ List<Method> methods = new ArrayList<Method>();
+ for (Object match : matchList) {
+ if (match instanceof Method) {
+ methods.add((Method) match);
+ }
+ }
+ displaySignatures(output, baseObject, methods.toArray(new
Method[methods.size()]));
+ return -1;
+ }
+
+ for (Object match : matchList) {
+
+ if (key.equals(call[0]) && match instanceof Method) {
+
+ int result = completeParameters(baseObject, call[1], i, list,
(Method) match); // x should be the same for all calls
+ if (result > 0) {
+ x = result;
+ }
+ }
+ }
+ }
+ return call[0].length() + 1 + x;
+ }
+
+ if (matches.size() == 1 && matches.containsKey(call[0])) {
+ if (matches.get(call[0]).get(0) instanceof Method) {
+ list.add("(" + (((Method)
matches.get(call[0]).get(0)).getParameterTypes().length == 0 ? ")" :
""));
+ }
+ return call[0].length() + 1;
+ }
+
+ if (recomplete == 2) {
+ List<Method> methods = new ArrayList<Method>();
+ for (List<Object> matchList : matches.values()) {
+ for (Object val : matchList) {
+ if (val instanceof Method) {
+ methods.add((Method) val);
+ }
+ }
+ }
+ displaySignatures(output, baseObject, methods.toArray(new
Method[methods.size()]));
+ } else {
+ if (matches.size() == 1 &&
matches.values().iterator().next().get(0) instanceof Method) {
+ list.add(matches.keySet().iterator().next()
+ + "("
+ + ((((Method)
matches.values().iterator().next().get(0)).getParameterTypes().length == 0 ?
")"
+ : "")));
+ } else {
+ list.addAll(matches.keySet());
+ }
+ }
+ return 0;
+
+ }
+ }
+
+ private void displaySignatures(PrintWriter output, Object object, Method... methods)
{
+ try {
+ String[][] signatures = new String[methods.length][];
+ int i = 0;
+ for (Method m : methods) {
+ signatures[i++] = getSignature(object, m).split(" ", 2);
+ }
+
+ int maxReturnLength = 0;
+ for (String[] sig : signatures) {
+ if (sig[0].length() > maxReturnLength)
+ maxReturnLength = sig[0].length();
+ }
+
+ for (String[] sig : signatures) {
+ for (i = 0; i < (maxReturnLength - sig[0].length()); i++) {
+ output.print(" ");
+ }
+
+ output.print(sig[0]);
+ output.print(" ");
+ output.print(sig[1]);
+ output.println();
+ }
+ } catch (Exception e) {
+ e.printStackTrace(output);
+ }
+ }
+
+ /**
+ * Split apart the parameters to a method call and complete the last parameter. If
the last
+ * paramater has a valid value close that field with a "," for the next
param or a ")" if is
+ * the last parameter. Does all machting according to the type of the parameters of
the
+ * supplied method.
+ *
+ * @param baseObject
+ * @param params
+ * @param i
+ * @param list
+ * @param method
+ * @return
+ */
+ public int completeParameters(Object baseObject, String params, int i,
List<String> list, Method method) {
+
+ String[] paramList = params.split(",");
+
+ Class<?>[] c = method.getParameterTypes();
+
+ String lastParam = paramList[paramList.length - 1];
+ int paramIndex = paramList.length - 1;
+ if (params.trim().endsWith(",")) {
+ lastParam = "";
+ paramIndex++;
+ }
+
+ int baseLength = 0;
+
+ for (int x = 0; x < paramIndex; x++) {
+ Object paramFound = context.getAttribute(paramList[x]);
+
+ if (paramFound != null &&
!c[x].isAssignableFrom(paramFound.getClass())) {
+ return -1;
+ }
+ baseLength += paramList[x].length() + 1;
+ }
+
+ if (paramIndex >= c.length) {
+ if (params.endsWith(")")) {
+ return -1;
+ } else {
+ list.add(params + ")");
+ return (params + ")").length();
+ }
+ } else {
+
+ if (baseObject instanceof Map &&
method.getName().equals("get") && method.getParameterTypes().length ==
1) {
+ //unused Class<?> keyType = method.getParameterTypes()[0];
+ for (Object key : ((Map<?, ?>) baseObject).keySet()) {
+ String lookupChoice = "\'" + String.valueOf(key) +
"\'";
+ if (lookupChoice.startsWith(lastParam)) {
+ list.add(lookupChoice);
+ }
+ }
+ if (list.size() == 1) {
+ list.set(0, list.get(0) + ")");
+ }
+
+ } else {
+ Class<?> parameterType = c[paramIndex];
+
+ Map<String, Object> matches = getContextMatches(lastParam,
parameterType);
+
+ if (matches.size() == 1 && matches.containsKey(lastParam)) {
+
+ list.add(paramIndex == c.length - 1 ? ")" :
",");
+ return baseLength + lastParam.length();
+ } else {
+ list.addAll(matches.keySet());
+ }
+ }
+
+ return baseLength;
+ }
+ }
+
+ private Map<String, Object> getContextMatches(String start) {
+ Map<String, Object> found = new HashMap<String, Object>();
+ if (context != null) {
+ for (Integer scope : context.getScopes()) {
+ Bindings bindings = context.getBindings(scope);
+ for (String var : bindings.keySet()) {
+ if (var.startsWith(start)) {
+ found.put(var, bindings.get(var));
+ }
+ }
+ }
+ }
+
+ //this was originally part of the code completor that lived in the CLI
+ //I don't think we need it, because the services are present under the
+ //same names in the context. This code can never add any new matches.
+ /*
+ if (services != null) {
+ for (String var : services.keySet()) {
+ if (var.startsWith(start)) {
+ found.put(var, services.get(var));
+ }
+ }
+ }
+ */
+
+ return found;
+ }
+
+ /**
+ * Look through all available contexts to find bindings that both start with
+ * the supplied start and match the typeFilter.
+ * @param start
+ * @param typeFilter
+ * @return
+ */
+ private Map<String, Object> getContextMatches(String start, Class<?>
typeFilter) {
+ Map<String, Object> found = new HashMap<String, Object>();
+ if (context != null) {
+ for (int scope : context.getScopes()) {
+ Bindings bindings = context.getBindings(scope);
+ for (String var : bindings.keySet()) {
+ if (var.startsWith(start)) {
+
+ if ((bindings.get(var) != null &&
typeFilter.isAssignableFrom(bindings.get(var).getClass()))
+ || recomplete == 3) {
+ found.put(var, bindings.get(var));
+ }
+ }
+ }
+ }
+
+ if (typeFilter.isEnum()) {
+ for (Object ec : typeFilter.getEnumConstants()) {
+ Enum<?> e = (Enum<?>) ec;
+ String code = typeFilter.getSimpleName() + "." + e.name();
+ if (code.startsWith(start)) {
+ found.put(typeFilter.getSimpleName() + "." + e.name(),
e);
+ }
+ }
+ }
+ }
+ return found;
+ }
+
+ private Map<String, List<Object>> getContextMatches(PrintWriter output,
Object baseObject, String start) {
+ Map<String, List<Object>> found = new HashMap<String,
List<Object>>();
+
+ Class<?> baseObjectClass = null;
+ if (baseObject instanceof Class) {
+ baseObjectClass = (Class<?>) baseObject;
+ } else {
+ baseObjectClass = baseObject.getClass();
+ }
+
+ try {
+ if (baseObjectClass.equals(Void.TYPE))
+ return found;
+
+ BeanInfo info = null;
+ if (baseObjectClass.isInterface() || baseObjectClass.equals(Object.class)) {
+ info = Introspector.getBeanInfo(baseObjectClass);
+ } else {
+ info = Introspector.getBeanInfo(baseObjectClass, Object.class);
+ }
+
+ Set<Method> methodsCovered = new HashSet<Method>();
+
+ PropertyDescriptor[] descriptors = info.getPropertyDescriptors();
+ for (PropertyDescriptor desc : descriptors) {
+ if (desc.getName().startsWith(start) &&
(!IGNORED_METHODS.contains(desc.getName()))) {
+
+ List<Object> list = found.get(desc.getName());
+ if (list == null) {
+ list = new ArrayList<Object>();
+ found.put(desc.getName(), list);
+ }
+ list.add(desc);
+
+ methodsCovered.add(desc.getReadMethod());
+ methodsCovered.add(desc.getWriteMethod());
+ }
+ }
+
+ MethodDescriptor[] methods = info.getMethodDescriptors();
+ for (MethodDescriptor desc : methods) {
+ if (desc.getName().startsWith(start) &&
!methodsCovered.contains(desc.getMethod())
+ && !desc.getName().startsWith("_d") &&
!IGNORED_METHODS.contains(desc.getName())) {
+
+ Method m = desc.getMethod();
+ //TODO THIS IS SO WRONG - the methods are there but we just
"forget" to
+ //to mention them to the user.
+ boolean isProxy = isProxyMethod(baseObject, m);
+ Class<?>[] parameters = m.getParameterTypes();
+ boolean startsWithSubject = ((parameters.length > 0) &&
isSubjectClass(parameters[0]));
+ if ((isProxy && startsWithSubject) || !startsWithSubject) {
+
+ List<Object> list = found.get(desc.getName());
+ if (list == null) {
+ list = new ArrayList<Object>();
+ found.put(desc.getName(), list);
+ }
+ list.add(m);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace(output);
+ }
+ return found;
+ }
+
+ private String getSignature(Object object, Method m) {
+
+ StringBuilder buf = new StringBuilder();
+ Type[] params = m.getGenericParameterTypes();
+ int i = 0;
+
+ buf.append(metadataProvider.getTypeName(m.getGenericReturnType(), false));
+ buf.append(" ");
+
+ buf.append(m.getName());
+ buf.append("(");
+ boolean first = true;
+ for (Type type : params) {
+ if (!first) {
+ buf.append(", ");
+ } else {
+ first = false;
+ }
+
+ String name = metadataProvider.getTypeName(type, false);
+ String paramName = metadataProvider.getParameterName(m, i);
+ if (paramName != null) {
+ name += " " + paramName;
+ }
+
+ buf.append(name);
+
+ i++;
+ }
+ buf.append(")");
+ return buf.toString();
+ }
+
+ private static boolean isProxyMethod(Object object, Method m) {
+ // TODO this has to be changed - we have the MetaDataProvider which should be
able
+ // to provide enough info so that the completors don't have to go through
these hoops.
+ return false;
+
+ // boolean result = false;
+ // if (object instanceof Proxy) {
+ // if (Proxy.getInvocationHandler(object) instanceof
RemoteClientProxy) {
+ // try {
+ // m =
+ // ((RemoteClientProxy)
Proxy.getInvocationHandler(object)).getRemoteInterface()
+ // .getDeclaredMethod(m.getName(),
m.getParameterTypes());
+ // } catch (NoSuchMethodException e) {
+ // result = true;
+ // }
+ // }
+ // }
+ // return result;
+ }
+
+ @Override
+ public void setScriptContext(ScriptContext context) {
+ this.context = context;
+ }
+
+ private static Object invoke(Object o, Method m) throws IllegalAccessException,
InvocationTargetException {
+ boolean access = m.isAccessible();
+ m.setAccessible(true);
+ try {
+ return m.invoke(o);
+ } finally {
+ m.setAccessible(access);
+ }
+ }
+
+ private boolean isSubjectClass(Class<?> cls) {
+ while (cls != null) {
+ if (SUBJECT_CLASS_NAME.equals(cls.getName())) {
+ return true;
+ }
+
+ cls = cls.getSuperclass();
+ }
+
+ return false;
+ }
+}
diff --git
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JsEngineProvider.java
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JsEngineProvider.java
index 984e5fc..02d54eb 100644
---
a/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JsEngineProvider.java
+++
b/modules/enterprise/scripting/javascript/src/main/java/org/rhq/scripting/javascript/JsEngineProvider.java
@@ -42,8 +42,7 @@ public class JsEngineProvider implements ScriptEngineProvider {
@Override
public CodeCompletion getCodeCompletion() {
- // TODO copy this over from the CLI
- return null;
+ return new JavascriptCompletor();
}
}
commit d35d0f2fb6ae66ed339dbe2099a9d475a3d0cea6
Merge: 6bd2fa8 bc0ab10
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Mon Jun 18 13:05:37 2012 +0200
Merge branch 'master' into lkrejci/modular-scripting
diff --cc
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 5021434,99595ab..7ebe141
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@@ -22,11 -22,7 +22,8 @@@
*/
package org.rhq.enterprise.client;
- import gnu.getopt.Getopt;
- import gnu.getopt.LongOpt;
-
import java.io.ByteArrayInputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
@@@ -37,9 -32,14 +34,9 @@@ import java.util.HashMap
import java.util.List;
import java.util.Map;
- import javax.script.ScriptEngine;
- import javax.script.ScriptException;
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.client.commands.ClientCommand;
-import org.rhq.enterprise.client.commands.ScriptCommand;
-import org.rhq.enterprise.client.script.CommandLineParseException;
-import org.rhq.enterprise.clientapi.RemoteClient;
-
+ import gnu.getopt.Getopt;
+ import gnu.getopt.LongOpt;
+
import jline.ArgumentCompletor;
import jline.Completor;
import jline.ConsoleReader;
@@@ -47,14 -47,6 +44,12 @@@ import jline.MultiCompletor
import jline.SimpleCompletor;
import mazz.i18n.Msg;
- import org.rhq.bindings.ScriptEngineFactory;
- import org.rhq.bindings.util.PackageFinder;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.enterprise.client.commands.ClientCommand;
+import org.rhq.enterprise.client.commands.ScriptCommand;
+import org.rhq.enterprise.client.script.CommandLineParseException;
+import org.rhq.enterprise.clientapi.RemoteClient;
+
/**
* @author Greg Hinkle
* @author Simeon Pinder
commit bc0ab1018da30382a30d19aa1907837c0ad121ae
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Sat Jun 16 10:49:16 2012 -0400
add needed stuff to get JBoss Nexus to accept the artifact
diff --git a/etc/rhq-ircBot/pom.xml b/etc/rhq-ircBot/pom.xml
index c747084..40b6952 100644
--- a/etc/rhq-ircBot/pom.xml
+++ b/etc/rhq-ircBot/pom.xml
@@ -13,6 +13,28 @@
<name>RHQ IRC Bot</name>
<description>an IRC bot for doing helpful stuff on the Freenode #rhq
channel</description>
+ <
url>http://www.jboss.org/rhq/</url>
+
+ <scm>
+ <
connection>scm:git:git://git.fedorahosted.org/rhq/rhq.git</connecti...
+
<
developerConnection>scm:git:ssh://git.fedorahosted.org/git/rhq/rhq.git...
+ <
url>http://git.fedorahosted.org/git/rhq/rhq.git</url>
+ </scm>
+
+ <licenses>
+ <license>
+ <name>GPL</name>
+ <
url>http://www.gnu.org/licenses/gpl.html</url>
+ </license>
+ </licenses>
+
+ <developers>
+ <developer>
+ <name>Ian Springer</name>
+ <timezone>-5</timezone>
+ <
url>http://freshjava.blogspot.com/</url>
+ </developer>
+ </developers>
<dependencies>
@@ -72,10 +94,37 @@
</executions>
</plugin>
- </plugins>
+ <plugin>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
</build>
+ <distributionManagement>
+
+ <snapshotRepository>
+ <id>jboss-snapshots-repository</id>
+ <name>JBoss Snapshots Repository</name>
+
<
url>https://repository.jboss.org/nexus/content/repositories/snapshots/...
+ </snapshotRepository>
+
+ <repository>
+ <id>jboss-releases-repository</id>
+ <name>JBoss Releases Repository</name>
+
<
url>https://repository.jboss.org/nexus/service/local/staging/deploy/ma...
+ </repository>
+
+ </distributionManagement>
+
</project>
commit a8af1970fd5bec8e03a8e186f4b43f46becd207e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Jun 16 15:17:00 2012 +0200
Display availability history.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index b76d7d1..c0efed4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -47,6 +47,7 @@ import javax.ws.rs.core.UriInfo;
import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.criteria.AlertCriteria;
+import org.rhq.core.domain.criteria.AvailabilityCriteria;
import org.rhq.core.domain.discovery.AvailabilityReport;
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
@@ -59,6 +60,7 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
import org.rhq.enterprise.server.core.AgentManagerLocal;
@@ -207,6 +209,47 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
}
@Override
+ public Response getAvailabilityHistory(int resourceId, long start, long end,
HttpHeaders headers) {
+ if (end==0)
+ end = System.currentTimeMillis();
+
+ if (start==0)
+ start = end - (30*86400*1000L); // 30 days
+
+ AvailabilityCriteria criteria = new AvailabilityCriteria();
+ criteria.addFilterInterval(start,end);
+ criteria.addFilterResourceId(resourceId);
+ criteria.addSortStartTime(PageOrdering.DESC);
+ List<Availability> points =
availMgr.findAvailabilityByCriteria(caller,criteria);
+ List<AvailabilityRest> ret = new
ArrayList<AvailabilityRest>(points.size());
+ for (Availability avail : points) {
+ AvailabilityRest availabilityRest;
+ if (avail.getAvailabilityType() != null) {
+ availabilityRest = new AvailabilityRest(avail.getAvailabilityType(),
avail.getStartTime(), avail
+ .getResource().getId());
+ }
+ else {
+ availabilityRest = new AvailabilityRest(avail.getStartTime(),
resourceId);
+ }
+ if (avail.getEndTime()!=null)
+ availabilityRest.setUntil(avail.getEndTime());
+ ret.add(availabilityRest);
+ }
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("listAvailability.ftl",ret),
mediaType);
+ } else {
+ GenericEntity<List<AvailabilityRest>> availabilityRest = new
GenericEntity<List<AvailabilityRest>>(ret) {};
+ builder = Response.ok(availabilityRest);
+ }
+ return builder.build();
+
+ }
+
+
+ @Override
public void reportAvailability(int resourceId, AvailabilityRest avail) {
if (avail.getResourceId() != resourceId)
throw new IllegalArgumentException("Resource Ids do not match");
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
index 7ae0c0b..867a0e4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -90,7 +90,6 @@ public interface ResourceHandlerLocal {
ResourceWithChildren getHierarchy(
@ApiParam("Id of the resource to start with")
@PathParam("id")int baseResourceId);
- @LinkResource(rel = "availability", value = AvailabilityRest.class)
@GET
@Path("/{id}/availability")
@ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
@@ -98,6 +97,17 @@ public interface ResourceHandlerLocal {
Response getAvailability(
@ApiParam("Id of the resource to query") @PathParam("id")
int resourceId, @Context HttpHeaders headers);
+ @GET
+ @Path("/{id}/availability/history")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ @ApiOperation(value = "Return the availability history for the passed
resource", responseClass = "AvailabilityRest", multiValueResponse = true)
+ Response getAvailabilityHistory(
+ @ApiParam("Id of the resource to query") @PathParam("id")
int resourceId,
+ @ApiParam(value="Start time", defaultValue = "30 days
ago") @QueryParam("start") long start,
+ @ApiParam(value="End time", defaultValue = "Now")
@QueryParam("end") long end,
+
+ @Context HttpHeaders headers);
+
@PUT
@Path("/{id}/availability")
@ApiOperation("Set the current availability of the passed resource")
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AvailabilityRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AvailabilityRest.java
index 2534198..2710660 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AvailabilityRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AvailabilityRest.java
@@ -35,6 +35,7 @@ public class AvailabilityRest {
long since;
String type;
+ Long until;
int resourceId;
@@ -80,4 +81,12 @@ public class AvailabilityRest {
public void setResourceId(int resourceId) {
this.resourceId = resourceId;
}
+
+ public Long getUntil() {
+ return until;
+ }
+
+ public void setUntil(Long until) {
+ this.until = until;
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
index d02558a..388d761 100644
--- a/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
@@ -22,5 +22,9 @@
<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.AvailabilityRest" -->
State: ${var.type}<br/>
-Since: ${var.since?number_to_time}
+Since: ${var.since?number_to_datetime}
+<#if var.until?has_content>
+ until ${var.until?number_to_datetime}
+</#if>
+<br/>
<a href="/rest/1/resource/${var.resourceId?c}.html">Back to
Resource</a>
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listAvailability.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listAvailability.ftl
new file mode 100644
index 0000000..128ea65
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listAvailability.ftl
@@ -0,0 +1,32 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="java.util.List<org.rhq.enterprise.server.rest.domain.AvailabilityRest>"
-->
+<html>
+<ul>
+ <#-- the next looks odd, but the incoming var is a list -->
+ <#list var as var>
+ <li>
+ <#include "availability.ftl"/>
+ </li>
+ </#list>
+</ul>
+<html>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
index 7e96a11..f4bfa15 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
@@ -48,5 +48,6 @@
</table>
<a
href="/rest/1/resource/${var.resourceId}/children.html">Children</a><br/>
<a
href="/rest/1/resource/${var.resourceId}/schedules.html">Schedules</a><br/>
- <a
href="/rest/1/resource/${var.resourceId}/availability.html">Availability</a><br/>
+ <a
href="/rest/1/resource/${var.resourceId}/availability.html">Current
availability</a><br/>
+ <a
href="/rest/1/resource/${var.resourceId}/availability/history.html">Availability
History</a><br/>
<a href="/rest/1/alert.html?resourceId=${var.resourceId}">Up to 20
Alerts for this resource</a>
commit fdb022dd24ced74d9682314d32c1a63e35159dba
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Jun 16 09:43:18 2012 +0200
Allow to limit alerts by prio and resource. Add linking from/to resource. Fix a bug in
the genericString template.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
index a9bcc4e..074199c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
@@ -47,6 +47,7 @@ import org.rhq.core.domain.criteria.Criteria;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
+import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerLocal;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
import org.rhq.enterprise.server.rest.domain.*;
@@ -69,7 +70,9 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
@Override
- public Response listAlerts(int page, String status, boolean slim, Long since, Request
request, UriInfo uriInfo, HttpHeaders headers) {
+ public Response listAlerts(int page, String prio, boolean slim, Long since, Integer
resourceId, Request request,
+ UriInfo uriInfo,
+ HttpHeaders headers) {
AlertCriteria criteria = new AlertCriteria();
@@ -77,6 +80,17 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
if (since!=null) {
criteria.addFilterStartTime(since);
}
+
+ if (resourceId!=null) {
+ criteria.addFilterResourceIds(resourceId);
+ }
+
+ if (!prio.equals("All")) {
+ AlertPriority alertPriority = AlertPriority.valueOf(prio.toUpperCase());
+ criteria.addFilterPriorities(alertPriority);
+ }
+ criteria.addSortCtime(PageOrdering.DESC);
+
PageList<Alert> alerts =
alertManager.findAlertsByCriteria(caller,criteria);
List<AlertRest> ret = new ArrayList<AlertRest>(alerts.size());
for (Alert al : alerts) {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
index 5fd7506..4912ca1 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
@@ -59,11 +59,13 @@ public interface AlertHandlerLocal {
@ApiOperation(value = "List all alerts", multiValueResponse = true,
responseClass = "List<AlertRest")
Response listAlerts(
@ApiParam(value = "Page number", defaultValue = "0")
@QueryParam("page") int page,
- @ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status,
+ @ApiParam(value = "Limit to priority", allowableValues =
"High, Medium, Low, All") @DefaultValue("All")
@QueryParam("prio") String prio,
@ApiParam(value = "Should full resources and definitions be sent")
@QueryParam("slim") @DefaultValue(
"false") boolean slim,
- @ApiParam(value = "If non-null only send alerts that have fired after
this time, time is millisecond since epoch")
- @QueryParam("since") Long since,
+ @ApiParam(
+ value = "If non-null only send alerts that have fired after this
time, time is millisecond since epoch")
+ @QueryParam("since") Long since,
+ @ApiParam(value = "Id of a resource to limit search for")
@QueryParam("resourceId") Integer resourceId,
@Context Request request, @Context UriInfo uriInfo, @Context HttpHeaders
headers);
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
index 05ef280..9893e8e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -21,7 +21,6 @@ package org.rhq.enterprise.server.rest;
import javax.ejb.Local;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
-import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@@ -51,7 +50,7 @@ public interface UserHandlerLocal {
@GET
@Path("favorites/resource")
- @ApiOperation(value = "Return a list of favorite resources of the caller",
multiValueResponse = true)
+ @ApiOperation(value = "Return a list of favorite resources of the caller",
multiValueResponse = true, responseClass = "ResourceWithType")
Response getFavorites(@Context UriInfo uriInfo,@Context HttpHeaders headers);
@PUT
diff --git a/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
index 60be9fc..fe60590 100644
--- a/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
@@ -31,7 +31,7 @@
</tr>
<tr>
<td>Id</td>
- <td>${var.id}</td>
+ <td>${var.id?c}</td>
</tr>
<tr>
<td>Description</td>
@@ -55,3 +55,4 @@
<a href="/rest/1/alert/${var.id?c}/definition.html">Alert
Definition</a>
<a href="/rest/1/alert/${var.id?c}/conditions.html">Condition
Logs</a>
<a href="/rest/1/alert/${var.id?c}/notifications.html">Notification
Logs</a>
+<a
href="/rest/1/resource/${var.resource.getResourceId()}.html">Resource</a>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
index d0ad8a2..af116af 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
@@ -21,7 +21,7 @@
-->
<#-- @ftlvariable name="var" type="java.util.List<String>"
-->
<ul>
- <#if var.isEmpty()>
+ <#if (var?size==0)>
<i>Nothing to display</i>
<#else>
<#list var as line>
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
index bb8f717..7e96a11 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
@@ -49,3 +49,4 @@
<a
href="/rest/1/resource/${var.resourceId}/children.html">Children</a><br/>
<a
href="/rest/1/resource/${var.resourceId}/schedules.html">Schedules</a><br/>
<a
href="/rest/1/resource/${var.resourceId}/availability.html">Availability</a><br/>
+ <a href="/rest/1/alert.html?resourceId=${var.resourceId}">Up to 20
Alerts for this resource</a>
commit 66fd59f643fdf8f39f199129711d77dfbd5ccbc7
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 15 17:29:41 2012 -0400
[BZ 535514] remote client will not connect to the server if the server is not
supported. for this commit, "not supported" means the server and cli/remote
client aren't the same version.
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/LoginCommand.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/LoginCommand.java
index 97221af..17cf94e 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/LoginCommand.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/LoginCommand.java
@@ -24,7 +24,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.auth.Subject;
-import org.rhq.core.domain.common.ProductInfo;
import org.rhq.enterprise.client.ClientMain;
import org.rhq.enterprise.client.script.CommandLineParseException;
import org.rhq.enterprise.clientapi.RemoteClient;
@@ -111,8 +110,7 @@ public class LoginCommand implements ClientCommand {
Subject subject = remoteClient.login(username, password);
- ProductInfo info = remoteClient.getSystemManager().getProductInfo(subject);
- String version = info.getVersion() + " (" + info.getBuildNumber() +
")";
+ String version = remoteClient.getServerVersion() + " (" +
remoteClient.getServerBuildNumber() + ")";
client.getPrintWriter().println("Remote server version is: " +
version);
// this call has the side effect of setting bindings for the new remote client
and its subject
diff --git
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
index 0ec565e..d0fb529 100644
---
a/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
+++
b/modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClient.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.maven.artifact.versioning.ComparableVersion;
import org.jboss.remoting.Client;
import org.jboss.remoting.InvokerLocator;
@@ -33,6 +34,7 @@ import org.jboss.remoting.transport.http.ssl.HTTPSClientInvoker;
import org.rhq.bindings.client.RhqFacade;
import org.rhq.bindings.client.RhqManagers;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.common.ProductInfo;
import org.rhq.enterprise.communications.util.SecurityUtil;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerRemote;
import org.rhq.enterprise.server.alert.AlertManagerRemote;
@@ -89,6 +91,7 @@ public class RemoteClient implements RhqFacade {
private Subject subject;
private Client remotingClient;
private String subsystem = null;
+ private ProductInfo serverInfo = null;
/**
* Creates a client that will communicate with the server running on the given host
@@ -422,6 +425,24 @@ public class RemoteClient implements RhqFacade {
return this.remotingClient;
}
+ /**
+ * If the client is connected, this is version of the server that the client is
talking to.
+ *
+ * @return remote server version
+ */
+ public String getServerVersion() {
+ return (this.serverInfo != null) ? this.serverInfo.getVersion() : null;
+ }
+
+ /**
+ * If the client is connected, this is build number of the server that the client is
talking to.
+ *
+ * @return remote server build number
+ */
+ public String getServerBuildNumber() {
+ return (this.serverInfo != null) ? this.serverInfo.getBuildNumber() : null;
+ }
+
private void doDisconnect() {
try {
if (this.remotingClient != null && this.remotingClient.isConnected())
{
@@ -431,6 +452,7 @@ public class RemoteClient implements RhqFacade {
LOG.warn(e); // TODO what to do here?
} finally {
this.remotingClient = null;
+ this.serverInfo = null;
}
}
@@ -446,6 +468,16 @@ public class RemoteClient implements RhqFacade {
Map<String, String> remotingConfig = buildRemotingConfig(locatorURI);
this.remotingClient = new Client(locator, subsystem, remotingConfig);
this.remotingClient.connect();
+
+ // make sure the remote server can support this client
+ this.serverInfo = getSystemManager().getProductInfo(subject);
+ try {
+ checkServerSupported(this.serverInfo);
+ } catch (Exception e) {
+ // our client cannot be supported by the server - disconnect and rethrow the
exception
+ doDisconnect();
+ throw e;
+ }
}
private Map<String, String> buildRemotingConfig(String locatorURI) {
@@ -503,4 +535,43 @@ public class RemoteClient implements RhqFacade {
}
return;
}
+
+ /**
+ * Checks to see if the server (whose version information is passed in) supports this
client.
+ * This performs version checks and throws an IllegalStateException if the server
does not
+ * support this client.
+ *
+ * @param serverVersionInfo the information about the remote server
+ *
+ * @throws IllegalStateException if the remote server does not support this client
+ */
+ private void checkServerSupported(ProductInfo serverVersionInfo) throws
IllegalStateException {
+ boolean supported;
+ String clientVersionString;
+ String serverVersionString;
+
+ try {
+ clientVersionString = getClass().getPackage().getImplementationVersion();
+ serverVersionString = this.serverInfo.getVersion();
+ ComparableVersion clientVersion = new
ComparableVersion(clientVersionString);
+ ComparableVersion serverVersion = new
ComparableVersion(serverVersionString);
+ supported = clientVersion.equals(serverVersion);
+ } catch (Exception e) {
+ throw new IllegalStateException("Cannot determine if server version is
supported.", e); // assume we can't talk to it
+ }
+
+ if (!supported) {
+ String errMsg = "This client [" + clientVersionString + "]
does not support the remote server ["
+ + serverVersionString + "]";
+
+ final String propName = "rhq.client.version-check";
+ String versionCheckProp = System.getProperty(propName, "true");
+ if (versionCheckProp.equalsIgnoreCase("true")) {
+ throw new IllegalStateException(errMsg);
+ } else {
+ LOG.error(errMsg + " - '" + propName
+ + "' was not set to true so this client will be allowed to
continue but expect errors");
+ }
+ }
+ }
}
\ No newline at end of file
commit 350b123ae5afb4248eb2936656744112c3950359
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 15 15:53:37 2012 -0400
[831272 - remove all attempts at pluralization to fix i18n messages]
Get rid of the bogus message construction. Also, fix up some I18N stuff.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
index e3ff089..795c55e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
@@ -18,12 +18,16 @@
*/
package org.rhq.enterprise.gui.coregui.client.admin.roles;
+import java.util.ArrayList;
+import java.util.List;
+
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
+
import org.rhq.enterprise.gui.coregui.client.IconEnum;
import org.rhq.enterprise.gui.coregui.client.admin.AdministrationView;
import org.rhq.enterprise.gui.coregui.client.components.table.EscapedHtmlCellFormatter;
@@ -32,9 +36,6 @@ import
org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import org.rhq.enterprise.gui.coregui.client.components.view.HasViewName;
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* A table that lists all roles and provides the ability to view details of or delete
those roles and to create new
* roles.
@@ -49,7 +50,6 @@ public class RolesView extends TableSection<RolesDataSource>
implements HasViewN
public static final String VIEW_PATH = AdministrationView.VIEW_ID + "/"
+ AdministrationView.SECTION_SECURITY_VIEW_ID + "/" + VIEW_ID;
-
private boolean hasManageSecurity;
public RolesView(String locatorId, boolean hasManageSecurity) {
@@ -58,10 +58,10 @@ public class RolesView extends TableSection<RolesDataSource>
implements HasViewN
final RolesDataSource datasource = RolesDataSource.getInstance();
setDataSource(datasource);
setEscapeHtmlInDetailsLinkColumn(true);
-
+
this.hasManageSecurity = hasManageSecurity;
}
-
+
@Override
protected void configureTable() {
updateSelectionStyle();
@@ -161,13 +161,8 @@ public class RolesView extends TableSection<RolesDataSource>
implements HasViewN
}
@Override
- protected String getDataTypeName() {
- return MSG.common_label_role();
- }
-
- @Override
- protected String getDataTypeNamePlural() {
- return MSG.common_label_roles();
+ protected String getDeleteConfirmMessage() {
+ return MSG.common_msg_deleteConfirm(MSG.common_label_roles());
}
@Override
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
index 6d094e9..e4485bd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
@@ -18,6 +18,9 @@
*/
package org.rhq.enterprise.gui.coregui.client.admin.users;
+import java.util.ArrayList;
+import java.util.List;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.widgets.Canvas;
@@ -25,6 +28,7 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
+
import org.rhq.core.domain.authz.Permission;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.IconEnum;
@@ -38,9 +42,6 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* A table that lists all users and provides the ability to view or edit details of
users, delete users, or create new
* users. For the logged in user to view or edit a user other than themselves, they must
possess the
@@ -227,13 +228,8 @@ public class UsersView extends TableSection<UsersDataSource>
implements HasViewN
}
@Override
- protected String getDataTypeName() {
- return MSG.common_label_user();
- }
-
- @Override
- protected String getDataTypeNamePlural() {
- return MSG.common_label_users();
+ protected String getDeleteConfirmMessage() {
+ return MSG.common_msg_deleteConfirm(MSG.common_label_users());
}
@Override
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
index 42403da..a89e1e2 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
@@ -864,17 +864,6 @@ public abstract class Carousel extends LocatableHLayout implements
RefreshableVi
}
}
- protected String getDataTypeName() {
- return "item";
- }
-
- protected String getDataTypeNamePlural() {
- return "items";
- }
-
- protected String getDeleteConfirmMessage() {
- return MSG.common_msg_deleteConfirm(getDataTypeNamePlural());
- }
// -------------- Inner utility classes ------------- //
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index 70e29d4..27692b8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -1111,10 +1111,9 @@ public class Table<DS extends RPCDataSource> extends
LocatableHLayout implements
}
if (deletedRecordNames.size() == selectedRecordCount) {
// all selected schedules were successfully deleted.
- Message message = new
Message(MSG.widget_recordEditor_info_recordsDeletedConcise(
- String.valueOf(deletedRecordNames.size()),
getDataTypeNamePlural()), MSG
-
.widget_recordEditor_info_recordsDeletedDetailed(String.valueOf(deletedRecordNames.size()),
- getDataTypeNamePlural(),
deletedRecordNames.toString()));
+ String deletedMessage =
getDeletedMessage(deletedRecordNames.size());
+ String deletedMessageDetail = deletedMessage + ": [" +
deletedRecordNames.toString() + "]";
+ Message message = new Message(deletedMessage,
deletedMessageDetail);
CoreGUI.getMessageCenter().notify(message);
refresh();
}
@@ -1124,20 +1123,18 @@ public class Table<DS extends RPCDataSource> extends
LocatableHLayout implements
}, requestProperties);
}
- protected String getDataTypeName() {
- return "item";
- }
-
- protected String getDataTypeNamePlural() {
- return "items";
- }
-
protected String getTitleFieldName() {
return FIELD_NAME;
}
+ protected String getDeletedMessage(int numDeleted) {
+ String num = String.valueOf(numDeleted);
+ String thing = (1 == numDeleted) ? MSG.common_label_item() :
MSG.common_label_items();
+ return MSG.common_msg_deleted(num, thing);
+ }
+
protected String getDeleteConfirmMessage() {
- return MSG.common_msg_deleteConfirm(getDataTypeNamePlural());
+ return MSG.common_msg_deleteConfirm(MSG.common_label_items());
}
protected void hideField(ListGridField field) {
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 8d228e8..e8d267b 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -83,6 +83,7 @@ common_msg_areYouSure = Are You Sure?
common_msg_asyncTimeout = {0}. This occurred because the server is taking a long time to
complete this request. Please be aware that the server may still be processing your
request and it may complete shortly. You can check the server logs to see if any abnormal
errors occurred.
common_msg_changeAutoDetected = Change auto-detected
common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+common_msg_deleted = {0} {1} deleted.
common_msg_emphasizedNotePrefix = NOTE:
common_msg_loading = Loading...
common_msg_noItemsToShow = No items to show
@@ -2000,8 +2001,6 @@ widget_recordEditor_info_recordCreatedConcise = {0} created.
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
widget_recordEditor_info_recordUpdatedConcise = {0} updated.
widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
widget_recordEditor_title_edit = Edit {0} [{1}]
widget_recordEditor_title_new = Create New {0}
widget_recordEditor_title_view = View {0} [{1}]
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index edf2e50..f02b83b 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -106,6 +106,7 @@ common_msg_areYouSure = Jste si jistí?
common_msg_asyncTimeout = {0}. Stalo se to, protože serveru trvalo příliš dlouho k
vyřízení požadavku. Prosím, vemte na vědomí, že server může stále vyřizovat Váš požadavek.
Můžete zkontrolovat logy serveru, zda nenajdete něco neobvyklého.
common_msg_changeAutoDetected = Změnit automaticky detekované
common_msg_deleteConfirm = Jste si jistí, že chcete smazat # vybraných {0}?
+common_msg_deleted = {0} {1} smazáno.
common_msg_emphasizedNotePrefix = POZNÁMKA:
common_msg_loading = Nahrávám...
common_msg_noItemsToShow = Žádné položky k zobrazení
@@ -1562,6 +1563,7 @@ view_inventory_resources_deleteFailed = Nepodařilo se odstranit
vybrané zdroje
view_inventory_resources_deleteSuccessful = Požadavek na smazání zdroje byl úspěšně
předán všem agentům.
view_inventory_resources_disableConfirm = Jste si jisti, že chcete zneplatnit vybrané
zdroje? Při zneplatnění jsou hlášení o dostupnosti zdroje ignorovány. Zneplatňování může
být užitečné při údržbě systému, kdy se předpokládá, že zdroje nebudou fungovat (plánovaný
restart apod.)
view_inventory_resources_disableFailed = Nepodařilo se zneplatnit vybrané zdroje.
+view_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
view_inventory_resources_enableConfirm = Jste si jisti, že chcete povolit vybrané zdroje?
Při povolení se dostupnost nastaví na neznámou (UNKNOWN) dokud neproběhne další agentovo
hlášení o dostupnosti zdrojů. Agenti budou požádáni o tento report co nejdříve.
view_inventory_resources_enableFailed = Nepodařilo se povolit vybrané zdroje.
view_inventory_resources_enableSuccessful = Úspěšně jste povolili vybrané zdroje a jejich
potomky, [{0}] zdrojů.
@@ -1979,7 +1981,6 @@ view_upload_tooltip_1b = Vyberte soubor k uploadu a klikněte na
Další
view_upload_tooltip_2 = Upload souboru minule selhal
view_upload_upload = Upload
view_upload_uploadFile = Upload souboru
-vview_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
widget_colorPicker_tooltip = Klikněte pro výběr nové barvy
widget_durationItem_inputUnitLessThanTargetUnit = Vstupní jednotka je menší než cílová
jednotka.
widget_durationItem_unitTypeNotSupported = Typ jednotek [{0}] není podporován třídou
DurationItem.
@@ -2018,8 +2019,6 @@ widget_recordEditor_info_recordCreatedConcise = {0} vytvořeno.
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] vytvořeno.
widget_recordEditor_info_recordUpdatedConcise = {0} změněno.
widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] změněno.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} smazáno.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} smazáno: {2}.
widget_recordEditor_title_edit = Editovat {0} [{1}]
widget_recordEditor_title_new = Vytvořit nový {0}
widget_recordEditor_title_view = Zobrazit {0} [{1}]
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 3806dd5..4de4df2 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -86,6 +86,7 @@ common_msg_areYouSure = Sind Sie sicher?
common_msg_asyncTimeout = {0}. Dies ist aufgetreten weil der Server lange Zeit für die
Bearbeitung der Anfrage benötigt. Bitte beachten Sie, dass der Serer eventuell Ihre
Anfrage immer noch bearbeitet und bald fertig sein kann. Sie können die Server-Logs
überprüfen, um zu sehen, ob abnormale Bedingungen aufgetreten sind.
common_msg_changeAutoDetected = Änderungen gefunden
##common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+common_msg_deleted = {0} {1} gelöscht.
common_msg_emphasizedNotePrefix = Achtung:
common_msg_loading = Laden...
common_msg_noItemsToShow = Keine Einträge vorhanden
@@ -1341,6 +1342,7 @@ view_inventory_problemGroups = Gruppen mit Problemen
##view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
##view_inventory_resources_deleteFailed = Failed to delete the selected resources
##view_inventory_resources_deleteSuccessful = A request to perform the resource deletion
has been submitted successfully to the agent(s).
+##view_inventory_resources_disableSuccessful = You have successfully disabled the
selected resources and their children, [{0}] resources.
##view_inventory_resources_loadFailed = Failed to load resource composite data
##view_inventory_resources_members = Member Resources
view_inventory_sectionHelp = In diesem Abschnitt können neu gefundene Ressourcen, sowie
Ressourcen und Gruppen im Inventar angesehen und verwaltet werden.
@@ -1780,8 +1782,6 @@ widget_recordEditor_info_recordCreatedConcise = {0} angelegt.
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] angelegt.
widget_recordEditor_info_recordUpdatedConcise = {0} aktualisiert.
widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] aktualisiert.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} gelöscht.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} gelöscht: {2}.
widget_recordEditor_title_edit = Bearbeiten {0} [{1}]
widget_recordEditor_title_new = Neue {0} anlegen
widget_recordEditor_title_view = Anzeigen {0} [{1}]
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 42b166f..ea692e6 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -86,6 +86,7 @@ common_msg_areYouSure = よろしいですか?
common_msg_asyncTimeout = {0}.
これが発生したのはサーバーがこのリクエストを完了するのに長時間経過したからです。サーバーがそのリクエストをまだ処理中で短時間で完了可能かどうか注意してください。サーバーログを調べることで異常なエラーが発生したかどうかがわかります。
common_msg_changeAutoDetected = 変更が自動検出されました
common_msg_deleteConfirm = 選択された {0} を削除してもよろしいですか
+common_msg_deleted = {0} {1} が削除されました。
common_msg_emphasizedNotePrefix = 注意:
common_msg_loading = ロード中...
common_msg_noItemsToShow = 表示する項目はありません
@@ -1987,8 +1988,6 @@ widget_recordEditor_info_recordCreatedConcise = {0} が作成されました。
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] が作成されました。
widget_recordEditor_info_recordUpdatedConcise = {0} が更新されました。
widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] が更新されました。
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} が削除されました。
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} が削除されました: {2}.
widget_recordEditor_title_edit = 編集 {0} [{1}]
widget_recordEditor_title_new = 新規作成 {0}
widget_recordEditor_title_view = 閲覧 {0} [{1}]
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index a755166..26f3ab8 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -84,6 +84,7 @@ common_msg_areYouSure = Tem certeza?
common_msg_asyncTimeout = {0}. Isso ocorre porque o servidor est\u00E1 levando muito
tempo para atender esta requisi\u00E7\u00E3o. Favor atentar para o fato de que o servidor
ainda esteja processando sua requisi\u00E7\u00E3o e pode concluir dentro de mais alguns
instantes. Voc\u00EA ainda pode verificar os logs do servidor para identificar se algum
erro anormal ocorreu.
common_msg_changeAutoDetected = Mudan\u00E7as detectadas automaticamente
common_msg_deleteConfirm = Tem certeza de que deseja excluir o # selecionado {0}?
+common_msg_deleted = {0} {1} exclu\u00EDdo.
common_msg_emphasizedNotePrefix = NOTA:
common_msg_loading = Carregando...
common_msg_noItemsToShow = N\u00E3o existem itens para apresentar
@@ -2103,8 +2104,6 @@ widget_recordEditor_info_recordCreatedConcise = {0} criado.
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] criado.
widget_recordEditor_info_recordUpdatedConcise = {0} atualizado.
widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] atualizado.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} exclu\u00EDdo.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} exclu\u00EDdo: {2}.
widget_recordEditor_title_edit = Editar {0} [{1}]
widget_recordEditor_title_new = Criar Novo {0}
widget_recordEditor_title_view = Visualizar {0} [{1}]
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index c572c62..394ecc9 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2093,7 +2093,10 @@ common_label_users = пользователи
common_label_week = неделя
common_label_yesterday = Вчера
common_msg_areYouSure = Вы уверены?
+##common_msg_asyncTimeout = {0}. This occurred because the server is taking a long time
to complete this request. Please be aware that the server may still be processing your
request and it may complete shortly. You can check the server logs to see if any abnormal
errors occurred.
common_msg_changeAutoDetected = Автообнаружение изменений
+##common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+##common_msg_deleted = {0} {1} deleted.
common_msg_emphasizedNotePrefix = Примечание\:
common_msg_loading = Загрузка...
common_msg_noItemsToShow = Отсутствуют элементы для отображения
@@ -2456,6 +2459,7 @@ view_admin_downloads_cli_version = Версия CLI
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
##view_configEdit_property = Property
##view_configEdit_unset = Unset?
+##view_inventory_resources_disableSuccessful = You have successfully disabled the
selected resources and their children, [{0}] resources.
##view_messageCenter_messageRootCause = Root Cause
##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
@@ -2464,3 +2468,7 @@ view_admin_downloads_cli_version = Версия CLI
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
+##widget_recordEditor_info_recordCreatedConcise = {0} created.
+##widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+##widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+##widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 8d22ea6..dff469a 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -83,6 +83,7 @@ common_msg_areYouSure = \u4f60\u786e\u5b9a?
common_msg_asyncTimeout = {0}.
\u56e0\u4e3a\u670d\u52a1\u5668\u54cd\u5e94\u65f6\u95f4\u592a\u957f.
\u8bf7\u6ce8\u610f\u670d\u52a1\u5668\u53ef\u80fd\u4ecd\u5728\u5904\u7406\u60a8\u7684\u8bf7\u6c42\uff0c\u5e76\u53ef\u80fd\u5728\u77ed\u671f\u5185\u5b8c\u6210.
\u4f60\u53ef\u4ee5\u68c0\u67e5\u670d\u52a1\u5668\u65e5\u5fd7\uff0c\u67e5\u770b\u662f\u5426\u51fa\u73b0\u4efb\u4f55\u4e0d\u6b63\u5e38\u7684\u9519\u8bef.
##common_msg_changeAutoDetected = Change auto-detected
common_msg_deleteConfirm = \u4f60\u786e\u5b9a\u8981\u5220\u9664# selected {0}?
+##common_msg_deleted = {0} {1} deleted.
common_msg_emphasizedNotePrefix = \u6ce8\u610f:
common_msg_loading = \u52a0\u8f7d\u4e2d...
common_msg_noItemsToShow = \u6ca1\u6709\u6761\u76ee\u663e\u793a
@@ -1982,12 +1983,10 @@ widget_recordEditor_error_operation =
\u64cd\u4f5c\u5931\u8d25.\u6709\u9519\u8be
widget_recordEditor_error_operationInvalidValues =
\u64cd\u4f5c\u5931\u8d25-\u4e00\u4e2a\u6216\u591a\u4e2a\u5b57\u6bb5\u7684\u503c\u65e0\u6548
widget_recordEditor_error_permissionCreate =
\u4f60\u6ca1\u6709\u521b\u5efa\u65b0[{0}]\u7684\u6743\u9650
widget_recordEditor_error_unsupportedOperationType =
\u4e0d\u652f\u6301\u7684\u64cd\u4f5c\u7c7b\u578b: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} created.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
-widget_recordEditor_info_recordUpdatedConcise = {0} updated.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+##widget_recordEditor_info_recordCreatedConcise = {0} created.
+##widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+##widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+##widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
widget_recordEditor_title_edit = \u7f16\u8f91{0} [{1}]
widget_recordEditor_title_new = \u65b0\u5efa{0}
widget_recordEditor_title_view = \u67e5\u770b{0} [{1}]
commit ac7fe40163f22ed7b634d1ec8138fb0182e1617d
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri Jun 15 17:35:38 2012 +0200
[BZ 832090] - adding an integration test for checking that all the PC
subsystems obtain the synced resource after manual add.
diff --git
a/modules/core/arquillian-integration/container/src/main/java/org/rhq/test/arquillian/FakeServerInventory.java
b/modules/core/arquillian-integration/container/src/main/java/org/rhq/test/arquillian/FakeServerInventory.java
index 0b7b043..37e4ff2 100644
---
a/modules/core/arquillian-integration/container/src/main/java/org/rhq/test/arquillian/FakeServerInventory.java
+++
b/modules/core/arquillian-integration/container/src/main/java/org/rhq/test/arquillian/FakeServerInventory.java
@@ -41,6 +41,7 @@ import org.mockito.stubbing.Answer;
import org.rhq.core.clientapi.agent.upgrade.ResourceUpgradeRequest;
import org.rhq.core.clientapi.agent.upgrade.ResourceUpgradeResponse;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
+import org.rhq.core.domain.discovery.MergeResourceResponse;
import org.rhq.core.domain.discovery.ResourceSyncInfo;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
@@ -186,6 +187,24 @@ public class FakeServerInventory {
return discoveryChecker;
}
+ public synchronized Answer<MergeResourceResponse> addResource() {
+ return new Answer<MergeResourceResponse>() {
+ @Override
+ public MergeResourceResponse answer(InvocationOnMock invocation) throws
Throwable {
+ Resource r = (Resource) invocation.getArguments()[0];
+ int subjectId = (Integer) invocation.getArguments()[1];
+
+ LOG.debug("A request to add a resource [" + r + "] made by
subject with id " + subjectId);
+
+ boolean exists = getResourceStore().containsKey(r.getUuid());
+
+ r = fakePersist(r, InventoryStatus.COMMITTED, new
HashSet<String>());
+
+ return new MergeResourceResponse(r.getId(), exists);
+ }
+ };
+ }
+
public synchronized Answer<ResourceSyncInfo> mergeInventoryReport(final
InventoryStatus requiredInventoryStatus) {
return new Answer<ResourceSyncInfo>() {
@Override
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
index 474c5c9..8880b92 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
@@ -19,11 +19,17 @@
package org.rhq.core.pc.inventory;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
+import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -34,13 +40,22 @@ import org.jboss.arquillian.testng.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.discovery.MergeResourceResponse;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.PluginContainerConfiguration;
+import org.rhq.core.pc.availability.AvailabilityContextImpl;
+import org.rhq.core.pc.content.ContentContextImpl;
+import org.rhq.core.pc.event.EventContextImpl;
+import org.rhq.core.pc.inventory.testplugin.ManualAddDiscoveryComponent;
import org.rhq.core.pc.inventory.testplugin.TestResourceComponent;
import org.rhq.core.pc.inventory.testplugin.TestResourceDiscoveryComponent;
+import org.rhq.core.pc.operation.OperationContextImpl;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.test.arquillian.AfterDiscovery;
import org.rhq.test.arquillian.BeforeDiscovery;
import org.rhq.test.arquillian.FakeServerInventory;
@@ -58,7 +73,7 @@ public class DiscoveryTest extends Arquillian {
public static RhqAgentPluginArchive getTestPlugin() {
RhqAgentPluginArchive pluginJar = ShrinkWrap.create(RhqAgentPluginArchive.class,
"test-plugin.jar");
return
pluginJar.setPluginDescriptor("test-great-grandchild-discovery-plugin.xml").addClasses(
- TestResourceDiscoveryComponent.class, TestResourceComponent.class);
+ TestResourceDiscoveryComponent.class, TestResourceComponent.class,
ManualAddDiscoveryComponent.class);
}
@ArquillianResource
@@ -122,6 +137,57 @@ public class DiscoveryTest extends Arquillian {
+ flaggedExecutionCountsByResourceType);
}
+ @Test(groups = "pc.itest.discovery", priority = 10)
+ public void testResourceSyncedWithServerAfterManualAdd() throws Exception {
+
Mockito.when(serverServices.getDiscoveryServerService().addResource(any(Resource.class),
anyInt())).then(
+ fakeServerInventory.addResource());
+
+ InventoryManager inventoryManager = pluginContainer.getInventoryManager();
+
+ Resource platform = inventoryManager.getPlatform();
+
+ Configuration myPluginConfig = new Configuration();
+ myPluginConfig.put(new PropertySimple("test", "value"));
+
+ ResourceType resourceType =
pluginContainer.getPluginManager().getMetadataManager()
+ .getType("Manual Add Server", "test");
+
+ MergeResourceResponse response =
inventoryManager.manuallyAddResource(resourceType, platform.getId(),
+ myPluginConfig, -1);
+
+ assertFalse(response.resourceAlreadyExisted(), "The manual add resource
shouldn't have existed");
+ assertNotEquals(response.getResourceId(), 0, "The manual add resource should
have had its resource id set");
+
+ ResourceContainer resourceContainer =
inventoryManager.getResourceContainer(response.getResourceId());
+ ResourceContext<?> resourceContext =
resourceContainer.getResourceContext();
+
+ assertEquals(resourceContext.getPluginConfiguration(), myPluginConfig,
+ "The manual add resource doesn't have the expected plugin
config.");
+
+ assertTrue(resourceContext.getAvailabilityContext() instanceof
AvailabilityContextImpl,
+ "Unexpected implementation clas of the AvailabilityContext, please fix
this test.");
+ assertEquals(((AvailabilityContextImpl)
resourceContext.getAvailabilityContext()).getResource().getId(),
+ response.getResourceId(),
+ "Availability subsystem isn't aware of the correct resource id for
manual add resource");
+
+ assertTrue(resourceContext.getContentContext() instanceof ContentContextImpl,
+ "Unexpected implementation class of ContentContext, please fix this
test");
+ assertEquals(((ContentContextImpl)
resourceContext.getContentContext()).getResourceId(),
+ response.getResourceId(),
+ "Content subsystem isn't aware of the correct resource id for manual
add resource");
+
+ assertTrue(resourceContext.getEventContext() instanceof EventContextImpl,
+ "Unexpected implementation clas of the EventContext, please fix this
test.");
+ assertEquals(((EventContextImpl)
resourceContext.getEventContext()).getResource().getId(),
+ response.getResourceId(), "Event subsystem isn't aware of the
correct resource id for manual add resource");
+
+ assertTrue(resourceContext.getOperationContext() instanceof
OperationContextImpl,
+ "Unexpected implementation clas of the OperationContext, please fix this
test.");
+ assertEquals(((OperationContextImpl)
resourceContext.getOperationContext()).getResourceId(),
+ response.getResourceId(),
+ "Operation subsystem isn't aware of the correct resource id for
manual add resource");
+ }
+
private void validatePluginContainerInventory() throws Exception {
System.out.println("Validating PC inventory...");
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/ManualAddDiscoveryComponent.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/ManualAddDiscoveryComponent.java
new file mode 100644
index 0000000..95701b2
--- /dev/null
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/ManualAddDiscoveryComponent.java
@@ -0,0 +1,34 @@
+package org.rhq.core.pc.inventory.testplugin;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ManualAddFacet;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+public class ManualAddDiscoveryComponent implements
ResourceDiscoveryComponent<ResourceComponent<?>>,
+ ManualAddFacet<ResourceComponent<?>> {
+
+ @Override
+ public DiscoveredResourceDetails discoverResource(Configuration pluginConfiguration,
+ ResourceDiscoveryContext<ResourceComponent<?>> context) throws
InvalidPluginConfigurationException {
+
+ ResourceType resourceType = context.getResourceType();
+
+ return new DiscoveredResourceDetails(resourceType, "SINGLETON",
resourceType.getName(), "1.0",
+ resourceType.getDescription(), pluginConfiguration, null);
+ }
+
+ @Override
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<ResourceComponent<?>> context)
+ throws InvalidPluginConfigurationException, Exception {
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceComponent.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceComponent.java
index d56d598..20ccf76 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceComponent.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceComponent.java
@@ -18,15 +18,49 @@
*/
package org.rhq.core.pc.inventory.testplugin;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Set;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.content.PackageType;
+import org.rhq.core.domain.content.transfer.DeployPackageStep;
+import org.rhq.core.domain.content.transfer.DeployPackagesResponse;
+import org.rhq.core.domain.content.transfer.RemovePackagesResponse;
+import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.bundle.BundleDeployRequest;
+import org.rhq.core.pluginapi.bundle.BundleDeployResult;
+import org.rhq.core.pluginapi.bundle.BundleFacet;
+import org.rhq.core.pluginapi.bundle.BundlePurgeRequest;
+import org.rhq.core.pluginapi.bundle.BundlePurgeResult;
+import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.content.ContentFacet;
+import org.rhq.core.pluginapi.content.ContentServices;
+import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.core.pluginapi.inventory.DeleteResourceFacet;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.core.pluginapi.support.SnapshotReportRequest;
+import org.rhq.core.pluginapi.support.SnapshotReportResults;
+import org.rhq.core.pluginapi.support.SupportFacet;
/**
+ * This resource component implements most (all?) of the facets so that all the plugin
container subsystems can work
+ * with it.
+ *
* @author Ian Springer
*/
-public class TestResourceComponent implements
ResourceComponent<ResourceComponent<?>> {
+public class TestResourceComponent implements
ResourceComponent<ResourceComponent<?>>, OperationFacet, ContentFacet,
+ ConfigurationFacet, MeasurementFacet, DeleteResourceFacet, CreateChildResourceFacet,
BundleFacet, SupportFacet {
private ResourceContext<ResourceComponent<?>> resourceContext;
@@ -46,4 +80,71 @@ public class TestResourceComponent implements
ResourceComponent<ResourceComponen
return;
}
+ @Override
+ public SnapshotReportResults getSnapshotReport(SnapshotReportRequest request) throws
Exception {
+ return null;
+ }
+
+ @Override
+ public BundleDeployResult deployBundle(BundleDeployRequest request) {
+ return null;
+ }
+
+ @Override
+ public BundlePurgeResult purgeBundle(BundlePurgeRequest request) {
+ return null;
+ }
+
+ @Override
+ public CreateResourceReport createResource(CreateResourceReport report) {
+ return null;
+ }
+
+ @Override
+ public void deleteResource() throws Exception {
+ }
+
+ @Override
+ public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
metrics) throws Exception {
+ }
+
+ @Override
+ public Configuration loadResourceConfiguration() throws Exception {
+ return null;
+ }
+
+ @Override
+ public void updateResourceConfiguration(ConfigurationUpdateReport report) {
+ }
+
+ @Override
+ public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails
packageDetails) {
+ return null;
+ }
+
+ @Override
+ public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails>
packages, ContentServices contentServices) {
+ return null;
+ }
+
+ @Override
+ public RemovePackagesResponse removePackages(Set<ResourcePackageDetails>
packages) {
+ return null;
+ }
+
+ @Override
+ public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type)
{
+ return null;
+ }
+
+ @Override
+ public InputStream retrievePackageBits(ResourcePackageDetails packageDetails) {
+ return null;
+ }
+
+ @Override
+ public OperationResult invokeOperation(String name, Configuration parameters) throws
InterruptedException,
+ Exception {
+ return null;
+ }
}
diff --git
a/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
b/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
index 477b3c9..a1e222a 100644
---
a/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
+++
b/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
@@ -27,4 +27,34 @@
</service>
</service>
</server>
+
+ <server name="Manual Add Server"
+ discovery="ManualAddDiscoveryComponent"
+ class="TestResourceComponent">
+ <plugin-configuration>
+ <c:simple-property name="test" />
+ </plugin-configuration>
+ <operation name="test" />
+ <metric property="test" />
+ <event name="test" />
+ <content name="test" category="executableScript" />
+ <resource-configuration>
+ <c:simple-property name="test" />
+ </resource-configuration>
+
+ <drift-definition name="test">
+ <basedir>
+ <value-context>fileSystem</value-context>
+ <value-name>test</value-name>
+ </basedir>
+ </drift-definition>
+
+ <bundle-target>
+ <destination-base-dir name="test">
+ <value-context>fileSystem</value-context>
+ <value-name>test</value-name>
+ </destination-base-dir>
+ </bundle-target>
+
+ </server>
</plugin>
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
index f34d673..32fb361 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
@@ -79,4 +79,11 @@ public class AvailabilityContextImpl implements AvailabilityContext {
public void enable() {
PluginContainer.getInstance().getInventoryManager().setResourceEnablement(resource.getId(),
true);
}
+
+ /**
+ * Only used in tests
+ */
+ public Resource getResource() {
+ return resource;
+ }
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
index a50a658..fd360cf 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
@@ -108,6 +108,13 @@ public class EventContextImpl implements EventContext {
return getEventManager().getSigar();
}
+ /**
+ * Only used for testing purposes.
+ */
+ public Resource getResource() {
+ return resource;
+ }
+
private void registerEventPollerInternal(final EventPoller poller, int
pollingInterval, final String sourceLocation) {
EventDefinition eventDefinition =
EventUtility.getEventDefinition(poller.getEventType(),
this.resource.getResourceType());
commit 13663106e701a2390f7dc06a778718994318a4c4
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri Jun 15 14:14:01 2012 +0200
Trivial - code formatting
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
index 655b0a3..6f84e34 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
@@ -64,32 +64,32 @@ import org.rhq.test.arquillian.ServerServicesSetup;
@Test(groups = { "integration", "pc", "standalone" },
singleThreaded = true)
public class DeploymentTest extends AbstractJBossAS7PluginTest {
- private enum TestDeployments {
- DEPLOYMENT_1("test-simple.war"),
DEPLOYMENT_2("test-simple-2.war");
-
- private String deploymentName;
- private String resourcePath;
- private byte[] hash;
-
- private TestDeployments(String warName) {
- this.deploymentName = warName;
- this.resourcePath = "itest/" + warName;
- hash =
computeHash(DeploymentTest.class.getClassLoader().getResourceAsStream(resourcePath));
- }
-
- public String getDeploymentName() {
- return deploymentName;
- }
-
- public String getResourcePath() {
- return resourcePath;
- }
-
- public byte[] getHash() {
- return hash;
- }
- }
-
+ private enum TestDeployments {
+ DEPLOYMENT_1("test-simple.war"),
DEPLOYMENT_2("test-simple-2.war");
+
+ private String deploymentName;
+ private String resourcePath;
+ private byte[] hash;
+
+ private TestDeployments(String warName) {
+ this.deploymentName = warName;
+ this.resourcePath = "itest/" + warName;
+ hash =
computeHash(DeploymentTest.class.getClassLoader().getResourceAsStream(resourcePath));
+ }
+
+ public String getDeploymentName() {
+ return deploymentName;
+ }
+
+ public String getResourcePath() {
+ return resourcePath;
+ }
+
+ public byte[] getHash() {
+ return hash;
+ }
+ }
+
@ResourceComponentInstances(plugin = PLUGIN_NAME, resourceType = "JBossAS7
Standalone Server")
private Set<StandaloneASComponent> standalones;
@@ -102,7 +102,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
private Set<Resource> deploymentResources;
private static TestDeployments DEPLOYMENT_TO_SERVE = TestDeployments.DEPLOYMENT_1;
-
+
private static long copyStreamAndReturnCount(InputStream in, OutputStream out) throws
IOException {
int data;
long cnt = 0;
@@ -115,7 +115,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
return cnt;
}
-
+
//this is no test method
@ServerServicesSetup
@Test(enabled = false)
@@ -126,16 +126,20 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
new Answer<Long>() {
@Override
public Long answer(InvocationOnMock invocation) throws Throwable {
- InputStream str =
getClass().getClassLoader().getResourceAsStream(DEPLOYMENT_TO_SERVE.getResourcePath());
+ InputStream str = getClass().getClassLoader().getResourceAsStream(
+ DEPLOYMENT_TO_SERVE.getResourcePath());
OutputStream out = (OutputStream)
invocation.getArguments()[invocation.getArguments().length - 1];
return copyStreamAndReturnCount(str, out);
}
});
-
-
Mockito.when(serverServices.getContentServerService().downloadPackageBitsGivenResource(Mockito.anyInt(),
Mockito.any(PackageDetailsKey.class), Mockito.any(OutputStream.class))).then(new
Answer<Long>() {
+
+ Mockito.when(
+
serverServices.getContentServerService().downloadPackageBitsGivenResource(Mockito.anyInt(),
+ Mockito.any(PackageDetailsKey.class),
Mockito.any(OutputStream.class))).then(new Answer<Long>() {
@Override
public Long answer(InvocationOnMock invocation) throws Throwable {
- InputStream str =
getClass().getClassLoader().getResourceAsStream(DEPLOYMENT_TO_SERVE.getResourcePath());
+ InputStream str = getClass().getClassLoader()
+ .getResourceAsStream(DEPLOYMENT_TO_SERVE.getResourcePath());
OutputStream out = (OutputStream)
invocation.getArguments()[invocation.getArguments().length - 1];
return copyStreamAndReturnCount(str, out);
}
@@ -167,8 +171,8 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
request.setResourceName(packageDetails.getName());
request.setResourceTypeName("Deployment");
- CreateResourceResponse response =
-
pluginContainer.getResourceFactoryManager().executeCreateResourceImmediately(request);
+ CreateResourceResponse response =
pluginContainer.getResourceFactoryManager().executeCreateResourceImmediately(
+ request);
assert response.getStatus() == CreateResourceStatus.SUCCESS : "The
deoloyment failed with an error mesasge: "
+ response.getErrorMessage();
@@ -181,16 +185,17 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
Resource deployment = deploymentResources.iterator().next();
assert
TestDeployments.DEPLOYMENT_1.getDeploymentName().equals(deployment.getName()) : "The
deployment doesn't seem to have the expected name";
-
- ContentDiscoveryReport report =
pluginContainer.getContentManager().executeResourcePackageDiscoveryImmediately(deployment.getId(),
"file");
-
+
+ ContentDiscoveryReport report =
pluginContainer.getContentManager().executeResourcePackageDiscoveryImmediately(
+ deployment.getId(), "file");
+
Set<ResourcePackageDetails> details = report.getDeployedPackages();
-
+
assert details != null && details.size() == 1 : "The archived
deployment should be backed by exactly 1 package.";
-
+
ResourcePackageDetails actualDetails = details.iterator().next();
ResourcePackageDetails expectedDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
-
+
//we don't expect the resource details to be equal, because the version
field
//will be different - the test code simplistically just assigns "1.0"
//but the actual code assigns a sha256, because the test war doesn't contain
@@ -200,39 +205,42 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
String actualType = actualDetails.getPackageTypeName();
String expectedName = expectedDetails.getName();
String expectedType = expectedDetails.getPackageTypeName();
-
- Assert.assertEquals(actualName, expectedName, "The deployment's package
details are called differently than expected.");
- Assert.assertEquals(actualType, expectedType, "The deployment's package
details have different type than expected.");
+
+ Assert.assertEquals(actualName, expectedName,
+ "The deployment's package details are called differently than
expected.");
+ Assert.assertEquals(actualType, expectedType,
+ "The deployment's package details have different type than
expected.");
}
@Test(priority = 13)
public void testDeploymentContentRetrieval() throws Exception {
- testContentRetrieval(TestDeployments.DEPLOYMENT_1);
+ testContentRetrieval(TestDeployments.DEPLOYMENT_1);
}
@Test(priority = 14)
public void testRedeploy() throws Exception {
- Resource deployment = deploymentResources.iterator().next();
- //we are updating the deployment 1. So provide a key to the first deployment but
later on actually
- //deliver bits of the deployment 2, so that we get the update we
"wanted".
- ResourcePackageDetails packageDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
-
- //this is what our mocked serverside is going to serve the package bits for
- TestDeployments origServedDeployemnt = DEPLOYMENT_TO_SERVE;
- DEPLOYMENT_TO_SERVE = TestDeployments.DEPLOYMENT_2;
-
- try {
- DeployPackagesRequest request = new DeployPackagesRequest(1, deployment.getId(),
Collections.singleton(packageDetails));
-
- DeployPackagesResponse response =
pluginContainer.getContentManager().deployPackagesImmediately(request);
-
- testContentRetrieval(TestDeployments.DEPLOYMENT_2);
- } finally {
- //switch the served deployment back, so that other tests aren't affected
- DEPLOYMENT_TO_SERVE = origServedDeployemnt;
- }
+ Resource deployment = deploymentResources.iterator().next();
+ //we are updating the deployment 1. So provide a key to the first deployment but
later on actually
+ //deliver bits of the deployment 2, so that we get the update we
"wanted".
+ ResourcePackageDetails packageDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
+
+ //this is what our mocked serverside is going to serve the package bits for
+ TestDeployments origServedDeployemnt = DEPLOYMENT_TO_SERVE;
+ DEPLOYMENT_TO_SERVE = TestDeployments.DEPLOYMENT_2;
+
+ try {
+ DeployPackagesRequest request = new DeployPackagesRequest(1,
deployment.getId(),
+ Collections.singleton(packageDetails));
+
+ DeployPackagesResponse response =
pluginContainer.getContentManager().deployPackagesImmediately(request);
+
+ testContentRetrieval(TestDeployments.DEPLOYMENT_2);
+ } finally {
+ //switch the served deployment back, so that other tests aren't affected
+ DEPLOYMENT_TO_SERVE = origServedDeployemnt;
+ }
}
-
+
@Test(priority = 15)
public void testUndeploy() throws Exception {
Resource deployment = deploymentResources.iterator().next();
@@ -240,7 +248,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
getServerInventory().removeResource(deployment);
pluginContainer.getResourceFactoryManager().deleteResource(request);
}
-
+
private void testContentRetrieval(final TestDeployments deployment) throws Exception
{
final boolean[] lockAndTestResult = new boolean[2];
@@ -269,8 +277,8 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
//setup the content retrieval request and execute it
Resource deploymentResource = deploymentResources.iterator().next();
- RetrievePackageBitsRequest request =
- new RetrievePackageBitsRequest(0, deploymentResource.getId(),
getTestDeploymentPackageDetails(deployment));
+ RetrievePackageBitsRequest request = new RetrievePackageBitsRequest(0,
deploymentResource.getId(),
+ getTestDeploymentPackageDetails(deployment));
pluginContainer.getContentManager().retrievePackageBits(request);
//the content retrieval is async so wait in the test method until the mocked
server-side
@@ -282,14 +290,15 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
assert lockAndTestResult[1] : "The data obtained from the deployment are
different to what should have been deployed.";
}
}
-
+
private ResourcePackageDetails getTestDeploymentPackageDetails(TestDeployments
deployment) {
- ResourcePackageDetails details = new ResourcePackageDetails(new
PackageDetailsKey(deployment.getDeploymentName(), "1.0", "file",
"noarch"));
+ ResourcePackageDetails details = new ResourcePackageDetails(new
PackageDetailsKey(
+ deployment.getDeploymentName(), "1.0", "file",
"noarch"));
details.setFileName(deployment.getDeploymentName());
details.setDeploymentTimeConfiguration(new Configuration());
-
+
return details;
-
+
}
private static byte[] computeHash(InputStream str) {
commit 19f7fabd25d7beda27499e57a52a3f313c47a343
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 15 11:25:33 2012 -0400
provide more information to the user when the security token is bad
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java
index 851937b..c976f5a 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java
@@ -137,11 +137,8 @@ public class CoreServerServiceImpl implements CoreServerService {
if (agentByName != null) {
// the agent request provided a name that already is in use by an
agent. However, the request
// provided a security token that was not assigned to any agent! How
can this be? Something is fishy.
- String msg = "The agent asking for registration under the name
["
- + request.getName()
- + "] provided an invalid security token. This request will
fail. "
- + "Please consult an administrator to obtain the agent's
proper security token "
- + "and restart the agent with the option
\"-Drhq.agent.security-token=<the valid security token>\"";
+ String msg = "The agent asking for registration under the name
[" + request.getName()
+ + "] provided an invalid security token. This request will
fail. " + securityTokenMessage();
throw new AgentRegistrationException(msg);
}
Agent agentByAddressPort =
getAgentManager().getAgentByAddressAndPort(request.getAddress(),
@@ -176,11 +173,8 @@ public class CoreServerServiceImpl implements CoreServerService {
+ " and same security token.";
throw new AgentRegistrationException(msg);
} else {
- String msg = "The agent ["
- + request.getName()
- + "] is attempting to re-register without a security token.
"
- + "Please consult an administrator to obtain the agent's
proper security token "
- + "and restart the agent with the option
\"-Drhq.agent.security-token=<the valid security token>\"";
+ String msg = "The agent [" + request.getName()
+ + "] is attempting to re-register without a security token.
" + securityTokenMessage();
throw new AgentRegistrationException(msg);
}
@@ -192,8 +186,7 @@ public class CoreServerServiceImpl implements CoreServerService {
String msg = "An agent is trying to register with an existing
agent name ["
+ request.getName()
+ "] without providing a valid security token. If you are
attempting to re-register this agent, "
- + "please consult an administrator to obtain the agent's
proper security token "
- + "and restart the agent with the option
\"-Drhq.agent.security-token=<the valid security token>\"";
+ + "you will need the agent's security token. " +
securityTokenMessage();
throw new AgentRegistrationException(msg);
}
}
@@ -274,6 +267,15 @@ public class CoreServerServiceImpl implements CoreServerService {
return results;
}
+ private String securityTokenMessage() {
+ return "Please consult an administrator to obtain the agent's proper
security token "
+ + "and restart the agent with the option
\"-Drhq.agent.security-token=<the valid security token>\". "
+ + "An administrator can find the agent's security token by
navigating to the GUI page "
+ + "\"Administration (Topology) > Agents\" and drilling down
to this specific agent. "
+ + "You will see the long security token string there. For more
information, read: "
+ + "https://docs.jboss.org/author/display/RHQ/Agent+Registration";
+ }
+
/**
* @see CoreServerService#connectAgent(ConnectAgentRequest)
*/
commit 544aba9cb75ea85b9dd2ceecb56047290856eab7
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 14 17:06:29 2012 -0400
[BZ 832204] protect against npe when the message bar disappears but user still has the
root cause context menu option and selects it
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
index 0aba1ba..a2d76e5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
@@ -85,14 +85,19 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
showRootCauseMenuItem.addClickHandler(new ClickHandler() {
@Override
public void onClick(MenuItemClickEvent event) {
- String rootCause = MessageBar.this.currentMessage.getRootCauseMessage();
- SC.say(MSG.view_messageCenter_messageRootCause(), rootCause);
+ Message msg = MessageBar.this.currentMessage;
+ if (msg != null) {
+ String rootCause = msg.getRootCauseMessage();
+ if (rootCause != null) {
+ SC.say(MSG.view_messageCenter_messageRootCause(), rootCause);
+ }
+ }
}
});
showRootCauseMenuItem.setEnableIfCondition(new MenuItemIfFunction() {
public boolean execute(Canvas target, Menu menu, MenuItem item) {
- return MessageBar.this.currentMessage != null
- && MessageBar.this.currentMessage.getRootCauseMessage() !=
null;
+ Message msg = MessageBar.this.currentMessage;
+ return msg != null && msg.getRootCauseMessage() != null;
}
});
commit 0cdd1e4fd3e738b275a59751e0fb0a07bcd1a626
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Jun 14 15:29:43 2012 -0500
Adding ignored resources along with reason for ignoring them to the load/update
integration test.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
index 4eb3519..d11e7ab 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
@@ -39,8 +39,6 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceCategory;
-import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.configuration.ConfigurationManager;
import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
@@ -77,20 +75,26 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
@Test(priority = 12)
public void loadUpdateTemplatedResourceConfiguration() throws Exception {
+ List<String> ignoredResources = new ArrayList<String>();
+
+ //ignored because of differences between test plugin container and real
application
+ //works well with real agent
+ ignoredResources.add("VHost");
+
+ //ignored because the settings different when started with arquillian,
inet-address is not set correctly
+ //works well with real agent
+ ignoredResources.add("Network Interface");
+
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
StandaloneServerComponentTest.RESOURCE_KEY);
ConfigurationManager configurationManager =
this.pluginContainer.getConfigurationManager();
configurationManager.initialize();
- Thread.sleep(100 * 1000L);
+ Thread.sleep(40 * 1000L);
Queue<Resource> unparsedResources = new LinkedList<Resource>();
for (Resource topLevelResource : server.getChildResources()) {
- ResourceType resourceType = new
ResourceType(topLevelResource.getResourceType().getName(), PLUGIN_NAME,
- ResourceCategory.SERVICE, null);
- topLevelResource = getResourceByTypeAndKey(server, resourceType,
topLevelResource.getResourceKey());
-
if (topLevelResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
unparsedResources.add(topLevelResource);
} else {
@@ -111,7 +115,8 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
}
}
- if (resourceUnderTest.getResourceType().getResourceConfigurationDefinition()
!= null) {
+ if (resourceUnderTest.getResourceType().getResourceConfigurationDefinition()
!= null
+ &&
!ignoredResources.contains(resourceUnderTest.getResourceType().getName())) {
Configuration configUnderTest = configurationManager
.loadResourceConfiguration(resourceUnderTest.getId());
commit 6b4d1b0baf4d1d95d51d14fc7387fbc78cbf97fe
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu Jun 14 16:24:46 2012 -0400
[830158 - java.sql.BatchUpdateException when you uninventory everything right after
importing it]
The exception is due to badness when trying to uninventory a platform that is
actively merging in new resources. This is an unlikely use case. This commit
does not try to prevent the problem but rather adds some exception handling
and an improved log message indicating the probably scenario, and suggesting the
user retry after waiting for the resources to be merged.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 468f619..79c7935 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -276,101 +276,116 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
throw new PermissionException("You do not have permission to uninventory
resource [" + resourceId + "]");
}
- // if the resource has no parent, its a top root resource and its agent should be
purged too
- // test code does not always follow this rule, so catch and continue.
+ // if the resource has no parent, its a platform resource and its agent should be
purged too
Agent doomedAgent = null;
- if (resource.getParentResource() == null) {
- try {
+ try {
+ if (resource.getParentResource() == null) {
// note, this needs to be done before the marking because the agent
reference is going to be set to null
doomedAgent =
agentManager.getAgentByResourceId(subjectManager.getOverlord(), resourceId);
- } catch (Exception e) {
- doomedAgent = null;
- log.warn("This warning should occur in TEST code only! " + e);
+
+ // note - test code does not always provide the agent, if not found, just
warn
+ if (doomedAgent == null) {
+ log.warn("Platform resource had no associated agent. This
warning should occur in TEST code only!");
+ }
}
- }
- AgentClient agentClient = null;
- try {
- // The test code does not always generate agents for the resources. Catch and
log any problem but continue
- agentClient = agentManager.getAgentClient(subjectManager.getOverlord(),
resourceId);
- } catch (Throwable t) {
- log.warn("No AgentClient found for resource [" + resource
- + "]. Unable to inform agent of inventory removal (this may be ok):
" + t);
- }
+ AgentClient agentClient = null;
+ try {
+ // The test code does not always generate agents for the resources. Catch
and log any problem but continue
+ agentClient = agentManager.getAgentClient(subjectManager.getOverlord(),
resourceId);
+ } catch (Throwable t) {
+ log.warn("No AgentClient found for resource [" + resource
+ + "]. Unable to inform agent of inventory removal (this may be
ok): " + t);
+ }
- // since we delete the resource asynchronously now, we need to make sure we
remove things that would cause
- // system side effects after markForDeletion completed but before the resource
was actually removed from the DB
- Subject overlord = subjectManager.getOverlord();
+ // since we delete the resource asynchronously now, we need to make sure we
remove things that would cause
+ // system side effects after markForDeletion completed but before the
resource was actually removed from the DB
+ Subject overlord = subjectManager.getOverlord();
- // delete the resource and all its children
- log.info("User [" + user + "] is marking resource [" +
resource + "] for asynchronous uninventory");
+ // delete the resource and all its children
+ log.info("User [" + user + "] is marking resource [" +
resource + "] for asynchronous uninventory");
- // set agent references null
- // foobar the resourceKeys
- // update the inventory status to UNINVENTORY
- Query toBeDeletedQuery =
entityManager.createNamedQuery(Resource.QUERY_FIND_DESCENDANTS);
- toBeDeletedQuery.setParameter("resourceId", resourceId);
- List<Integer> toBeDeletedResourceIds = toBeDeletedQuery.getResultList();
+ // set agent references null
+ // foobar the resourceKeys
+ // update the inventory status to UNINVENTORY
+ Query toBeDeletedQuery =
entityManager.createNamedQuery(Resource.QUERY_FIND_DESCENDANTS);
+ toBeDeletedQuery.setParameter("resourceId", resourceId);
+ List<Integer> toBeDeletedResourceIds =
toBeDeletedQuery.getResultList();
- int i = 0;
- log.debug("== total size : " + toBeDeletedResourceIds.size());
+ int i = 0;
+ log.debug("== total size : " + toBeDeletedResourceIds.size());
+
+ while (i < toBeDeletedResourceIds.size()) {
+ int j = i + 1000;
+ if (j > toBeDeletedResourceIds.size())
+ j = toBeDeletedResourceIds.size();
+ List<Integer> idsToDelete = toBeDeletedResourceIds.subList(i, j);
+ log.debug("== Bounds " + i + ", " + j);
+
+ boolean hasErrors = uninventoryResourcesBulkDelete(overlord,
idsToDelete);
+ if (hasErrors) {
+ throw new IllegalArgumentException("Could not remove resources
from their containing groups");
+ }
+ i = j;
+ }
- while (i < toBeDeletedResourceIds.size()) {
- int j = i + 1000;
- if (j > toBeDeletedResourceIds.size())
- j = toBeDeletedResourceIds.size();
- List<Integer> idsToDelete = toBeDeletedResourceIds.subList(i, j);
- log.debug("== Bounds " + i + ", " + j);
+ // QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION is an expensive recursive query
+ // But luckily we have already (through such a recursive query above)
determined the doomed resources
+ // Query markDeletedQuery =
entityManager.createNamedQuery(Resource.QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION);
+ // markDeletedQuery.setParameter("resourceId", resourceId);
+ // markDeletedQuery.setParameter("status",
InventoryStatus.UNINVENTORIED);
+ // int resourcesDeleted = markDeletedQuery.executeUpdate();
- boolean hasErrors = uninventoryResourcesBulkDelete(overlord, idsToDelete);
- if (hasErrors) {
- throw new IllegalArgumentException("Could not remove resources from
their containing groups");
+ i = 0;
+ int resourcesDeleted = 0;
+ while (i < toBeDeletedResourceIds.size()) {
+ int j = i + 1000;
+ if (j > toBeDeletedResourceIds.size())
+ j = toBeDeletedResourceIds.size();
+ List<Integer> idsToDelete = toBeDeletedResourceIds.subList(i, j);
+
+ Query markDeletedQuery = entityManager
+
.createNamedQuery(Resource.QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION_QUICK);
+ markDeletedQuery.setParameter("resourceIds", idsToDelete);
+ markDeletedQuery.setParameter("status",
InventoryStatus.UNINVENTORIED);
+ resourcesDeleted += markDeletedQuery.executeUpdate();
+ i = j;
}
- i = j;
- }
- // QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION is an expensive recursive query
- // But luckily we have already (through such a recursive query above) determined
the doomed resources
- // Query markDeletedQuery =
entityManager.createNamedQuery(Resource.QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION);
- // markDeletedQuery.setParameter("resourceId", resourceId);
- // markDeletedQuery.setParameter("status",
InventoryStatus.UNINVENTORIED);
- // int resourcesDeleted = markDeletedQuery.executeUpdate();
+ if (resourcesDeleted != toBeDeletedResourceIds.size()) {
+ log.error("Tried to uninventory " +
toBeDeletedResourceIds.size()
+ + " resources, but actually uninventoried " +
resourcesDeleted);
+ }
- i = 0;
- int resourcesDeleted = 0;
- while (i < toBeDeletedResourceIds.size()) {
- int j = i + 1000;
- if (j > toBeDeletedResourceIds.size())
- j = toBeDeletedResourceIds.size();
- List<Integer> idsToDelete = toBeDeletedResourceIds.subList(i, j);
+ // still need to tell the agent about the removed resources so it stops avail
reports
+ if (agentClient != null) {
+ try {
+
agentClient.getDiscoveryAgentService().uninventoryResource(resourceId);
+ } catch (Exception e) {
+ log.warn(" Unable to inform agent of inventory removal for
resource [" + resourceId + "]", e);
+ }
+ }
- Query markDeletedQuery = entityManager
-
.createNamedQuery(Resource.QUERY_MARK_RESOURCES_FOR_ASYNC_DELETION_QUICK);
- markDeletedQuery.setParameter("resourceIds", idsToDelete);
- markDeletedQuery.setParameter("status",
InventoryStatus.UNINVENTORIED);
- resourcesDeleted += markDeletedQuery.executeUpdate();
- i = j;
- }
+ // now remove the dommed agent. Call flush() to force out any problems with
agent removal
+ // so that we can catch them and report a better exception.
+ if (doomedAgent != null) {
+ agentManager.deleteAgent(doomedAgent);
+ entityManager.flush();
+ }
- if (resourcesDeleted != toBeDeletedResourceIds.size()) {
- log.error("Tried to uninventory " + toBeDeletedResourceIds.size()
- + " resources, but actually uninventoried " +
resourcesDeleted);
- }
+ return toBeDeletedResourceIds;
- // still need to tell the agent about the removed resources so it stops avail
reports
- if (agentClient != null) {
- try {
- agentClient.getDiscoveryAgentService().uninventoryResource(resourceId);
- } catch (Exception e) {
- log.warn(" Unable to inform agent of inventory removal for resource
[" + resourceId + "]", e);
+ } catch (RuntimeException e) {
+ if (doomedAgent != null) {
+ // The most likely reason for a failure, although unlikely in itself, is
that newly discovered resources
+ // are currently being merged into the platform, and associated with the
doomed agent. In this case
+ // the user must wait until the merge is complete. Make sure the caller
knows about this possibility.
+ throw new IllegalStateException(
+ "Failed to uninventory platform. This can happen if new
resources were actively being imported. Please wait and try again shortly.");
}
- }
- if (doomedAgent != null) {
- agentManager.deleteAgent(doomedAgent);
+ throw e;
}
-
- return toBeDeletedResourceIds;
}
@SuppressWarnings("unchecked")
commit f33a3aca5c5915df31276bdebe287d81c7f9942d
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 14 15:16:27 2012 -0400
[BZ 825338] fix the doc links to point to the new
jboss.org RHQ confluence docs
diff --git a/etc/m2/settings.xml b/etc/m2/settings.xml
index 0464376..8bb17aa 100644
--- a/etc/m2/settings.xml
+++ b/etc/m2/settings.xml
@@ -248,7 +248,7 @@
<!--<rhq.containerDir>C:/home/bob/rhq-dev-container</rhq.containerDir>-->
<!-- set browser(s) to compile the GWT stuff for
- ~~ See
http://rhq-project.org/display/RHQ/Advanced+Build+Notes#AdvancedBuildNote...
+ ~~ See
https://docs.jboss.org/author/display/RHQ/Advanced+Build+Notes#AdvancedBu...
~~ for details and browser versions
~~ Possible values are: ie6,ie8,ie9,gecko,gecko1_8,safari,opera
-->
@@ -277,8 +277,8 @@
<profile>
<id>publish</id>
<properties>
- <
confluenceUrl>http://rhq-project.org/</confluenceUrl>
- <confluenceSpace>JOPR2</confluenceSpace>
+
<
confluenceUrl>https://docs.jboss.org/author/display/</confluenceUrl...
+ <confluenceSpace>RHQ</confluenceSpace>
<confluenceParentPageTitle>Managed
Resources</confluenceParentPageTitle>
<confluenceUserName>SET_ME</confluenceUserName>
<confluencePassword>SET_ME</confluencePassword>
diff --git a/etc/m2/smartgwt-war-archetype/pom.xml
b/etc/m2/smartgwt-war-archetype/pom.xml
index 19ef9be..fdec67d 100644
--- a/etc/m2/smartgwt-war-archetype/pom.xml
+++ b/etc/m2/smartgwt-war-archetype/pom.xml
@@ -16,7 +16,7 @@
<name>smartgwt-war-archetype</name>
<description>archetype for a Maven project for a SmartGWT web application
(WAR)</description>
- <
url>http://rhq-project.org/</url>
+ <
url>http://www.jboss.org/rhq/</url>
<licenses>
<license>
diff --git
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
index 605b644..dbf047d 100644
---
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
+++
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
@@ -115,8 +115,8 @@ public class PluginDocGenerator {
}
public void loadProperties(Properties props) {
- this.confluenceUrl = props.getProperty("confluenceUrl",
"http://rhq-project.org/");
- this.confluenceSpace = props.getProperty("confluenceSpace",
"JOPR2");
+ this.confluenceUrl = props.getProperty("confluenceUrl",
"https://docs.jboss.org/author/display/");
+ this.confluenceSpace = props.getProperty("confluenceSpace",
"RHQ");
this.confluenceParentPageTitle =
props.getProperty("confluenceParentPageTitle", "Management Plugins");
this.confluenceUserName = props.getProperty("confluenceUserName");
this.confluencePassword = props.getProperty("confluencePassword");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
index 52e3a8f..cae2d20 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
@@ -323,7 +323,8 @@ public class DashboardsView extends LocatableVLayout implements
DashboardContain
DashboardPortlet news = new DashboardPortlet(MashupPortlet.NAME,
MashupPortlet.KEY, 300);
if (isRHQ) {
- news.getConfiguration().put(new PropertySimple("address",
"http://rhq-project.org/display/RHQ/Home"));
+ news.getConfiguration()
+ .put(new PropertySimple("address",
"https://docs.jboss.org/author/display/RHQ/Home"));
} else {
news.getConfiguration().put(
new PropertySimple("address",
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants.properties
index 5f4e2d9..c3b641e 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants.properties
@@ -33,17 +33,17 @@ view_help_section_1_title = Documentation
view_help_section_1_item_count = 3
view_help_section_1_propTitle_1 = Frequently Asked Questions (FAQ)
-view_help_section_1_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/FAQ
+view_help_section_1_propUrl_1 =
https://docs.jboss.org/author/display/RHQ/FAQ
view_help_section_1_propTitle_2 = Documentation Set
-view_help_section_1_propUrl_2 =
http://www.rhq-project.org/display/JOPR2/Home
+view_help_section_1_propUrl_2 =
https://docs.jboss.org/author/display/RHQ/Home
view_help_section_1_propTitle_3 = API Javadoc
-view_help_section_1_propUrl_3 =
http://www.rhq-project.org/display/JOPR2/API+Documentation
+view_help_section_1_propUrl_3 =
https://docs.jboss.org/author/display/RHQ/API+Documentation
view_help_section_2_title = Tutorial
view_help_section_2_item_count = 4
view_help_section_2_propTitle_1 = Demo: All Demos
-view_help_section_2_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/Demos
+view_help_section_2_propUrl_1 =
https://docs.jboss.org/author/display/RHQ/Demos
view_help_section_2_propTitle_2 = Demo: Bundle Provisioning
view_help_section_2_propUrl_2 =
http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
view_help_section_2_propTitle_3 = How to build Group Definitions
@@ -51,4 +51,4 @@ view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
view_help_section_2_propUrl_3 =
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
view_help_section_2_propTitle_4 = How to use the Search Bar
view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_4 =
http://www.rhq-project.org/display/JOPR2/Search
+view_help_section_2_propUrl_4 =
https://docs.jboss.org/author/display/RHQ/Search
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 0e948cd..8d228e8 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -3,7 +3,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
common_alert_high = High
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index a5d71dd..edf2e50 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -26,7 +26,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
common_alert_high = Vysoká
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 57ffe8d..3806dd5 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -6,7 +6,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
common_alert_high = HOCH
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 0644243..42b166f 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -6,7 +6,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
common_alert_high = 高
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 923ace3..a755166 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -3,7 +3,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
F3view_admin_systemSettings_BaselineDataSet_desc = Quantidade de dados mensurados que
ser\u00E1 utilizada para determinar um baseline. Valor especificado em dias.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index f34cb82..c572c62 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -3,7 +3,7 @@
##
## Developers: See the following wiki page for how to work with this file:
##
-##
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+##
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
##
####################################
#common_alert_high = High
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index bafb045..8d22ea6 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -3,7 +3,7 @@
#
# Developers: See the following wiki page for how to work with this file:
#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
https://docs.jboss.org/author/display/RHQ/Working+with+the+Resource+Bundles
#
###################################
common_alert_high = High
diff --git a/modules/enterprise/gui/installer-war/pom.xml
b/modules/enterprise/gui/installer-war/pom.xml
index ba0518f..e26a864 100644
--- a/modules/enterprise/gui/installer-war/pom.xml
+++ b/modules/enterprise/gui/installer-war/pom.xml
@@ -25,16 +25,16 @@
<product.shortName>RHQ</product.shortName>
<product.name>RHQ</product.name>
<product.fullName>RHQ</product.fullName>
- <product.url.domain>rhq-project.org</product.url.domain>
+ <product.url.domain>jboss.org</product.url.domain>
<product.sales.email>rhq-users(a)lists.fedorahosted.org</product.sales.email>
<product.support.email>rhq-users(a)lists.fedorahosted.org</product.support.email>
<product.version>${project.version}</product.version>
-
<
product.help.doc.root>http://www.rhq-project.org/display/JOPR2/</pr...
+
<
product.help.doc.root>https://docs.jboss.org/author/display/RHQ/</p...
<product.help.installation>Installation</product.help.installation>
<product.help.guide.server>Running+the+RHQ+Server</product.help.guide.server>
<product.help.guide.agent>Running+the+RHQ+Agent</product.help.guide.agent>
<product.help.FAQ>FAQ</product.help.FAQ>
-
<
product.help.config.props>http://www.rhq-project.org/display/JOPR2/Sta...
+
<
product.help.config.props>https://docs.jboss.org/author/display/RHQ/St...
</properties>
<dependencies>
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
index f206aef..719a354 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
@@ -1,10 +1,3 @@
-product.shortName=RHQ
-product.name=RHQ
-product.fullName=RHQ
-product.url=http://rhq-project.org/
-product.sales.email=sales(a)rhq-project.org
-product.support.email=info(a)rhq-project.org
-helpDocRoot=http://support.rhq-project.org/display/JOPR2/
createDatabaseUserTitle=\uc0dd\uc131
\ub370\uc774\ud130\ubca0\uc774\uc2a4/\uc0ac\uc6a9\uc790
createDatabaseUserHelp=\uc5ec\uae30\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4
\uad00\ub9ac\uc790 \uc815\ubcf4\ub97c \uc785\ub825\ud558\uace0
\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4e4 \uc218
\uc788\ub294 \ubc84\ud2bc\uc744 \ub204\ub974\uc2ed\uc2dc\uc624.
adminConnectionUrl=DB \uc5f0\uacb0 URL
@@ -156,7 +149,6 @@ helpDocRHQAgentUsersGuide=Running+the+RHQ+Agent
helpDocRHQAgentUsersGuideLabel=RHQ \uc5d0\uc774\uc804\ud2b8 \uc0ac\uc6a9\uc790
\uac00\uc774\ub4dc
helpDocFaq=FAQ
helpDocFaqLabel=\uc790\uc8fc \ubb3b\ub294 \uc9c8\ubb38
-helpDocRHQServerPropParentPage=http://support.rhq-project.org/display/JOPR2/Startup+Properties#ConfiguringtheServer
newServerSelectItem=\uc2e0\uaddc \uc11c\ubc84
registeredServersLabel=\ub4f1\ub85d\ub41c \uc11c\ubc84:
propertyHighAvailabilityName=\uc11c\ubc84 \uc774\ub984
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
index c3af5ba..d5845f4 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
@@ -1,4 +1,3 @@
-helpDocRoot=http://support.rhq-project.org/display/RHQ/
createDatabaseUserTitle=Criar Base de Dados/Usu\u00E1rio
createDatabaseUserHelp=Entre com as informa\u00E7\u00F5es do administrador do banco de
dados e clique no bot\u00E3o para criar o baco de dados e o usu\u00E1rio.
adminConnectionUrl=URL de conex\u00E3o com BD
@@ -59,7 +58,6 @@ helpDocRHQGuiConsoleUsersGuideLabel=RHQ GUI Console - Guia do
Usu\u00E1rio
helpDocRHQServerUsersGuideLabel=RHQ Server - Guia do Usu\u00E1rio
helpDocRHQAgentUsersGuideLabel=RHQ Agent - Guia do Usu\u00E1rio
helpDocFaqLabel=Perguntas Frequentes (FAQ)
-helpDocRHQServerPropParentPage=http://support.rhq-project.org/display/RHQ/Configuring+the+Server#ConfiguringtheServer
newServerSelectItem=Novo Servidor
registeredServersLabel=Servidores Registrados
propertyHighAvailabilityName=Nome do Servidor
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
index e392202..8878300 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
@@ -150,7 +150,6 @@ helpDocRHQAgentUsersGuide=Running+the+RHQ+Agent
helpDocRHQAgentUsersGuideLabel=RHQ Agent\u7528\u6237\u6307\u5357
helpDocFaq=FAQ
helpDocFaqLabel=\u7591\u96be\u89e3\u7b54
-helpDocRHQServerPropParentPage=http://support.rhq-project.org/display/JOPR2/Startup+Properties#ConfiguringtheServer
newServerSelectItem=\u65b0\u670d\u52a1\u5668
registeredServersLabel=\u6ce8\u518c\u7684\u670d\u52a1\u5668:
propertyHighAvailabilityName=\u670d\u52a1\u5668\u540d\u79f0
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
b/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
index fd3edea..96c0e3b 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
+++
b/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
@@ -88,7 +88,7 @@ common.field.value=Value
common.marketing.FeatureDisabled=This feature is unavailable, please contact sales to
upgrade
-common.url.help=http://www.rhq-project.org/display/JOPR2
+common.url.help=https://docs.jboss.org/author/display/RHQ/User+Documentation
common.error.invalid.oid=OID specified is invalid, please enter OID in form of 1.2.3.4
@@ -2952,7 +2952,7 @@ software.common.InstallPreview.PatchTitle=Title
software.common.InstallPreview.StepDescription=Step Description
software.common.InstallPreview.ShortDescription=Short Description
software.common.InstallPreview.LongDescription=Detailed Description
-software.common.InstallPreview.TopMessage=Clicking the [Install] button will begin the
execution of the steps listed below. Review each step carefully before proceeding with
the update installation.<br/><ul><li>Prior to installing this update, if
you have applied any one-off fixes to this instance, please check the update description
to see that they are included in the fixes that make up this update. If they are not
included then this update may overwrite the one-off fix and leave your instance in an
unstable state.</li><li>When updating a JBoss instance that shares a common
server configuration, follow the instructions documented in the wiki\: <a
href\="http://www.rhq-project.org/display/JOPR2/Demos#Demos-ContentS...
target\="_new">Installing a Patch</a>. Please contact support for more
information.</li></ul>
+software.common.InstallPreview.TopMessage=Clicking the [Install] button will begin the
execution of the steps listed below. Review each step carefully before proceeding with
the update installation.<br/><ul><li>Prior to installing this update, if
you have applied any one-off fixes to this instance, please check the update description
to see that they are included in the fixes that make up this update. If they are not
included then this update may overwrite the one-off fix and leave your instance in an
unstable state.</li><li>When updating a JBoss instance that shares a common
server configuration, follow the instructions documented in the wiki\: <a
href\="https://docs.jboss.org/author/display/RHQ/Demos#Demos-Content...
target\="_new">Installing a Patch</a>. Please contact support for more
information.</li></ul>
software.common.InstallPreview.NotAllowedToInstall=This user doesn't have the
appropriate rights to install an update. Only users that can control a resource may
install an update.
software.common.ManualUninstall.TableTitle=Manual Update Uninstallation
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/menu/menu.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/menu/menu.xhtml
index c855e67..010d29d 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/menu/menu.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/menu/menu.xhtml
@@ -625,7 +625,7 @@ v <rich:menuItem submitMode="none"
</p>
<p>
- <a
href="http://rhq-project.org/">
+ <a
href="http://www.jboss.org/rhq">
<h:graphicImage value="/images/logo_icon.png"
style="vertical-align:middle" />
RHQ Project
</a>
diff --git
a/modules/enterprise/server/container/src/main/downloadable-resources/connectors/README.txt
b/modules/enterprise/server/container/src/main/downloadable-resources/connectors/README.txt
index e0e10d5..c1dc783 100644
---
a/modules/enterprise/server/container/src/main/downloadable-resources/connectors/README.txt
+++
b/modules/enterprise/server/container/src/main/downloadable-resources/connectors/README.txt
@@ -18,5 +18,5 @@ required for earlier versions of Tomcat, since they already include that
jar.
For details on how to deploy the filter to various versions of JBoss AS and
Tomcat, see:
-http://rhq-project.org/display/JOPR2/Managed+Product+Configuration
+https://docs.jboss.org/author/display/RHQ/Managed+Product+Configuration
diff --git a/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
b/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
index 20bb110..ced6071 100644
--- a/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
+++ b/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
@@ -13,12 +13,12 @@ IMPORTS
rhqMIB MODULE-IDENTITY
LAST-UPDATED "201112200000Z"
ORGANIZATION "RHQ-Project"
- CONTACT-INFO "http://www.rhq-project.org/"
+ CONTACT-INFO "http://www.jboss.org/rhq"
DESCRIPTION
"The MIB module for RHQ alerts.
This file is part of the RHQ management platform
- Copyright (C) 2005-2011 Red Hat, Inc.
+ Copyright (C) 2005-2012 Red Hat, Inc.
All rights reserved.
"
diff --git a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
index 4d68e6e..1f996f5 100644
--- a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
+++ b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
@@ -30,7 +30,7 @@
<classpath>
<pathelement path="${test.classpath}" />
- <!-- See also:
http://rhq-project.org/display/RHQ/Design-Server+Side+Plugins#Design-Serv...
-->
+ <!-- See also:
https://docs.jboss.org/author/display/RHQ/Design-Server+Side+Plugins#Desi...
-->
<pathelement
location="../disk/target/rhq-serverplugin-disk-${project.version}.jar" />
<pathelement
location="../jboss-software/target/rhq-serverplugin-jboss-software-${project.version}.jar"
/>
diff --git
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
index 1e3bae0..3f36ee8 100644
---
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
+++
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
@@ -73,7 +73,7 @@ public abstract class ServerPluginDescriptorUtil {
static {
// maps all xsd files to their generated package names for all known server
plugin types;
// if a new plugin type is ever added, you must ensure you add the new plugin
type's xsd/package here
- // See also:
http://rhq-project.org/display/RHQ/Design-Server+Side+Plugins#Design-Serv...
+ // See also:
https://docs.jboss.org/author/display/RHQ/Design-Server+Side+Plugins#Desi...
PLUGIN_SCHEMA_PACKAGES = new HashMap<String, String>();
PLUGIN_SCHEMA_PACKAGES.put(XmlSchemas.XSD_SERVERPLUGIN,
XmlSchemas.PKG_SERVERPLUGIN);
PLUGIN_SCHEMA_PACKAGES.put(XmlSchemas.XSD_SERVERPLUGIN_GENERIC,
XmlSchemas.PKG_SERVERPLUGIN_GENERIC);
diff --git
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/XmlSchemas.java
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/XmlSchemas.java
index ce46022..9141ae8 100644
---
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/XmlSchemas.java
+++
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/XmlSchemas.java
@@ -28,7 +28,7 @@ import org.rhq.core.clientapi.descriptor.DescriptorPackages;
* Defines constants related to the server-side XML Schemas, including their JAXB
generated package names
* and their .xsd files, as found in the server's classpath.
*
- * See also:
http://rhq-project.org/display/RHQ/Design-Server+Side+Plugins#Design-Serv...
+ * See also:
https://docs.jboss.org/author/display/RHQ/Design-Server+Side+Plugins#Desi...
*
* @author John Mazzitelli
*/
diff --git a/pom.xml b/pom.xml
index b023384..4799e55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
<name>RHQ</name>
<description>RHQ is a server management and monitoring suite primarily targeted
at JBoss software.</description>
- <
url>http://rhq-project.org/</url>
+ <
url>http://www.jboss.org/rhq/</url>
<inceptionYear>2008</inceptionYear>
<organization>
@@ -47,12 +47,12 @@
<product.shortName>RHQ</product.shortName>
<product.name>RHQ</product.name>
<product.fullName>RHQ</product.fullName>
- <
product.url>http://www.rhq-project.org/</product.url>
- <product.urlDomain>rhq-project.org</product.urlDomain>
+ <
product.url>http://www.jboss.org/rhq</product.url>
+ <product.urlDomain>jboss.org</product.urlDomain>
<product.salesEmail>rhq-users(a)lists.fedorahosted.org</product.salesEmail>
<product.supportEmail>rhq-users(a)lists.fedorahosted.org</product.supportEmail>
<product.version>${project.version}</product.version>
-
<
product.helpDocRoot>http://www.rhq-project.org/display/JOPR2/</prod...
+
<
product.helpDocRoot>https://docs.jboss.org/author/display/RHQ/User+Doc...
<product.buildPropertiesFile>target/build.properties</product.buildPropertiesFile>
<doUpdate>false</doUpdate>
commit e6b9967525abb459a5f365528813ca17f37e9133
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 14 17:27:05 2012 +0200
Don't require a special jsonp media type as jQuery seems to have issues. Rename
parameter name to that clashes are less likely.
diff --git
a/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
index 5d812dc..3a785fd 100644
---
a/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
+++
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
@@ -63,8 +63,7 @@ public class JsonPFilter implements Filter {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
- String requestedType = httpRequest.getHeader("accept");
- if ("application/jsonp".equals(requestedType) &&
hasCallback(httpRequest)) {
+ if (hasCallback(httpRequest)) {
String callback = getCallback(httpRequest);
diff --git a/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
b/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
index 7e5d52e..11597bb 100644
--- a/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
+++ b/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
@@ -29,8 +29,8 @@
<filter-class>org.rhq.enterprise.rest.JsonPFilter</filter-class>
<init-param>
<param-name>filter.jsonp.callback</param-name>
- <param-value>callback</param-value>
- <description>Name of the callback to use for JsonP
(?callback=...)</description>
+ <param-value>jsonp</param-value>
+ <description>Name of the callback to use for JsonP
(?jsonp=...)</description>
</init-param>
</filter>
commit 662d3ef2ad7ac1b49257565b08c7c7f61187d3a2
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Jun 14 15:40:49 2012 +0200
[BZ 832090] - Make sure to activate the resource only after it has been
synced with the server during manual add so that the subsystems dependent
on the resource id get the correct one.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 30680d5..8cd3859 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -694,7 +694,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
MergeResourceResponse mergeResourceResponse;
Resource resource = null;
boolean resourceAlreadyExisted = false;
- Throwable startError = null;
try {
ResourceContainer parentResourceContainer =
getResourceContainer(parentResourceId);
@@ -805,14 +804,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (log.isDebugEnabled()) {
log.debug("Activating resource [" + resource +
"]...");
}
- // if it fails to start keep going, we already have the resource in inventory
and
- // need to coordinate with the server. The new resource will be unavailable
but at least
- // it will be accessible and editable by the user. Report the start exception
at the end.
- try {
- activateResource(resource, resourceContainer, newPluginConfig);
- } catch (Throwable t) {
- startError = t;
- }
// NOTE: We don't mess with inventory status - that's the
server's responsibility.
@@ -829,11 +820,19 @@ public class InventoryManager extends AgentService implements
ContainerService,
postProcessNewlyCommittedResources(newResources);
performServiceScan(resource.getId());
- if (null != startError) {
- handleInvalidPluginConfigurationResourceError(resource, startError);
+ // Note that it is important to activate the resource *AFTER* it has been
synced with the
+ // server so that the resource has a valid id (which is needed by at least
the content
+ // subsystem).
+ try {
+ activateResource(resource, resourceContainer, newPluginConfig);
+ } catch (Throwable t) {
+ // if it fails to start keep going, we already have the resource in
inventory and
+ // we are in sync with the server. The new resource will be unavailable
but at least
+ // it will be accessible and editable by the user. Report the start
exception at the end.
+ handleInvalidPluginConfigurationResourceError(resource, t);
throw new PluginContainerException("The resource [" + resource
+ "] has been added but could not be started. Verify the
supplied configuration values: ",
- startError);
+ t);
}
}
commit b8a19a54ca7e0ca3aa44082cb48004c1fbc3ed56
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Jun 14 07:12:22 2012 -0400
[BZ 831603] Do not allow plugin defined templates to be deleted
DriftTemplateManagerBean now throws an IllegalArgumentException if you
try to delete a plugin defined template. The delete action in the
templates ui is now disabled for plugin defined templates.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftDefinitionTemplatesView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftDefinitionTemplatesView.java
index a3ffed1..ab60c35 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftDefinitionTemplatesView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftDefinitionTemplatesView.java
@@ -167,7 +167,7 @@ public class DriftDefinitionTemplatesView extends
TableSection<DriftDefinitionTe
for (ListGridRecord record : selection) {
if
(!record.getAttributeAsBoolean(DriftDefinitionTemplateDataSource.ATTR_IS_USER_DEFINED)
.booleanValue()) {
- break;
+ return false;
}
}
result = true;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftTemplateManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftTemplateManagerBean.java
index 9a1c980..528fd7a 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftTemplateManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftTemplateManagerBean.java
@@ -19,11 +19,26 @@
package org.rhq.enterprise.server.drift;
+import static javax.ejb.TransactionAttributeType.NEVER;
+import static org.rhq.core.domain.common.EntityContext.forResource;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
+import static
org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.DriftDefinitionCriteria;
import org.rhq.core.domain.criteria.DriftDefinitionTemplateCriteria;
-import org.rhq.core.domain.drift.*;
+import org.rhq.core.domain.drift.DriftDefinition;
+import org.rhq.core.domain.drift.DriftDefinitionComparator;
+import org.rhq.core.domain.drift.DriftDefinitionTemplate;
+import org.rhq.core.domain.drift.DriftSnapshot;
+import org.rhq.core.domain.drift.DriftSnapshotRequest;
import org.rhq.core.domain.drift.dto.DriftChangeSetDTO;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageList;
@@ -34,17 +49,6 @@ import
org.rhq.enterprise.server.resource.ResourceTypeNotFoundException;
import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
-import javax.ejb.TransactionAttribute;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-
-import static javax.ejb.TransactionAttributeType.NEVER;
-import static org.rhq.core.domain.common.EntityContext.forResource;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static
org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
-
@Stateless
public class DriftTemplateManagerBean implements DriftTemplateManagerLocal,
DriftTemplateManagerRemote {
@@ -164,6 +168,10 @@ public class DriftTemplateManagerBean implements
DriftTemplateManagerLocal, Drif
@Override
public void deleteTemplate(Subject subject, int templateId) {
DriftDefinitionTemplate template = entityMgr.find(DriftDefinitionTemplate.class,
templateId);
+ if (!template.isUserDefined()) {
+ throw new IllegalArgumentException(template.getName() + " is a plugin
defined template. Plugin defined " +
+ "templates cannot be deleted.");
+ }
for (DriftDefinition defintion : template.getDriftDefinitions()) {
if (defintion.isAttached()) {
driftMgr.deleteDriftDefinition(subject,
forResource(defintion.getResource().getId()), defintion
commit 5e503eee3759b30bc4209c9695a9a9ab68cf2b31
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 14 11:44:37 2012 +0200
More improvements especially in the area of linking between resources.
diff --git a/modules/enterprise/gui/rest-war/src/main/webapp/index.html
b/modules/enterprise/gui/rest-war/src/main/webapp/index.html
index 0ab715a..00d615f 100644
--- a/modules/enterprise/gui/rest-war/src/main/webapp/index.html
+++ b/modules/enterprise/gui/rest-war/src/main/webapp/index.html
@@ -16,6 +16,7 @@ mobile client (Android) of the API.
<li><a href="1/group/definitions">Group
Definitions</a></li>
<li><a href="1/alert/">Alerts</a></li>
<li><a href="1/status.html">System status</a>
</li>
+ <li><a href="1/user/favorites/resource">Favorite
resources</a></li>
</ul>
<hr/>
<h2>Misc examples (using <a
href="https://github.com/mbostock/d3">D3.js</a>)</h...
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
index 024b084..a9bcc4e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
@@ -18,18 +18,29 @@
*/
package org.rhq.enterprise.server.rest;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
+import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.GenericEntity;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import org.rhq.core.domain.alert.Alert;
+import org.rhq.core.domain.alert.AlertCondition;
+import org.rhq.core.domain.alert.AlertConditionLog;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.AlertPriority;
+import org.rhq.core.domain.alert.notification.AlertNotificationLog;
import org.rhq.core.domain.criteria.AlertCriteria;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.criteria.Criteria;
@@ -38,9 +49,7 @@ import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerLocal;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
-import org.rhq.enterprise.server.rest.domain.AlertRest;
-import org.rhq.enterprise.server.rest.domain.AlertDefinitionRest;
-import org.rhq.enterprise.server.rest.domain.ResourceWithType;
+import org.rhq.enterprise.server.rest.domain.*;
/**
* Deal with alert related stuff
@@ -60,22 +69,36 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
@Override
- public List<AlertRest> listAlerts(int page, String status, Request request,
UriInfo uriInfo) {
+ public Response listAlerts(int page, String status, boolean slim, Long since, Request
request, UriInfo uriInfo, HttpHeaders headers) {
AlertCriteria criteria = new AlertCriteria();
criteria.setPaging(page,20); // TODO implement linking to next page
+ if (since!=null) {
+ criteria.addFilterStartTime(since);
+ }
PageList<Alert> alerts =
alertManager.findAlertsByCriteria(caller,criteria);
List<AlertRest> ret = new ArrayList<AlertRest>(alerts.size());
for (Alert al : alerts) {
- AlertRest ar = alertToDomain(al, uriInfo);
+ AlertRest ar = alertToDomain(al, uriInfo, slim);
ret.add(ar);
}
- return ret;
+
+ MediaType type = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ if (type.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("listAlerts.ftl",ret),type);
+ } else {
+ GenericEntity<List<AlertRest>> entity = new
GenericEntity<List<AlertRest>>(ret) {};
+ builder = Response.ok(entity);
+ }
+
+ return builder.build();
}
@Override
- public int countAlerts() {
+ public int countAlerts(Long since) {
AlertCriteria criteria = new AlertCriteria();
criteria.setPageControl(PageControl.getUnlimitedInstance());
criteria.fetchAlertDefinition(false);
@@ -83,6 +106,9 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
criteria.fetchRecoveryAlertDefinition(false);
criteria.fetchNotificationLogs(false);
criteria.setRestriction(Criteria.Restriction.COUNT_ONLY);
+ if (since!=null) {
+ criteria.addFilterStartTime(since);
+ }
PageList<Alert> alerts =
alertManager.findAlertsByCriteria(caller,criteria);
int count = alerts.getTotalSize();
@@ -90,27 +116,114 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
- public AlertRest getAlert(int id, UriInfo uriInfo) {
+ public Response getAlert(int id, boolean slim, UriInfo uriInfo, Request request,
HttpHeaders headers) {
Alert al = findAlertWithId(id);
- AlertRest ar = alertToDomain(al, uriInfo);
- return ar;
+ MediaType type = headers.getAcceptableMediaTypes().get(0);
+
+ EntityTag eTag = new EntityTag(Integer.toHexString(al.hashCode()));
+ Response.ResponseBuilder builder = request.evaluatePreconditions(eTag);
+ if (builder==null) {
+ AlertRest ar = alertToDomain(al, uriInfo, slim);
+ if (type.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("alert.ftl",ar),type);
+ } else {
+ builder = Response.ok(ar);
+ }
+ }
+ builder.tag(eTag);
+
+ return builder.build();
}
+ @Override
+ public Response getConditionLogs(int id, Request request, UriInfo uriInfo,
HttpHeaders headers) {
+
+ Alert al = findAlertWithId(id);
+ Set<AlertConditionLog> conditions = al.getConditionLogs();
+ MediaType type = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ if (type.equals(MediaType.APPLICATION_XML_TYPE)) {
+ List<StringValue> result = new
ArrayList<StringValue>(conditions.size());
+ for (AlertConditionLog log : conditions) {
+ AlertCondition condition = log.getCondition();
+ String entry = String.format("category='%s',
name='%s', comparator='%s', threshold='%s', option='%s' :
%s",
+ condition.getCategory(), condition.getName(),
condition.getComparator(), condition.getThreshold(), condition.getOption(), log.getValue()
);
+ StringValue sv = new StringValue(entry);
+ result.add(sv);
+ }
+ GenericEntity<List<StringValue>> entity = new
GenericEntity<List<StringValue>>(result){};
+ builder = Response.ok(entity);
+ }
+ else {
+ List<String> result = new ArrayList<String>(conditions.size());
+
+ for (AlertConditionLog log : conditions) {
+ AlertCondition condition = log.getCondition();
+ String entry = String.format("category='%s',
name='%s', comparator='%s', threshold='%s', option='%s' :
%s",
+ condition.getCategory(), condition.getName(),
condition.getComparator(), condition.getThreshold(), condition.getOption(), log.getValue()
);
+ result.add(entry);
+ }
+ if (type.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder =
Response.ok(renderTemplate("genericStringList.ftl",result),type);
+ } else {
+ builder = Response.ok(result);
+ }
+ }
+
+ return builder.build();
+
+ }
+
+ @Override
+ public Response getNotificationLogs(int id, Request request, UriInfo uriInfo,
HttpHeaders headers) {
+ Alert al = findAlertWithId(id);
+ MediaType type = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ List<AlertNotificationLog> notifications = al.getAlertNotificationLogs();
+ if (type.equals(MediaType.APPLICATION_XML_TYPE)) {
+ List<StringValue> result = new
ArrayList<StringValue>(notifications.size());
+ for (AlertNotificationLog log : notifications) {
+ String entry = log.getSender() + ": " + log.getResultState() +
": " + log.getMessage();
+ StringValue sv = new StringValue(entry);
+ result.add(sv);
+ }
+
+ GenericEntity<List<StringValue>> entity = new
GenericEntity<List<StringValue>>(result){};
+ builder = Response.ok(entity);
+ } else {
+ List<String> result = new
ArrayList<String>(notifications.size());
+ for (AlertNotificationLog log : notifications) {
+ String entry = log.getSender() + ": " + log.getResultState() +
": " + log.getMessage();
+ result.add(entry);
+ }
+ if (type.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder =
Response.ok(renderTemplate("genericStringList.ftl",result),type);
+ } else {
+ builder = Response.ok(result);
+ }
+ }
+ return builder.build();
+ }
@Override
public AlertRest ackAlert(int id, UriInfo uriInfo) {
findAlertWithId(id); // Ensure the alert exists
- alertManager.acknowledgeAlerts(caller,new int[]{id});
+ int count = alertManager.acknowledgeAlerts(caller,new int[]{id});
+
+ // TODO this is not reliable due to Tx constraints ( the above may only run after
this ackAlert() method has finished )
+
Alert al = findAlertWithId(id);
- AlertRest ar = alertToDomain(al, uriInfo);
+ AlertRest ar = alertToDomain(al, uriInfo, true);
return ar;
}
@Override
public void purgeAlert(int id) {
- alertManager.deleteAlerts(caller,new int[]{id});
+ alertManager.deleteAlerts(caller, new int[]{id});
}
@@ -127,7 +240,7 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
AlertDefinitionCriteria criteria = new AlertDefinitionCriteria();
criteria.setPaging(page,20); // TODO add link to next page
- List<AlertDefinition> defs =
alertDefinitionManager.findAlertDefinitionsByCriteria(caller,criteria);
+ List<AlertDefinition> defs =
alertDefinitionManager.findAlertDefinitionsByCriteria(caller, criteria);
List<AlertDefinitionRest> ret = new
ArrayList<AlertDefinitionRest>(defs.size());
for (AlertDefinition def : defs) {
AlertDefinitionRest adr = definitionToDomain(def);
@@ -137,17 +250,25 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
- public AlertDefinitionRest getAlertDefinition(int definitionId) {
+ public Response getAlertDefinition(int definitionId, Request request) {
AlertDefinition def =
alertDefinitionManager.getAlertDefinition(caller,definitionId);
if (def==null)
throw new StuffNotFoundException("AlertDefinition with id " +
definitionId );
- AlertDefinitionRest adr = definitionToDomain(def);
- return adr;
+
+ EntityTag eTag = new EntityTag(Integer.toHexString(def.hashCode()));
+ Response.ResponseBuilder builder = request.evaluatePreconditions(eTag);
+ if (builder==null) {
+ AlertDefinitionRest adr = definitionToDomain(def);
+ builder = Response.ok(adr);
+ }
+ builder.tag(eTag);
+
+ return builder.build();
}
@Override
- public AlertDefinitionRest updateDefinition(int definitionId, AlertDefinitionRest
definitionRest, Request request) {
+ public Response updateDefinition(int definitionId, AlertDefinitionRest
definitionRest, Request request) {
AlertDefinition def =
alertDefinitionManager.getAlertDefinition(caller,definitionId);
if (def==null)
throw new StuffNotFoundException("AlertDefinition with id " +
definitionId);
@@ -157,9 +278,14 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
def =
alertDefinitionManager.updateAlertDefinition(caller,def.getId(),def,false);
- definitionRest = definitionToDomain(def);
+ EntityTag eTag = new EntityTag(Integer.toHexString(def.hashCode()));
+ AlertDefinitionRest adr = definitionToDomain(def);
+
+ Response.ResponseBuilder builder = Response.ok(adr);
+ builder.tag(eTag);
+
+ return builder.build();
- return definitionRest;
}
private AlertDefinitionRest definitionToDomain(AlertDefinition def) {
@@ -187,26 +313,53 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
return alerts.get(0);
}
- public AlertRest alertToDomain(Alert al, UriInfo uriInfo) {
+ public AlertRest alertToDomain(Alert al, UriInfo uriInfo, boolean slim) {
AlertRest ret = new AlertRest();
ret.setId(al.getId());
AlertDefinition alertDefinition = al.getAlertDefinition();
ret.setName(alertDefinition.getName());
- ret.setAlertDefinition(definitionToDomain(alertDefinition));
+ AlertDefinitionRest alertDefinitionRest;
+ if (slim) {
+ alertDefinitionRest = new AlertDefinitionRest(alertDefinition.getId());
+ } else {
+ alertDefinitionRest = definitionToDomain(alertDefinition);
+ }
+ ret.setAlertDefinition(alertDefinitionRest);
ret.setDefinitionEnabled(alertDefinition.getEnabled());
if (al.getAcknowledgingSubject()!=null) {
ret.setAckBy(al.getAcknowledgingSubject());
ret.setAckTime(al.getAcknowledgeTime());
}
ret.setAlertTime(al.getCtime());
-
ret.setDescription(alertManager.prettyPrintAlertConditions(al,false));
Resource r = fetchResource(alertDefinition.getResource().getId());
- ResourceWithType rwt = fillRWT(r,uriInfo);
-
+ ResourceWithType rwt;
+ if (slim) {
+ rwt = new ResourceWithType(r.getName(),r.getId());
+ } else {
+ rwt = fillRWT(r,uriInfo);
+ }
ret.setResource(rwt);
+ // add some links
+ UriBuilder builder = uriInfo.getBaseUriBuilder();
+ builder.path("/alert/{id}/conditions");
+ URI uri = builder.build(al.getId());
+ Link link = new Link("conditions",uri.toString());
+ ret.addLink(link);
+ builder = uriInfo.getBaseUriBuilder();
+ builder.path("/alert/{id}/notifications");
+ uri = builder.build(al.getId());
+ link = new Link("notification",uri.toString());
+ ret.addLink(link);
+ builder = uriInfo.getBaseUriBuilder();
+ builder.path("/alert/{id}/definition");
+ uri = builder.build(al.getId());
+ link = new Link("definition",uri.toString());
+ ret.addLink(link);
+
+
return ret;
}
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
index b255db3..5fd7506 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
@@ -22,6 +22,7 @@ import java.util.List;
import javax.ejb.Local;
import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
@@ -29,15 +30,16 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiParam;
-import org.jboss.resteasy.links.AddLinks;
-import org.jboss.resteasy.links.LinkResource;
+import org.jboss.resteasy.annotations.cache.Cache;
import org.rhq.enterprise.server.rest.domain.AlertRest;
import org.rhq.enterprise.server.rest.domain.AlertDefinitionRest;
@@ -54,28 +56,48 @@ public interface AlertHandlerLocal {
@GET
@Path("/")
- @AddLinks
- @LinkResource(value = AlertRest.class)
- @ApiOperation("List all alerts")
- List<AlertRest> listAlerts(
+ @ApiOperation(value = "List all alerts", multiValueResponse = true,
responseClass = "List<AlertRest")
+ Response listAlerts(
@ApiParam(value = "Page number", defaultValue = "0")
@QueryParam("page") int page,
@ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status,
- @Context Request request, @Context UriInfo uriInfo);
+ @ApiParam(value = "Should full resources and definitions be sent")
@QueryParam("slim") @DefaultValue(
+ "false") boolean slim,
+ @ApiParam(value = "If non-null only send alerts that have fired after
this time, time is millisecond since epoch")
+ @QueryParam("since") Long since,
+ @Context Request request, @Context UriInfo uriInfo, @Context HttpHeaders
headers);
@GET
@Path("count")
@ApiOperation("Return a count of alerts in the system depending on
criteria")
- int countAlerts(); // TODO add some limiting to new / old / ....
+ int countAlerts(@ApiParam(value = "If non-null only send alerts that have fired
after this time, time is millisecond since epoch")
+ @QueryParam("since") Long since);
@GET
+ @Cache(maxAge = 60)
@Path("/{id}")
- @AddLinks
- @ApiOperation("Get one alert with the passed id")
- AlertRest getAlert(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id, @Context UriInfo uriInfo);
+ @ApiOperation(value = "Get one alert with the passed id", responseClass =
"AlertRest")
+ Response getAlert(
+ @ApiParam("Id of the alert to retrieve") @PathParam("id") int
id,
+ @ApiParam(value = "Should full resources and definitions be sent")
@QueryParam("slim") @DefaultValue("false") boolean slim,
+ @Context UriInfo uriInfo, @Context Request request, @Context HttpHeaders
headers);
+
+ @GET
+ @Path("/{id}/conditions")
+ @Cache(maxAge = 300)
+ @ApiOperation(value = "Return the notification logs for the given alert")
+ Response getConditionLogs(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id,
+ @Context Request request, @Context UriInfo uriInfo,
@Context HttpHeaders headers);
+
+ @GET
+ @Path("/{id}/notifications")
+ @Cache(maxAge = 60)
+ @ApiOperation(value = "Return the notification logs for the given alert")
+ Response getNotificationLogs(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id,
+ @Context Request request, @Context UriInfo uriInfo,
@Context HttpHeaders headers);
@PUT
@Path("/{id}")
- @ApiOperation(value = "Mark the alert as acknowledged (by the caller)")
+ @ApiOperation(value = "Mark the alert as acknowledged (by the caller)",
notes = "Returns a slim version of the alert")
AlertRest ackAlert(
@ApiParam(value = "Id of the alert to acknowledge")
@PathParam("id") int id, @Context UriInfo uriInfo);
@@ -86,6 +108,7 @@ public interface AlertHandlerLocal {
@ApiParam(value = "Id of the alert to remove")
@PathParam("id") int id);
@GET
+ @Cache(maxAge = 300)
@Path("/{id}/definition")
@ApiOperation("Get the alert definition (basics) for the alert")
AlertDefinitionRest getDefinitionForAlert(@ApiParam("Id of the alert to show the
definition") @PathParam("id") int alertId);
@@ -100,12 +123,13 @@ public interface AlertHandlerLocal {
@GET
@Path("/definition/{id}")
- @ApiOperation("Get one AlertDefinition by id")
- AlertDefinitionRest getAlertDefinition(@ApiParam("Id of the alert definition to
retrieve") @PathParam("id") int definitionId);
+ @ApiOperation(value = "Get one AlertDefinition by id", responseClass =
"AlertDefinitionRest")
+ Response getAlertDefinition(@ApiParam("Id of the alert definition to
retrieve") @PathParam("id") int definitionId,
+ @Context Request request);
@PUT
@Path("/definition/{id}")
@ApiOperation(value = "Update the alert definition (priority, enablement)",
notes = "Priority must be HIGH,LOW,MEDIUM")
- AlertDefinitionRest updateDefinition(@ApiParam("Id of the alert definition to
update") @PathParam("id") int definitionId,
+ Response updateDefinition(@ApiParam("Id of the alert definition to update")
@PathParam("id") int definitionId,
AlertDefinitionRest definition, @Context Request
request);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index 1f9594b..b76d7d1 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -255,6 +255,11 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
uri = uriBuilder.build(schedule.getId());
Link metricLink = new Link("metric",
uri.toString());
ms.addLink(metricLink);
+ uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/metric/data/{id}/raw");
+ uri = uriBuilder.build(schedule.getId());
+ metricLink = new Link("metric-raw",
uri.toString());
+ ms.addLink(metricLink);
}
// create link to the resource
uriBuilder = uriInfo.getBaseUriBuilder();
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
index a980f17..c4bf673 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -27,21 +27,14 @@ import java.util.TreeSet;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
-import com.wordnik.swagger.annotations.ApiParam;
-
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -83,26 +76,34 @@ public class UserHandlerBean extends AbstractRestBean implements
UserHandlerLoca
ResourceManagerLocal resourceManager;
@Override
- @GET
- @Path("favorites/r")
- public List<ResourceWithType> getFavorites(UriInfo uriInfo) {
+ public Response getFavorites(UriInfo uriInfo, HttpHeaders httpHeaders) {
Set<Integer> favIds = getResourceIdsForFavorites();
List<ResourceWithType> ret = new ArrayList<ResourceWithType>();
+
+ MediaType mediaType = httpHeaders.getAcceptableMediaTypes().get(0);
for (Integer id : favIds) {
Resource res = resourceManager.getResource(caller,id);
ResourceWithType rwt = fillRWT(res,uriInfo);
ret.add(rwt);
}
- return ret;
+ Response.ResponseBuilder builder;
+ if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("listResourceWithType", ret),
mediaType);
+ } else {
+ GenericEntity<List<ResourceWithType>> list = new
GenericEntity<List<ResourceWithType>>(ret) {
+ };
+ builder = Response.ok(list);
+ }
+
+ return builder.build();
+
}
@Override
- @PUT
- @Path("favorites/r/{id}")
- public void addFavoriteResource(@PathParam("id") int id) {
+ public void addFavoriteResource(int id) {
Set<Integer> favIds = getResourceIdsForFavorites();
if (!favIds.contains(id)) {
favIds.add(id);
@@ -111,9 +112,7 @@ public class UserHandlerBean extends AbstractRestBean implements
UserHandlerLoca
}
@Override
- @DELETE
- @Path("favorites/r/{id}")
- public void removeResourceFromFavorites(@PathParam("id") int id) {
+ public void removeResourceFromFavorites(int id) {
Set<Integer> favIds = getResourceIdsForFavorites();
if (favIds.contains(id)) {
favIds.remove(id);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
index 8c5abae..05ef280 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
@@ -18,8 +18,6 @@
*/
package org.rhq.enterprise.server.rest;
-import java.util.List;
-
import javax.ejb.Local;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -40,14 +38,12 @@ import com.wordnik.swagger.annotations.ApiParam;
import org.jboss.resteasy.annotations.cache.Cache;
-import org.rhq.enterprise.server.rest.domain.ResourceWithType;
-import org.rhq.enterprise.server.rest.domain.UserRest;
/**
* Bean that deals with user specific stuff
* @author Heiko W. Rupp
*/
-@Produces({"application/json","application/xml","text/plain"})
+@Produces({"application/json","application/xml","text/plain","text/html"})
@Path("/user")
@Local
@Api(value="Api that deals with user related stuff")
@@ -55,12 +51,12 @@ public interface UserHandlerLocal {
@GET
@Path("favorites/resource")
- @ApiOperation(value = "Return a list of favorite resources",
multiValueResponse = true)
- public List<ResourceWithType> getFavorites(@Context UriInfo uriInfo);
+ @ApiOperation(value = "Return a list of favorite resources of the caller",
multiValueResponse = true)
+ Response getFavorites(@Context UriInfo uriInfo,@Context HttpHeaders headers);
@PUT
@Path("favorites/resource/{id}")
- @ApiOperation(value = "Add a resource as favorite")
+ @ApiOperation(value = "Add a resource as favorite for the caller")
public void addFavoriteResource(
@ApiParam(name = "id", value = "Id of the resource")
@PathParam("id") int id);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
index 71687c0..d09f5b8 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
@@ -18,6 +18,9 @@
*/
package org.rhq.enterprise.server.rest.domain;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
@@ -39,6 +42,7 @@ public class AlertRest {
long ackTime;
long alertTime;
String description;
+ List<Link> links = new ArrayList<Link>();
public void setResource(ResourceWithType resource) {
this.resource = resource;
@@ -69,7 +73,6 @@ public class AlertRest {
return alertDefinition;
}
-
public boolean isDefinitionEnabled() {
return definitionEnabled;
}
@@ -113,4 +116,16 @@ public class AlertRest {
public ResourceWithType getResource() {
return resource;
}
+
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ public void addLink(Link link) {
+ links.add(link);
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
index a0c3527..10030a9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
@@ -140,4 +140,17 @@ public class ResourceWithType {
public String getAncestry() {
return ancestry;
}
+
+ @Override
+ public String toString() {
+ return "ResourceWithType{" +
+ "resourceName='" + resourceName + '\'' +
+ ", resourceId=" + resourceId +
+ ", typeName='" + typeName + '\'' +
+ ", typeId=" + typeId +
+ ", pluginName='" + pluginName + '\'' +
+ ", parentId=" + parentId +
+ ", ancestry='" + ancestry + '\'' +
+ '}';
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
index cf5da69..4cf9f70 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
@@ -90,4 +90,16 @@ public class UserRest {
public void setLastName(String lastName) {
this.lastName = lastName;
}
+
+ @Override
+ public String toString() {
+ return "UserRest{" +
+ "id=" + id +
+ ", login='" + login + '\'' +
+ ", firstName='" + firstName + '\'' +
+ ", lastName='" + lastName + '\'' +
+ ", tel='" + tel + '\'' +
+ ", email='" + email + '\'' +
+ '}';
+ }
}
diff --git a/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
new file mode 100644
index 0000000..60be9fc
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/alert.ftl
@@ -0,0 +1,57 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.AlertRest" -->
+<table>
+ <tr>
+ <th>Name</th>
+ <th>Value</th>
+ </tr>
+ <tr>
+ <td>Name</td>
+ <td>${var.name}</td>
+ </tr>
+ <tr>
+ <td>Id</td>
+ <td>${var.id}</td>
+ </tr>
+ <tr>
+ <td>Description</td>
+ <td>${var.description}</td>
+ </tr>
+ <tr>
+ <td>Acknowledged</td>
+ <td>
+ <#if (var.ackTime > 0)>
+ by ${var.ackBy} on ${var.ackTime?number_to_date}
+ <#else>
+ No
+ </#if>
+ </td>
+ </tr>
+ <tr>
+ <td>Definition enabled</td>
+
<td>${var.definitionEnabled?string("Yes","No")}</td>
+ </tr>
+</table>
+<a href="/rest/1/alert/${var.id?c}/definition.html">Alert
Definition</a>
+<a href="/rest/1/alert/${var.id?c}/conditions.html">Condition
Logs</a>
+<a href="/rest/1/alert/${var.id?c}/notifications.html">Notification
Logs</a>
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
new file mode 100644
index 0000000..d0ad8a2
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/genericStringList.ftl
@@ -0,0 +1,31 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var" type="java.util.List<String>"
-->
+<ul>
+ <#if var.isEmpty()>
+ <i>Nothing to display</i>
+ <#else>
+ <#list var as line>
+ <li>${line}</li>
+ </#list>
+ </#if>
+</ul>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listAlerts.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listAlerts.ftl
new file mode 100644
index 0000000..c8f4be8
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/listAlerts.ftl
@@ -0,0 +1,32 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="java.util.List<org.rhq.enterprise.server.rest.domain.AlertRest>"
-->
+<html>
+<ul>
+ <#-- the next looks odd, but the incoming var is a list -->
+ <#list var as var>
+ <li>
+ <#include "alert.ftl"/>
+ </li>
+ </#list>
+</ul>
+<html>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
index e05012e..ae7b559 100644
--- a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
@@ -22,11 +22,9 @@
<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.MetricSchedule" -->
<html>
<table border=1>
- <thead>
- <tr>
- <td>Name</td><td>Value</td>
- </tr>
- </thead>
+ <tr>
+ <th>Name</th><th>Value</th>
+ </tr>
<tr>
<td>Id</td><td>${var.scheduleId}</td>
</tr>
@@ -45,11 +43,13 @@
<tr>
<td>Units</td><td>${var.unit}</td>
</tr>
+ <tr>
+ <td>Links</td>
+ <td>
+ <#list var.links as link>
+ <li><a
href="${link.href}.html">${link.rel}</a> </li>
+ </#list>
+ </td>
+ </tr>
</table>
- Links<br/>
- <ul>
- <#list var.links as link>
- <li><a href="${link.href}.html">${link.rel}</a>
</li>
- </#list>
- </ul>
</html>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
index 2adf78a..bb8f717 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
@@ -2,7 +2,7 @@
<#--
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -22,11 +22,9 @@
<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.ResourceWithType" -->
<table>
- <thead>
<tr>
- <td>Name</td><td>Value</td>
+ <th>Name</th><th>Value</th>
</tr>
- </thead>
<tr>
<td>Name</td><td>${var.resourceName}</td>
</tr>
commit 9d5fbbe47b62800abc8919aa0b6239f85f9534a7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 14 11:01:24 2012 +0200
Add support for jsonp.
Return application/javascript with explicit encoding
diff --git
a/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/HeaderDumperFilter.java
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/HeaderDumperFilter.java
new file mode 100644
index 0000000..6ceab48
--- /dev/null
+++
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/HeaderDumperFilter.java
@@ -0,0 +1,61 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.rest;
+
+import java.io.IOException;
+import java.util.Enumeration;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Simple servlet filter to dump http headers
+ * @author Heiko W. Rupp
+ */
+public class HeaderDumperFilter implements Filter {
+ public void destroy() {
+ }
+
+ public void doFilter(ServletRequest req, ServletResponse resp,
+ FilterChain chain) throws ServletException, IOException {
+
+ HttpServletRequest req1 = (HttpServletRequest) req;
+ String requestedType = req1.getHeader("accept");
+ System.out.println(" RT: " + requestedType);
+ Enumeration headers = req1.getHeaderNames();
+ while (headers.hasMoreElements()) {
+ String elem = (String) headers.nextElement();
+ String val = req1.getHeader(elem);
+ System.out.println(" H " + elem + "=" + val);
+ }
+
+ chain.doFilter(req, resp);
+ }
+
+ public void init(FilterConfig config) throws ServletException {
+
+ }
+
+}
diff --git
a/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
new file mode 100644
index 0000000..5d812dc
--- /dev/null
+++
b/modules/enterprise/gui/rest-war/src/main/java/org/rhq/enterprise/rest/JsonPFilter.java
@@ -0,0 +1,257 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.rest;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+/**
+ * A filter to wrap json answers as jsonp
+ * @author Heiko W. Rupp
+ */
+public class JsonPFilter implements Filter {
+ private String callbackName;
+
+ public void destroy() {
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws ServletException,
+ IOException {
+
+ if (!(request instanceof HttpServletRequest)) {
+ throw new ServletException("This filter can " + " only process
HttpServletRequest requests");
+ }
+
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ HttpServletResponse httpResponse = (HttpServletResponse) response;
+
+ String requestedType = httpRequest.getHeader("accept");
+ if ("application/jsonp".equals(requestedType) &&
hasCallback(httpRequest)) {
+
+ String callback = getCallback(httpRequest);
+
+ // We need to wrap request and response, as we need to do some re-writing on
both
+ // We want to get json data inside, so change the accept header
+ JsonPRequestWrapper requestWrapper = new JsonPRequestWrapper(httpRequest);
+ requestWrapper.setHeader("accept", "application/json");
+ requestWrapper.setContentType("application/json");
+
+ JsonPResponseWrapper responseWrapper = new
JsonPResponseWrapper(httpResponse);
+
+ chain.doFilter(requestWrapper, responseWrapper);
+ response.setContentType("application/javascript; charset=utf-8");
+ ServletOutputStream outputStream = response.getOutputStream();
+ outputStream.write((callback + "(").getBytes());
+ responseWrapper.getByteArrayOutputStream().writeTo(outputStream);
+ outputStream.write(");".getBytes());
+ outputStream.flush();
+
+ } else {
+ chain.doFilter(request, response);
+ }
+ }
+
+ public void init(FilterConfig config) throws ServletException {
+ callbackName = config.getInitParameter("filter.jsonp.callback");
+ }
+
+ private boolean hasCallback(ServletRequest request) {
+ String cb = request.getParameter(callbackName);
+ return (cb != null && !cb.isEmpty());
+ }
+
+ private String getCallback(HttpServletRequest request) {
+ return request.getParameter(callbackName);
+ }
+
+ private static class JsonPResponseWrapper extends HttpServletResponseWrapper {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ private JsonPResponseWrapper(HttpServletResponse response) {
+ super(response);
+ }
+
+ ByteArrayOutputStream getByteArrayOutputStream() {
+ return baos;
+ }
+
+ @Override
+ public ServletOutputStream getOutputStream() throws IOException {
+ return new ServletOutputStream() {
+ @Override
+ public void write(int b) throws IOException {
+ baos.write(b);
+ }
+ };
+ }
+
+ @Override
+ public PrintWriter getWriter() throws IOException {
+ return new PrintWriter(baos);
+ }
+ }
+
+ private static class JsonPRequestWrapper extends HttpServletRequestWrapper {
+ int contentLength;
+ BufferedReader reader;
+ String method;
+ ByteArrayInputStream bais;
+ Map<String, String> headers = new HashMap<String, String>();
+
+
+ public JsonPRequestWrapper(HttpServletRequest request) {
+ super(request);
+ copyHeaders(request);
+ }
+
+ private void copyHeaders(HttpServletRequest request) {
+
+ Enumeration headers = request.getHeaderNames();
+ while (headers.hasMoreElements()) {
+ String key = (String) headers.nextElement();
+ String value = request.getHeader(key);
+ this.headers.put(key, value);
+ }
+ }
+
+ public void setHeader(String key, String value) {
+ headers.put(key, value);
+ }
+
+
+/*
+ public void setBody(String body) {
+ bais = new ByteArrayInputStream(body.getBytes());
+ contentLength = body.length();
+ headers.put("content-length", Integer.toString(contentLength));
+ }
+*/
+
+ @Override
+ public BufferedReader getReader() throws IOException {
+ reader = new BufferedReader(new InputStreamReader(bais));
+ return reader;
+ }
+
+ @Override
+ public ServletInputStream getInputStream() throws IOException {
+ return new ServletInputStream() {
+ @Override
+ public int read() throws IOException {
+ return bais.read();
+ }
+ };
+ }
+
+ private String contentType;
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ headers.put("content-type", contentType);
+ }
+
+ @Override
+ public String getContentType() {
+ return contentType;
+ }
+
+ @Override
+ public int getContentLength() {
+ return contentLength;
+ }
+
+ @Override
+ public String getHeader(String name) {
+ String val = headers.get(name);
+ if (val != null) {
+ return val;
+ }
+ return super.getHeader(name);
+ }
+
+ @Override
+ public Enumeration getHeaders(final String name) {
+ final String val = headers.get(name);
+ return new Enumeration() {
+ boolean first = true;
+
+ @Override
+ public boolean hasMoreElements() {
+ return first;
+ }
+
+ @Override
+ public Object nextElement() {
+ if (first) {
+ first = false;
+ return val;
+ } else
+ return null;
+ }
+ };
+ }
+
+ @Override
+ public Enumeration getHeaderNames() {
+ final Iterator it = headers.keySet().iterator();
+ return new Enumeration() {
+ public boolean hasMoreElements() {
+ return it.hasNext();
+ }
+
+ public Object nextElement() {
+ return it.hasNext() ? it.next() : null;
+ }
+ };
+ }
+
+ @Override
+ public int getIntHeader(String name) {
+ String val = headers.get(name);
+ if (val == null) {
+ return 0; // TODO ??
+ } else {
+ return Integer.parseInt(val);
+ }
+ }
+ }
+}
diff --git a/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
b/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
index d9d7587..7e5d52e 100644
--- a/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
+++ b/modules/enterprise/gui/rest-war/src/main/webapp/WEB-INF/web.xml
@@ -24,19 +24,46 @@
<param-name>resteasy.media.type.mappings</param-name>
<param-value>html : text/html, json : application/json, xml :
application/xml, csv : text/csv, txt: text/plain, yaml:
application/yaml</param-value>
</context-param>
+ <filter>
+ <filter-name>JsonPFilter</filter-name>
+ <filter-class>org.rhq.enterprise.rest.JsonPFilter</filter-class>
+ <init-param>
+ <param-name>filter.jsonp.callback</param-name>
+ <param-value>callback</param-value>
+ <description>Name of the callback to use for JsonP
(?callback=...)</description>
+ </init-param>
+ </filter>
- <!--
- <filter>
+<!-- Simple request header dumper for debugging purposes
+ <filter>
+ <filter-name>DumperFilter</filter-name>
+ <filter-class>org.rhq.enterprise.rest.HeaderDumperFilter</filter-class>
+ </filter>
+-->
+
+ <!--
+ <filter>
+
+ <filter-name>AuthFilter</filter-name>
+ <filter-class>org.rhq.enterprise.rest.AuthFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>AuthFilter</filter-name>
+ <servlet-name>Resteasy</servlet-name>
+ </filter-mapping>
+ -->
- <filter-name>AuthFilter</filter-name>
- <filter-class>org.rhq.enterprise.rest.AuthFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>AuthFilter</filter-name>
- <servlet-name>Resteasy</servlet-name>
- </filter-mapping>
- -->
+ <filter-mapping>
+ <filter-name>JsonPFilter</filter-name>
+ <url-pattern>/1/*</url-pattern>
+ </filter-mapping>
+<!--
+ <filter-mapping>
+ <filter-name>DumperFilter</filter-name>
+ <url-pattern>/1/*</url-pattern>
+ </filter-mapping>
+-->
<servlet>
<servlet-name>Resteasy</servlet-name>
commit 1667f9730e4d547b399e1b30ad9965d8773d11a5
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Jun 13 21:45:58 2012 -0400
[831254 - resource tree's right-mouse context menu item "Import" is
empty]
[814305 - Dealing with singletons in inventory]
Fix the context menu issue which was introduced with the original fix for
the singleton filtering support. There were a few issues here. In
the changes made to the context menu:
- fix confusion around and lack of complete support for both create child and import
- consolidate duplicate server calls, narrow the results with more criteria,
and avoid the call when not needed.
Additionally, the analogous change was not made to the Inventory->Child Resources
view which also offers Create Child and Import. The change here ended up being
tricky because it involved Table's TableActions, and filtering the menu
button values in the footer. This led to a ** CHANGE IN Table **, to add more
robust support for subclasses overriding default InitializableView support. In
short, Table subclasses can now perfom async calls in onInit() if they
properly override isInitialized() and be assured that configureTable() will
be called after initialization is complete.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index b76a7da..70e29d4 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Set;
import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.user.client.Timer;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
@@ -372,14 +373,47 @@ public class Table<DS extends RPCDataSource> extends
LocatableHLayout implements
return SelectionStyle.MULTIPLE;
}
+ // Table is an InitializableView. This onDraw() waits until we're sure we're
initialized and then
+ // lays down the canvas. This gives subclasses a chance to perform initialization
(including async calls)
+ // required to support the overrides (like configureTable()) they may have provided
and that are called in
+ // doOnDraw().
@Override
protected void onDraw() {
- try {
- super.onDraw();
+ super.onDraw();
+
+ if (isInitialized()) {
+ doOnDraw();
+
+ } else {
+ new Timer() {
+ final long startTime = System.currentTimeMillis();
+ public void run() {
+ if (isInitialized()) {
+ doOnDraw();
+ cancel();
+
+ } else {
+ // if after 10s we still aren't initialized just keep going,
else try again
+ long elapsedMillis = System.currentTimeMillis() - startTime;
+ if (elapsedMillis < 10000L) {
+ schedule(100); // Reschedule the timer.
+
+ } else {
+ doOnDraw();
+ cancel();
+ }
+ }
+ }
+ }.run(); // fire the timer immediately
+ }
+ }
+
+ protected void doOnDraw() {
+ try {
// I'm not sure this is necessary as I'm not sure it's the case
that draw()/onDraw() will get called
// multiple times. But if it did/does, this protects us by removing the
current members before they
- // get set below. Note that by having this here we *can non* add members in
onInit, because they will
+ // get set below. Note that by having this here we *can not* add members in
onInit, because they will
// immediately get removed. -jshaughn
for (Canvas child : contents.getMembers()) {
contents.removeChild(child);
@@ -463,6 +497,8 @@ public class Table<DS extends RPCDataSource> extends
LocatableHLayout implements
} catch (Exception e) {
CoreGUI.getErrorHandler().handleError(MSG.view_table_drawFail(this.toString()), e);
}
+
+ markForRedraw();
}
private void refreshRowCount() {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
index 001eb3c..bb43f26 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
@@ -22,6 +22,7 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
@@ -35,12 +36,14 @@ import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.DeleteResourceHistory;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.resource.composite.ResourcePermission;
+import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.components.table.AbstractTableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.TableActionEnablement;
@@ -48,6 +51,7 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryCreateWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryImportWizard;
+import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.TableUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -59,11 +63,19 @@ import
org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
public class ResourceCompositeSearchView extends ResourceSearchView {
private final ResourceComposite parentResourceComposite;
+ private boolean initialized;
+ private List<Resource> singletonChildren;
+ private Set<ResourceType> creatableChildTypes;
+ private Set<ResourceType> importableChildTypes;
+ private boolean hasCreatableTypes;
+ private boolean hasImportableTypes;
+ private boolean canCreate;
public ResourceCompositeSearchView(String locatorId, ResourceComposite
parentResourceComposite, Criteria criteria,
String title, SortSpecifier[] sortSpecifier, String[] excludeFields, String...
headerIcons) {
super(locatorId, criteria, title, sortSpecifier, excludeFields, headerIcons);
this.parentResourceComposite = parentResourceComposite;
+ this.canCreate =
this.parentResourceComposite.getResourcePermission().isCreateChildResources();
setInitialCriteriaFixed(true);
}
@@ -72,6 +84,56 @@ public class ResourceCompositeSearchView extends ResourceSearchView {
this(locatorId, parentResourceComposite, criteria, title, null, null,
headerIcons);
}
+ @Override
+ protected void onInit() {
+ super.onInit();
+
+ // To properly filter Create Child and Import menus we need existing singleton
child resources. If the
+ // user has creat permission and the parent type has singleton child types and
creatable or importable child
+ // types, perform an async call to fetch the singleton children. If we make the
async call don't declare this
+ // instance initialized until after it completesas we must have the children
before the menu buttons can be drawn.
+
+ final Resource parentResource = parentResourceComposite.getResource();
+ ResourceType parentType = parentResource.getResourceType();
+
+ creatableChildTypes = getCreatableChildTypes(parentType);
+ importableChildTypes = getImportableChildTypes(parentType);
+ hasCreatableTypes = !creatableChildTypes.isEmpty();
+ hasImportableTypes = !importableChildTypes.isEmpty();
+ singletonChildren = new ArrayList(); // initialize to non-null
+
+ Integer[] singletonChildTypes = getSingletonChildTypes(parentType);
+
+ if (canCreate && singletonChildTypes.length > 0 &&
(hasCreatableTypes || hasImportableTypes)) {
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterParentResourceId(parentResource.getId());
+ criteria.addFilterResourceTypeIds(singletonChildTypes);
+ GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
+ new AsyncCallback<PageList<Resource>>() {
+
+ @Override
+ public void onSuccess(PageList<Resource> result) {
+ singletonChildren = result;
+ initialized = true;
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.error("Failed to load child resources for [" +
parentResource + "]", caught);
+ initialized = true;
+ }
+ });
+
+ } else {
+ initialized = true;
+ }
+ }
+
+ @Override
+ public boolean isInitialized() {
+ return super.isInitialized() && this.initialized;
+ }
+
// suppress unchecked warnings because the superclass has different generic types for
the datasource
@SuppressWarnings("unchecked")
@Override
@@ -81,107 +143,161 @@ public class ResourceCompositeSearchView extends ResourceSearchView
{
@Override
protected void configureTable() {
- addTableAction(extendLocatorId("Delete"), MSG.common_button_delete(),
MSG
- .view_inventory_resources_deleteConfirm(), new
AbstractTableAction(TableActionEnablement.ANY) {
-
- // only enabled if all selected are a deletable type and if the user has
delete permission
- // on the resources.
- public boolean isEnabled(ListGridRecord[] selection) {
- boolean isEnabled = super.isEnabled(selection);
-
- if (isEnabled) {
- for (ListGridRecord record : selection) {
- ResourceComposite resComposite = (ResourceComposite) record
- .getAttributeAsObject("resourceComposite");
- Resource res = resComposite.getResource();
- if (!(isEnabled = res.getResourceType().isDeletable())) {
- break;
- }
- ResourcePermission resPermission =
resComposite.getResourcePermission();
- if (!(isEnabled = resPermission.isDeleteResource())) {
- break;
+ addTableAction(extendLocatorId("Delete"), MSG.common_button_delete(),
+ MSG.view_inventory_resources_deleteConfirm(), new
AbstractTableAction(TableActionEnablement.ANY) {
+
+ // only enabled if all selected are a deletable type and if the user has
delete permission
+ // on the resources.
+ public boolean isEnabled(ListGridRecord[] selection) {
+ boolean isEnabled = super.isEnabled(selection);
+
+ if (isEnabled) {
+ for (ListGridRecord record : selection) {
+ ResourceComposite resComposite = (ResourceComposite) record
+ .getAttributeAsObject("resourceComposite");
+ Resource res = resComposite.getResource();
+ if (!(isEnabled = res.getResourceType().isDeletable())) {
+ break;
+ }
+ ResourcePermission resPermission =
resComposite.getResourcePermission();
+ if (!(isEnabled = resPermission.isDeleteResource())) {
+ break;
+ }
}
}
+ return isEnabled;
}
- return isEnabled;
- }
- public void executeAction(ListGridRecord[] selection, Object actionValue) {
- int[] resourceIds = TableUtility.getIds(selection);
- ResourceGWTServiceAsync resourceManager =
GWTServiceLookup.getResourceService();
+ public void executeAction(ListGridRecord[] selection, Object actionValue)
{
+ int[] resourceIds = TableUtility.getIds(selection);
+ ResourceGWTServiceAsync resourceManager =
GWTServiceLookup.getResourceService();
- resourceManager.deleteResources(resourceIds, new
AsyncCallback<List<DeleteResourceHistory>>() {
- public void onFailure(Throwable caught) {
- if (caught instanceof CannotConnectToAgentException) {
- CoreGUI.getMessageCenter().notify(new
Message(MSG.view_inventory_resources_deleteFailed2(),
- Severity.Warning));
- } else {
-
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(),
caught);
+ resourceManager.deleteResources(resourceIds, new
AsyncCallback<List<DeleteResourceHistory>>() {
+ public void onFailure(Throwable caught) {
+ if (caught instanceof CannotConnectToAgentException) {
+ CoreGUI.getMessageCenter().notify(
+ new
Message(MSG.view_inventory_resources_deleteFailed2(), Severity.Warning));
+ } else {
+
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(),
+ caught);
+ }
}
- }
- public void onSuccess(List<DeleteResourceHistory> result) {
- CoreGUI.getMessageCenter().notify(
- new Message(MSG.view_inventory_resources_deleteSuccessful(),
Severity.Info));
+ public void onSuccess(List<DeleteResourceHistory> result)
{
+ CoreGUI.getMessageCenter().notify(
+ new
Message(MSG.view_inventory_resources_deleteSuccessful(), Severity.Info));
- refresh(true);
- // refresh the entire gui so it encompasses any relevant tree
view. Don't just call this.refresh(),
- // because CoreGUI.refresh is more comprehensive.
- CoreGUI.refresh();
- }
- });
- }
- });
+ refresh(true);
+ // refresh the entire gui so it encompasses any relevant tree
view. Don't just call this.refresh(),
+ // because CoreGUI.refresh is more comprehensive.
+ CoreGUI.refresh();
+ }
+ });
+ }
+ });
- if
(this.parentResourceComposite.getResourcePermission().isCreateChildResources()) {
- addImportButton();
- }
+ addImportAndCreateButtons();
super.configureTable();
}
@SuppressWarnings("unchecked")
- private void addImportButton() {
- ResourceType parentType =
parentResourceComposite.getResource().getResourceType();
+ private void addImportAndCreateButtons() {
+
+ final Resource parentResource = parentResourceComposite.getResource();
+ ResourceType parentType = parentResource.getResourceType();
+
+ // Create Child Menu and Manual Import Menu
+ if (canCreate && (hasCreatableTypes || hasImportableTypes)) {
+
+ if (hasCreatableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
+ LinkedHashMap<String, ResourceType> createTypeValueMap = new
LinkedHashMap<String, ResourceType>(
+ displayNameMap);
+ removeExistingSingletons(singletonChildren, createTypeValueMap);
+ addTableAction(extendLocatorId("CreateChild"),
MSG.common_button_create_child(), null,
+ createTypeValueMap, new
AbstractTableAction(TableActionEnablement.ALWAYS) {
+ public void executeAction(ListGridRecord[] selection, Object
actionValue) {
+ ResourceFactoryCreateWizard.showCreateWizard(parentResource,
(ResourceType) actionValue);
+ // we can refresh the table buttons immediately since the
wizard is a dialog, the
+ // user can't access enabled buttons anyway.
+ ResourceCompositeSearchView.this.refreshTableInfo();
+ }
+ });
+ }
- // manual import type menu
- Set<ResourceType> importableChildTypes =
getImportableChildTypes(parentType);
- if (!importableChildTypes.isEmpty()) {
- Map<String, ResourceType> displayNames =
getDisplayNames(importableChildTypes);
- LinkedHashMap<String, ResourceType> importTypeValueMap = new
LinkedHashMap<String, ResourceType>(displayNames);
+ if (hasImportableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(importableChildTypes);
+ LinkedHashMap<String, ResourceType> importTypeValueMap = new
LinkedHashMap<String, ResourceType>(
+ displayNameMap);
+ removeExistingSingletons(singletonChildren, importTypeValueMap);
+ addTableAction(extendLocatorId("Import"),
MSG.common_button_import(), null, importTypeValueMap,
+ new AbstractTableAction(TableActionEnablement.ALWAYS) {
+ public void executeAction(ListGridRecord[] selection, Object
actionValue) {
+ ResourceFactoryImportWizard.showImportWizard(parentResource,
(ResourceType) actionValue);
+ // we can refresh the table buttons immediately since the
wizard is a dialog, the
+ // user can't access enabled buttons anyway.
+ ResourceCompositeSearchView.this.refreshTableInfo();
+ }
+ });
+ }
- addTableAction(extendLocatorId("Import"),
MSG.common_button_import(), null, importTypeValueMap,
- new AbstractTableAction(TableActionEnablement.ALWAYS) {
+ } else {
+ if (!canCreate && hasCreatableTypes) {
+ addTableAction(extendLocatorId("CreateChild"),
MSG.common_button_create_child(),
+ new AbstractTableAction(TableActionEnablement.NEVER) {
+ public void executeAction(ListGridRecord[] selection, Object
actionValue) {
+ // never called
+ }
+ });
+ }
+ if (!canCreate && hasImportableTypes) {
+ addTableAction(extendLocatorId("Import"),
MSG.common_button_import(), new AbstractTableAction(
+ TableActionEnablement.NEVER) {
public void executeAction(ListGridRecord[] selection, Object
actionValue) {
-
ResourceFactoryImportWizard.showImportWizard(parentResourceComposite.getResource(),
- (ResourceType) actionValue);
- // we can refresh the table buttons immediately since the wizard
is a dialog, the
- // user can't access enabled buttons anyway.
- ResourceCompositeSearchView.this.refreshTableInfo();
+ // never called
}
});
+ }
}
+ }
- // creatable child type menu
- Set<ResourceType> creatableChildTypes =
getCreatableChildTypes(parentType);
- if (!creatableChildTypes.isEmpty()) {
- Map<String, ResourceType> displayNames =
getDisplayNames(creatableChildTypes);
- LinkedHashMap<String, ResourceType> createTypeValueMap = new
LinkedHashMap<String, ResourceType>(displayNames);
+ private void removeExistingSingletons(List<Resource> singletonChildren,
Map<String, ResourceType> displayNameMap) {
- addTableAction(extendLocatorId("CreateChild"),
MSG.common_button_create_child(), null, createTypeValueMap,
- new AbstractTableAction(TableActionEnablement.ALWAYS) {
+ List<String> existingSingletons = new ArrayList<String>();
- public void executeAction(ListGridRecord[] selection, Object
actionValue) {
-
ResourceFactoryCreateWizard.showCreateWizard(parentResourceComposite.getResource(),
- (ResourceType) actionValue);
- // we can refresh the table buttons immediately since the wizard
is a dialog, the
- // user can't access enabled buttons anyway.
- ResourceCompositeSearchView.this.refreshTableInfo();
+ Set<String> displayNames = displayNameMap.keySet();
+ for (final String displayName : displayNames) {
+ final ResourceType type = displayNameMap.get(displayName);
+ boolean exists = false;
+
+ if (type.isSingleton()) {
+ for (Resource child : singletonChildren) {
+ exists =
child.getResourceType().equals(displayNameMap.get(displayName));
+ if (exists) {
+ existingSingletons.add(displayName);
+ break;
}
- });
+ }
+ }
+ }
+ for (String existing : existingSingletons) {
+ displayNameMap.remove(existing);
}
}
+ private static Integer[] getSingletonChildTypes(ResourceType type) {
+ Set<Integer> results = new TreeSet<Integer>();
+ Set<ResourceType> childTypes = type.getChildResourceTypes();
+ for (ResourceType childType : childTypes) {
+ if (childType.isSingleton()) {
+ results.add(childType.getId());
+ }
+ }
+
+ return results.toArray(new Integer[results.size()]);
+ }
+
private static Set<ResourceType> getImportableChildTypes(ResourceType type) {
Set<ResourceType> results = new TreeSet<ResourceType>();
Set<ResourceType> childTypes = type.getChildResourceTypes();
@@ -240,8 +356,8 @@ public class ResourceCompositeSearchView extends ResourceSearchView {
// -------- Static Utility loaders ------------
public static ResourceCompositeSearchView getChildrenOf(String locatorId,
ResourceComposite parentResourceComposite) {
- return new ResourceCompositeSearchView(locatorId, parentResourceComposite, new
Criteria("parentId", String
- .valueOf(parentResourceComposite.getResource().getId())),
MSG.view_tabs_common_child_resources());
+ return new ResourceCompositeSearchView(locatorId, parentResourceComposite, new
Criteria("parentId",
+ String.valueOf(parentResourceComposite.getResource().getId())),
MSG.view_tabs_common_child_resources());
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index 0f37f65..2393f8d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -93,6 +93,7 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.ResourceGro
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.ResourceGroupDetailView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceTreeDatasource.AutoGroupTreeNode;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceTreeDatasource.ResourceTreeNode;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryCreateWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryImportWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.Log;
@@ -257,8 +258,8 @@ public class ResourceTreeView extends LocatableVLayout {
}
// do not update the selection when expanding other tree node (BZ
816086)
TreeNode parent = dataArrivedEvent.getParentNode();
- if (parent instanceof EnhancedTreeNode && ((EnhancedTreeNode)
parent).getID().equals(selectedNodeId)) {
- updateSelection();
+ if (parent instanceof EnhancedTreeNode && ((EnhancedTreeNode)
parent).getID().equals(selectedNodeId)) {
+ updateSelection();
}
}
});
@@ -298,7 +299,8 @@ public class ResourceTreeView extends LocatableVLayout {
resourceGroupService.createPrivateResourceGroup(backingGroup,
childIds,
new AsyncCallback<ResourceGroup>() {
public void onFailure(Throwable caught) {
- callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_create(), caught));
+ callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_create(),
+ caught));
}
public void onSuccess(ResourceGroup result) {
@@ -320,7 +322,8 @@ public class ResourceTreeView extends LocatableVLayout {
resourceGroupService.setAssignedResources(backingGroup.getId(),
childIds, false,
new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_update(), caught));
+ callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_update(),
+ caught));
}
public void onSuccess(Void result) {
@@ -419,8 +422,7 @@ public class ResourceTreeView extends LocatableVLayout {
new ResourceTypeRepository.TypeLoadedCallback() {
public void onTypesLoaded(ResourceType type) {
- buildResourceContextMenu(node, resourceComposite,
type);
- resourceContextMenu.showContextMenu();
+ buildAndShowResourceContextMenu(node,
resourceComposite, type);
}
});
}
@@ -428,8 +430,8 @@ public class ResourceTreeView extends LocatableVLayout {
});
}
- private void buildResourceContextMenu(final ResourceTreeNode node, final
ResourceComposite resourceComposite,
- final ResourceType resourceType) {
+ private void buildAndShowResourceContextMenu(final ResourceTreeNode node,
+ final ResourceComposite resourceComposite, final ResourceType resourceType) {
final Resource resource = resourceComposite.getResource();
final ResourcePermission resourcePermission =
resourceComposite.getResourcePermission();
@@ -540,105 +542,134 @@ public class ResourceTreeView extends LocatableVLayout {
// Metric graph addition menu
resourceContextMenu.addItem(buildMetricsMenu(resourceType, resource));
- // Create Child Menu
- Set<ResourceType> creatableChildTypes =
getCreatableChildTypes(resourceType);
- if (!creatableChildTypes.isEmpty()) {
- final MenuItem createChildMenu = new
MenuItem(MSG.common_button_create_child());
- boolean hasCreateChildPermission =
resourcePermission.isCreateChildResources();
- createChildMenu.setEnabled(hasCreateChildPermission);
- if (hasCreateChildPermission) {
- final Menu createChildSubMenu = new Menu();
- final Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
-
- ResourceCriteria criteria = new ResourceCriteria();
- criteria.addFilterParentResourceId(resource.getId());
- GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
- new AsyncCallback<PageList<Resource>>() {
-
- @Override
- public void onSuccess(PageList<Resource> result) {
- Menu filteredSubmenu = checkForSingletons(result, resource,
displayNameMap,
- createChildSubMenu);
- createChildMenu.setSubmenu(filteredSubmenu);
- resourceContextMenu.addItem(createChildMenu);
+ // Create Child Menu and Manual Import Menu
+ final Set<ResourceType> creatableChildTypes =
getCreatableChildTypes(resourceType);
+ final Set<ResourceType> importableChildTypes =
getImportableChildTypes(resourceType);
+ final boolean hasCreatableTypes = !creatableChildTypes.isEmpty();
+ final boolean hasImportableTypes = !importableChildTypes.isEmpty();
+ boolean canCreate = resourcePermission.isCreateChildResources();
+
+ Integer[] singletonChildTypes = getSingletonChildTypes(resourceType);
+
+ // To properly filter Create Child and Import menus we need existing singleton
child resources. If the
+ // user has creat permission and the parent type has singleton child types and
creatable or importable child
+ // types, perform an async call to fetch the singleton children.
+ if (canCreate && singletonChildTypes.length > 0 &&
(hasCreatableTypes || hasImportableTypes)) {
+
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterParentResourceId(resource.getId());
+ criteria.addFilterResourceTypeIds(singletonChildTypes);
+ GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
+ new AsyncCallback<PageList<Resource>>() {
+
+ @Override
+ public void onSuccess(PageList<Resource> singletonChildren) {
+ if (hasCreatableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
+ addMenu(MSG.common_button_create_child(), true,
singletonChildren, resource, displayNameMap);
}
- @Override
- public void onFailure(Throwable caught) {
- Log.error("Error resources with parentId:" +
resource.getId(), caught);
+ if (hasImportableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(importableChildTypes);
+ addMenu(MSG.common_button_import(), true, singletonChildren,
resource, displayNameMap);
}
- });
- } else {
- resourceContextMenu.addItem(createChildMenu);
+ resourceContextMenu.showContextMenu();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.error("Error resources with parentId:" +
resource.getId(), caught);
+ resourceContextMenu.showContextMenu();
+ }
+ });
+ } else if (canCreate && singletonChildTypes.length == 0 &&
(hasCreatableTypes || hasImportableTypes)) {
+ if (hasCreatableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
+ addMenu(MSG.common_button_create_child(), true, null, resource,
displayNameMap);
}
- }
- // Manual Import Menu
- Set<ResourceType> importableChildTypes =
getImportableChildTypes(resourceType);
-
- if (!importableChildTypes.isEmpty()) {
- final MenuItem importChildMenu = new MenuItem(MSG.common_button_import());
- boolean hasManualImportPermission =
resourcePermission.isCreateChildResources();
- importChildMenu.setEnabled(hasManualImportPermission);
- if (hasManualImportPermission) {
- final Menu importChildSubMenu = new Menu();
- final Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
-
- ResourceCriteria criteria = new ResourceCriteria();
- criteria.addFilterParentResourceId(resource.getId());
- GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
- new AsyncCallback<PageList<Resource>>() {
-
- @Override
- public void onSuccess(PageList<Resource> result) {
- Menu filteredSubmenu = checkForSingletons(result, resource,
displayNameMap,
- importChildSubMenu);
- importChildMenu.setSubmenu(filteredSubmenu);
- resourceContextMenu.addItem(importChildMenu);
- }
+ if (hasImportableTypes) {
+ Map<String, ResourceType> displayNameMap =
getDisplayNames(importableChildTypes);
+ addMenu(MSG.common_button_import(), true, null, resource,
displayNameMap);
+ }
- @Override
- public void onFailure(Throwable caught) {
- Log.error("Error resources with parentId:" +
resource.getId(), caught);
- }
- });
+ resourceContextMenu.showContextMenu();
- } else {
- resourceContextMenu.addItem(importChildMenu);
+ } else {
+ if (!canCreate && hasCreatableTypes) {
+ addMenu(MSG.common_button_create_child(), false, null, null, null);
+ }
+ if (!canCreate && hasImportableTypes) {
+ addMenu(MSG.common_button_import(), false, null, null, null);
}
+
+ resourceContextMenu.showContextMenu();
+ }
+ }
+
+ private void addMenu(String name, boolean enabled, List<Resource>
singletonChildren, Resource resource,
+ Map<String, ResourceType> displayNameMap) {
+ MenuItem menu = new MenuItem(name);
+ if (enabled) {
+ Menu subMenu = new Menu();
+ singletonChildren = (null == singletonChildren) ? new ArrayList() :
singletonChildren;
+ Menu filteredSubMenu = checkForSingletons(singletonChildren, resource,
displayNameMap, subMenu, true);
+ menu.setSubmenu(filteredSubMenu);
+ } else {
+ menu.setEnabled(false);
}
+ resourceContextMenu.addItem(menu);
}
- private Menu checkForSingletons(PageList<Resource> siblings, final Resource
resource,
- Map<String, ResourceType> displayNameMap, Menu submentuToAdd) {
+ private static Integer[] getSingletonChildTypes(ResourceType type) {
+ Set<Integer> results = new TreeSet<Integer>();
+ Set<ResourceType> childTypes = type.getChildResourceTypes();
+ for (ResourceType childType : childTypes) {
+ if (childType.isSingleton()) {
+ results.add(childType.getId());
+ }
+ }
+
+ return results.toArray(new Integer[results.size()]);
+ }
+
+ private Menu checkForSingletons(List<Resource> singletonChildren, final
Resource resource,
+ Map<String, ResourceType> displayNameMap, Menu subMenu, final boolean
isCreate) {
+
Set<String> displayNames = displayNameMap.keySet();
for (final String displayName : displayNames) {
MenuItem itemToAdd = new MenuItem(displayName);
- final ResourceType childType = displayNameMap.get(displayName);
- boolean disabled = false;
- // for each already added child, check if the type is the same.
- // If yes, disable the menu item
- if (displayNameMap.get(displayName).isSingleton()) {
- for (Resource sibling : siblings) {
- if
(sibling.getResourceType().equals(displayNameMap.get(displayName))) {
- disabled = true;
+ final ResourceType type = displayNameMap.get(displayName);
+ boolean exists = false;
+
+ // disable the menu item for a singleton type that already has a singleton
child resource
+ if (type.isSingleton()) {
+ for (Resource child : singletonChildren) {
+ exists =
child.getResourceType().equals(displayNameMap.get(displayName));
+ if (exists) {
break;
}
}
}
- // if the condition obove is not satisfied, add the menu item
- if (!disabled) {
+
+ // omit the type's menu item if the singleton already exists, otherwise
add the necessary click handler.
+ // note: we omit as opposed to disable the menu item to match the behavior of
the buttons in the Inventory
+ // -> Child Resources view, which has no facility to do the anologous
disabling.
+ if (!exists) {
itemToAdd.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- ResourceFactoryImportWizard.showImportWizard(resource,
childType);
+ if (isCreate) {
+ ResourceFactoryCreateWizard.showCreateWizard(resource,
type);
+ } else {
+ ResourceFactoryImportWizard.showImportWizard(resource,
type);
+ }
}
});
- submentuToAdd.addItem(itemToAdd);
+ subMenu.addItem(itemToAdd);
}
-
}
- return submentuToAdd;
+ return subMenu;
}
/**
@@ -1029,31 +1060,6 @@ public class ResourceTreeView extends LocatableVLayout {
}
}
- /*private List<Resource> preload(final List<Resource> lineage) {
-
- final ArrayList<Resource> list = new
ArrayList<Resource>(lineage);
-
- ResourceGWTServiceAsync resourceService =
ResourceGWTServiceAsync.Util.getInstance();
-
- ResourceCriteria c = new ResourceCriteria();
- c.addFilterParentResourceId(lineage.get(0).getId());
- resourceService.findResourcesByCriteria(CoreGUI.getSessionSubject(), c,
new AsyncCallback<PageList<Resource>>() {
- public void onFailure(Throwable caught) {
- SC.say("NotGood");
- }
-
- public void onSuccess(PageList<Resource> result) {
- SC.say("GotONE");
-
- if (lineage.size() > 1) {
- result.addAll(preload(lineage.subList(1, lineage.size())));
- }
- }
- });
- }
- }
- */
-
public void renderView(ViewPath viewPath) {
ViewId currentViewId = viewPath.getCurrent();
commit 38d06cb32c41fa525269c564278a163613509441
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Jun 13 21:26:16 2012 -0400
Fix a couple of I18N issues. Remove some newly inroduced duplicates of
common values. And convert commented czech to commented english.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index 8a12549..5748811 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -32,7 +32,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.google.gwt.i18n.client.LocalizableResource.Description;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.AutoFitWidthApproach;
@@ -575,13 +574,13 @@ public class ConfigurationEditor extends LocatableVLayout {
fields.add(unsetHeader);
StaticTextItem valueHeader = new StaticTextItem();
- valueHeader.setValue(MSG.view_configEdit_value());
+ valueHeader.setValue(MSG.common_title_value());
valueHeader.setShowTitle(false);
valueHeader.setCellStyle(CELL_STYLE);
fields.add(valueHeader);
StaticTextItem descriptionHeader = new StaticTextItem();
- descriptionHeader.setValue(MSG.view_configEdit_description());
+ descriptionHeader.setValue(MSG.common_title_description());
descriptionHeader.setShowTitle(false);
descriptionHeader.setCellStyle(CELL_STYLE);
fields.add(descriptionHeader);
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 4852efc..0e948cd 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1167,7 +1167,6 @@ view_configEdit_addItem = Add Item to List
view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
view_configEdit_confirm_2 = Are you sure you want to delete this row?
view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
-view_configEdit_description = Description
view_configEdit_editRow = Edit Row
view_configEdit_enterPropName = Enter the name of the property to be added.
view_configEdit_error_1 = Configuration is not supported by this Resource.
@@ -1185,7 +1184,6 @@ view_configEdit_property = Property
view_configEdit_tooltip_1 = Delete the selected items from the list.
view_configEdit_tooltip_2 = Add an item to the list.
view_configEdit_unset = Unset?
-view_configEdit_value = Value
view_configEdit_viewRow = View Row
view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 67a0445..a5d71dd 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1186,7 +1186,6 @@ view_configEdit_addItem = Přidat položku do seznamu
view_configEdit_confirm_1 = Jste si jisti, že chcete smazat vybrané vlastnosti z
množiny?
view_configEdit_confirm_2 = Jste si jisti, že chcete smazat tento řádek?
view_configEdit_confirm_3 = Jste si jisti, že chcete smazat [{0}] vybrané [{1}]?
-view_configEdit_description = Popis
view_configEdit_editRow = Editovat řádek
view_configEdit_enterPropName = Vložte platné jméno vlastnosti, která má být přidána.
view_configEdit_error_1 = Konfigurace pro tento zdroj není podporována.
@@ -1204,7 +1203,6 @@ view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 = Smazat vybrané položky ze seznamu.
view_configEdit_tooltip_2 = Přidat položku do seznamu.
view_configEdit_unset = Nenastaveno?
-view_configEdit_value = Hodnota
view_configEdit_viewRow = Zobrazit řádek
view_configurationDetails_allPropertiesValid = Všechny vlastnosti konfigurace mají platné
hodnoty, takže konfigurace bude uložena.
view_configurationDetails_configNotUpdatedDueToNoChange = Konfigurace nebyla změněna,
protože nová konfigurace je ekvivalentní té stávající.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 43c6479..57ffe8d 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1051,7 +1051,6 @@ view_configEdit_addItem = Eintrag zur Liste hinzufügen
##view_configEdit_confirm_1 = Are you sure you want to delete the selected properties
from the set?
view_configEdit_confirm_2 = Sind Sie sicher dass sie diese Zeile löschen wollen?
##view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
-##view_configEdit_description = Description
##view_configEdit_editRow = Edit Configuration Row
##view_configEdit_enterPropName = Enter the name of the property to be added.
##view_configEdit_error_1 = Configuration is not supported by this Resource.
@@ -1065,11 +1064,10 @@ view_configEdit_msg_1 = Eigentschaft [{0}] zur Menge hinzugefügt
view_configEdit_msg_3 = [{0} {1}] aus der Liste gelöscht.
view_configEdit_msg_4 = Eintrag zur Liste hinzugefügt.
view_configEdit_properties = Eigenschaften
-##view_configEdit_property = Vlastnost
+##view_configEdit_property = Property
view_configEdit_tooltip_1 = Die ausgewählten Einträge aus der Liste löschen.
view_configEdit_tooltip_2 = Einen Eintrag zur Liste hinzufügen.
##view_configEdit_unset = Unset?
-##view_configEdit_value = Value
##view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
view_configurationDetails_error_updateFailure = Konnte die Konfiguration nicht
aktualisieren
view_configurationDetails_messageConcise = Konfiguration aktualisiert - aktuelle Version
is {0}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 9380390..0644243 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1163,7 +1163,6 @@ view_configEdit_addItem = リストに項目を追加
view_configEdit_confirm_1 = その集まりから選択されたプロパティを削除してもよろしいですか?
view_configEdit_confirm_2 = この行を削除してもよろしいですか?
view_configEdit_confirm_3 = [{1}] が選択された [{0}] を削除してもよろしいですか?
-##view_configEdit_description = Description
view_configEdit_editRow = 行の編集
view_configEdit_enterPropName = 追加するプロパティの名前を入力してください
view_configEdit_error_1 = 構成はこのリソースでサポートされていません
@@ -1177,11 +1176,10 @@ view_configEdit_msg_2 = セットからプロパティを取り除きました
view_configEdit_msg_3 = [{0} {1}] がリストから削除されました
view_configEdit_msg_4 = リストに追加されたアイテム
view_configEdit_properties = プロパティ
-##view_configEdit_property = Vlastnost
+##view_configEdit_property = Property
view_configEdit_tooltip_1 = リストから選択されたアイテムが削除します
view_configEdit_tooltip_2 = リストにアイテムを追加します
##view_configEdit_unset = Unset?
-##view_configEdit_value = Value
view_configEdit_viewRow = 行の閲覧
view_configurationDetails_allPropertiesValid = すべての構成プロパティは正しい値なので、この構成は保存可能です
view_configurationDetails_configNotUpdatedDueToNoChange =
構成は更新されませんでした。なぜなら新しい構成は現在の構成と同一だからです
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index b167577..923ace3 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -1173,7 +1173,6 @@ view_configEdit_addItem = Adicionar Item \u00E0 Lista
view_configEdit_confirm_1 = Tem certeza de que deseja excluir as propriedades
selecionadas?
view_configEdit_confirm_2 = Tem certeza de que deseja excluir esta linha?
view_configEdit_confirm_3 = Tem certeza de que deseja excluir [{0}] selecionado [{1}]?
-##view_configEdit_description = Description
view_configEdit_editRow = Editar Linha de Configura\u00E7\u00E3o
view_configEdit_enterPropName = Informe o nome da propriedade a ser adicionada.
view_configEdit_error_1 = Este recurso n\u00E3o suporta Configura\u00E7\u00E3o.
@@ -1187,11 +1186,10 @@ view_configEdit_msg_2 = Propriedades removidas do conjunto.
view_configEdit_msg_3 = [{0} {1}] removido da lista.
view_configEdit_msg_4 = Item adicionado \u00E0 lista.
view_configEdit_properties = Propriedades
-##view_configEdit_property = Vlastnost
+##view_configEdit_property = Property
view_configEdit_tooltip_1 = Remove os itens selecionados da lista.
view_configEdit_tooltip_2 = Adiciona um item \u00E0 lista.
##view_configEdit_unset = Unset?
-##view_configEdit_value = Value
view_configEdit_viewRow = Visualizar linha
view_configurationDetails_allPropertiesValid = Todas as propriedades de
configura\u00E7\u00E3o s\u00E3o v\u00E1lidas, portanto a configura\u00E7\u00E3o pode ser
salva.
view_configurationDetails_configNotUpdatedDueToNoChange = A configura��o n�o foi
atualizada, pois a nova configura��o � equivalente � atual.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index faeb808..f34cb82 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2454,10 +2454,8 @@ view_admin_downloads_cli_version = Версия CLI
##view_alert_details_field_resource_ancestry = Resource Ancestry
##view_alert_details_field_watched_resource = Watched Resource
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
-##view_configEdit_description = Description
-##view_configEdit_property = Vlastnost
+##view_configEdit_property = Property
##view_configEdit_unset = Unset?
-##view_configEdit_value = Value
##view_messageCenter_messageRootCause = Root Cause
##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 51b4ab1..bafb045 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1157,7 +1157,6 @@ view_configEdit_addItem =
\u6dfb\u52a0\u6761\u76ee\u81f3\u5217\u8868.
view_configEdit_confirm_1 =
\u786e\u5b9a\u8981\u4ece\u96c6\u5408\u4e2d\u5220\u9664\u6307\u5b9a\u7684\u5c5e\u6027?
view_configEdit_confirm_2 = \u786e\u5b9a\u8981\u5220\u9664\u8be5\u884c?
view_configEdit_confirm_3 = \u786e\u5b9a\u8981\u5220\u9664 [{0}]\u9879\u9009\u4e2d\u7684
[{1}]?
-##view_configEdit_description = Description
view_configEdit_editRow = \u7f16\u8f91\u884c
view_configEdit_enterPropName =
\u8f93\u5165\u8981\u6dfb\u52a0\u7684\u5c5e\u6027\u540d\u79f0.
view_configEdit_error_1 = \u6b64\u8d44\u6e90\u65e0\u6cd5\u914d\u7f6e.
@@ -1171,11 +1170,10 @@ view_configEdit_msg_2 =
\u79fb\u9664\u96c6\u5408\u5185\u6240\u6709\u7684\u5c5e\u
view_configEdit_msg_3 = \u4ece\u5217\u8868\u4e2d\u5220\u9664[{0} {1}]\u6210\u529f.
view_configEdit_msg_4 = \u6dfb\u52a0\u6761\u76ee\u81f3\u5217\u8868.
view_configEdit_properties = \u5c5e\u6027
-##view_configEdit_property = Vlastnost
+##view_configEdit_property = Property
view_configEdit_tooltip_1 =
\u4ece\u5217\u8868\u4e2d\u5220\u9664\u9009\u4e2d\u7684\u6761\u76ee.
view_configEdit_tooltip_2 = \u6dfb\u52a0\u4e00\u9879\u6761\u76ee\u5230\u5217\u8868.
##view_configEdit_unset = Unset?
-##view_configEdit_value = Value
view_configEdit_viewRow = \u67e5\u770b\u884c
view_configurationDetails_allPropertiesValid =
\u6240\u6709\u7684\u914d\u7f6e\u4fe1\u606f\u5df2\u7ecf\u586b\u5199\u4e86\u6709\u6548\u7684\u503c,
\u73b0\u5728\u4fdd\u5b58\u914d\u7f6e.
view_configurationDetails_configNotUpdatedDueToNoChange =
\u7531\u4e8e\u65b0\u65e7\u914d\u7f6e\u4e00\u81f4\uff0c\u6240\u4ee5\u914d\u7f6e\u6ca1\u6709\u66f4\u65b0.
commit f869281799f6a50eea6c5ef0e4b37bbc82070f76
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Jun 13 13:52:37 2012 -0400
extract two test methods that are mysteriously failing in AgentComm2Test - put them in
their own separate test classes. These are now passing more regularly on my box. Let's
see how jenkins likes this.
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
index 1f1160c..add5e82 100644
--- a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
@@ -285,80 +285,6 @@ public class AgentComm2Test extends AgentCommTestBase {
}
/**
- * Sends a secure message from one remote server to another - there will be full
authentication including server and
- * client authentication.
- *
- * @throws Exception
- */
- @Test(enabled = ENABLE_TESTS)
- public void testSendSecureMessageFullAuth() throws Exception {
- // each keystore is the other's truststore
- Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
-
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
- "target/testdata2/keystore.dat");
-
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
- "target/testdata2/keystore.dat");
-
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
-
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
- SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
-
- m_agent1Test.setConfigurationOverrides(props1);
-
- Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
-
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
- "target/testdata/keystore.dat");
-
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
- "target/testdata/keystore.dat");
-
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
-
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
- SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
-
- m_agent2Test.setConfigurationOverrides(props2);
-
- AgentMain agent1 = m_agent1Test.createAgent(true);
- AgentMain agent2 = m_agent2Test.createAgent(true);
-
- assert
agent1.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
- assert
agent2.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
-
- assert
agent1.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
- assert
agent2.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
-
- assert agent1.getConfiguration().isClientSenderSecurityServerAuthMode();
- assert agent2.getConfiguration().isClientSenderSecurityServerAuthMode();
-
- assert
agent1.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
- SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
- assert
agent2.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
- SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
-
- IdentifyCommand command = new IdentifyCommand();
- CommandResponse cmdresponse;
- IdentifyCommandResponse response;
-
- cmdresponse = agent1.getClientCommandSender().sendSynch(command);
- assert cmdresponse.isSuccessful() : "Failed to send command from agent1 to
agent2: " + cmdresponse;
- response = (IdentifyCommandResponse) cmdresponse;
- assert new
InvokerLocator(response.getIdentification().getInvokerLocator()).getPort() == agent2
- .getServiceContainer().getConfiguration().getConnectorBindPort() :
"Didn't get the identify of agent2 - what remoting server did we just communicate
with??";
-
- // JBoss Remoting 2 doesn't seem to like me doing bi-directional messaging
within the same VM
- // cmdresponse = agent2.getClientCommandSender().sendSynch( command );
- // assert cmdresponse.isSuccessful() : "Failed to send command from
agent2 to agent1: " + cmdresponse;
- // response = (IdentifyCommandResponse) cmdresponse;
- // assert new InvokerLocator(
response.getIdentification().getInvokerLocator() ).getPort()
- // ==
agent1.getServiceContainer().getConfiguration().getConnectorBindPort() : "Didn't
get the identity of agent1 - what remoting server did we just communicate with??";
-
- return;
- }
-
- /**
* Prepares to send a secure message from one remote server to another - there will
be full authentication including
* server and client authentication but the keystore passwords will be invalid thus
causing errors.
*
@@ -417,80 +343,6 @@ public class AgentComm2Test extends AgentCommTestBase {
}
/**
- * Sends a secure message from one remote server to another where both servers want
client authentication and both
- * clients have truststores with the appropriate keys (therefore, the clients should
be able to successfully send).
- *
- * @throws Exception
- */
- @Test(enabled = ENABLE_TESTS)
- public void testSendSecureMessageClientAuthWantWithTruststore() throws Exception {
- // each keystore is the other's truststore
- Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
-
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
- "target/testdata2/keystore.dat");
-
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
- "target/testdata2/keystore.dat");
-
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
-
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
- SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
-
- m_agent1Test.setConfigurationOverrides(props1);
-
- Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
-
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
- "target/testdata/keystore.dat");
-
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
- "target/testdata/keystore.dat");
-
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
-
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
- SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
-
- m_agent2Test.setConfigurationOverrides(props2);
-
- AgentMain agent1 = m_agent1Test.createAgent(true);
- AgentMain agent2 = m_agent2Test.createAgent(true);
-
- assert
agent1.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
- assert
agent2.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
-
- assert
agent1.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
- assert
agent2.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
-
- assert agent1.getConfiguration().isClientSenderSecurityServerAuthMode();
- assert agent2.getConfiguration().isClientSenderSecurityServerAuthMode();
-
- assert
agent1.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
- SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
- assert
agent2.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
- SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
-
- IdentifyCommand command = new IdentifyCommand();
- CommandResponse cmdresponse;
- IdentifyCommandResponse response;
-
- cmdresponse = agent1.getClientCommandSender().sendSynch(command);
- assert cmdresponse.isSuccessful() : "Failed to send command from agent1 to
agent2: " + cmdresponse;
- response = (IdentifyCommandResponse) cmdresponse;
- assert new
InvokerLocator(response.getIdentification().getInvokerLocator()).getPort() == agent2
- .getServiceContainer().getConfiguration().getConnectorBindPort() :
"Didn't get the identify of agent2 - what remoting server did we just communicate
with??";
-
- // JBoss Remoting 2.2.SP4 doesn't seem to like me doing bi-directional
messaging within the same VM
- // cmdresponse = agent2.getClientCommandSender().sendSynch( command );
- // assert cmdresponse.isSuccessful() : "Failed to send command from
agent2 to agent1: " + cmdresponse;
- // response = (IdentifyCommandResponse) cmdresponse;
- // assert new InvokerLocator(
response.getIdentification().getInvokerLocator() ).getPort()
- // ==
agent1.getServiceContainer().getConfiguration().getConnectorBindPort() : "Didn't
get the identity of agent1 - what remoting server did we just communicate with??";
-
- return;
- }
-
- /**
* Sends a secure message from one remote server to another with the secure protocol
being different for each remote
* server (cool, huh?) - there will be no authentication, just encryption.
*
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm5Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm5Test.java
new file mode 100644
index 0000000..14585da
--- /dev/null
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm5Test.java
@@ -0,0 +1,112 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.agent;
+
+import java.util.Properties;
+
+import org.testng.annotations.Test;
+
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.security.SSLSocketBuilder;
+
+import org.rhq.enterprise.communications.ServiceContainerConfigurationConstants;
+import org.rhq.enterprise.communications.command.CommandResponse;
+import org.rhq.enterprise.communications.command.impl.identify.IdentifyCommand;
+import org.rhq.enterprise.communications.command.impl.identify.IdentifyCommandResponse;
+
+/**
+ * This tests the communications layer in the agent.
+ *
+ * @author John Mazzitelli
+ */
+@Test(groups = "agent.comm")
+public class AgentComm5Test extends AgentCommTestBase {
+ /**
+ * Sends a secure message from one remote server to another where both servers want
client authentication and both
+ * clients have truststores with the appropriate keys (therefore, the clients should
be able to successfully send).
+ *
+ * @throws Exception
+ */
+ public void testSendSecureMessageClientAuthWantWithTruststore() throws Exception {
+ // each keystore is the other's truststore
+ Properties props1 = new Properties();
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
+
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata2/keystore.dat");
+
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata2/keystore.dat");
+
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
+
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
+ SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
+
+ m_agent1Test.setConfigurationOverrides(props1);
+
+ Properties props2 = new Properties();
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
+
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata/keystore.dat");
+
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata/keystore.dat");
+
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
+
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
+ SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
+
+ m_agent2Test.setConfigurationOverrides(props2);
+
+ AgentMain agent1 = m_agent1Test.createAgent(true);
+ AgentMain agent2 = m_agent2Test.createAgent(true);
+
+ assert
agent1.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
+ assert
agent2.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
+
+ assert
agent1.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
+ assert
agent2.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
+
+ assert agent1.getConfiguration().isClientSenderSecurityServerAuthMode();
+ assert agent2.getConfiguration().isClientSenderSecurityServerAuthMode();
+
+ assert
agent1.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
+ SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
+ assert
agent2.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
+ SSLSocketBuilder.CLIENT_AUTH_MODE_WANT);
+
+ IdentifyCommand command = new IdentifyCommand();
+ CommandResponse cmdresponse;
+ IdentifyCommandResponse response;
+
+ cmdresponse = agent1.getClientCommandSender().sendSynch(command);
+ assert cmdresponse.isSuccessful() : "Failed to send command from agent1 to
agent2: " + cmdresponse;
+ response = (IdentifyCommandResponse) cmdresponse;
+ assert new
InvokerLocator(response.getIdentification().getInvokerLocator()).getPort() == agent2
+ .getServiceContainer().getConfiguration().getConnectorBindPort() :
"Didn't get the identify of agent2 - what remoting server did we just communicate
with??";
+
+ // JBoss Remoting 2.2.SP4 doesn't seem to like me doing bi-directional
messaging within the same VM
+ // cmdresponse = agent2.getClientCommandSender().sendSynch( command );
+ // assert cmdresponse.isSuccessful() : "Failed to send command from
agent2 to agent1: " + cmdresponse;
+ // response = (IdentifyCommandResponse) cmdresponse;
+ // assert new InvokerLocator(
response.getIdentification().getInvokerLocator() ).getPort()
+ // ==
agent1.getServiceContainer().getConfiguration().getConnectorBindPort() : "Didn't
get the identity of agent1 - what remoting server did we just communicate with??";
+
+ return;
+ }
+}
\ No newline at end of file
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm6Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm6Test.java
new file mode 100644
index 0000000..3516c38
--- /dev/null
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm6Test.java
@@ -0,0 +1,112 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.agent;
+
+import java.util.Properties;
+
+import org.testng.annotations.Test;
+
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.security.SSLSocketBuilder;
+
+import org.rhq.enterprise.communications.ServiceContainerConfigurationConstants;
+import org.rhq.enterprise.communications.command.CommandResponse;
+import org.rhq.enterprise.communications.command.impl.identify.IdentifyCommand;
+import org.rhq.enterprise.communications.command.impl.identify.IdentifyCommandResponse;
+
+/**
+ * This tests the communications layer in the agent.
+ *
+ * @author John Mazzitelli
+ */
+@Test(groups = "agent.comm")
+public class AgentComm6Test extends AgentCommTestBase {
+ /**
+ * Sends a secure message from one remote server to another - there will be full
authentication including server and
+ * client authentication.
+ *
+ * @throws Exception
+ */
+ public void testSendSecureMessageFullAuth() throws Exception {
+ // each keystore is the other's truststore
+ Properties props1 = new Properties();
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
+
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata2/keystore.dat");
+
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata2/keystore.dat");
+
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
+
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
+ SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
+
+ m_agent1Test.setConfigurationOverrides(props1);
+
+ Properties props2 = new Properties();
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
+
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata/keystore.dat");
+
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
+ "target/testdata/keystore.dat");
+
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
+
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_CLIENT_AUTH_MODE,
+ SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
+
+ m_agent2Test.setConfigurationOverrides(props2);
+
+ AgentMain agent1 = m_agent1Test.createAgent(true);
+ AgentMain agent2 = m_agent2Test.createAgent(true);
+
+ assert
agent1.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
+ assert
agent2.getConfiguration().getServerLocatorUri().startsWith("sslsocket:");
+
+ assert
agent1.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
+ assert
agent2.getServiceContainer().getConfiguration().getConnectorTransport().equals("sslsocket");
+
+ assert agent1.getConfiguration().isClientSenderSecurityServerAuthMode();
+ assert agent2.getConfiguration().isClientSenderSecurityServerAuthMode();
+
+ assert
agent1.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
+ SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
+ assert
agent2.getServiceContainer().getConfiguration().getConnectorSecurityClientAuthMode().equals(
+ SSLSocketBuilder.CLIENT_AUTH_MODE_NEED);
+
+ IdentifyCommand command = new IdentifyCommand();
+ CommandResponse cmdresponse;
+ IdentifyCommandResponse response;
+
+ cmdresponse = agent1.getClientCommandSender().sendSynch(command);
+ assert cmdresponse.isSuccessful() : "Failed to send command from agent1 to
agent2: " + cmdresponse;
+ response = (IdentifyCommandResponse) cmdresponse;
+ assert new
InvokerLocator(response.getIdentification().getInvokerLocator()).getPort() == agent2
+ .getServiceContainer().getConfiguration().getConnectorBindPort() :
"Didn't get the identify of agent2 - what remoting server did we just communicate
with??";
+
+ // JBoss Remoting 2 doesn't seem to like me doing bi-directional messaging
within the same VM
+ // cmdresponse = agent2.getClientCommandSender().sendSynch( command );
+ // assert cmdresponse.isSuccessful() : "Failed to send command from
agent2 to agent1: " + cmdresponse;
+ // response = (IdentifyCommandResponse) cmdresponse;
+ // assert new InvokerLocator(
response.getIdentification().getInvokerLocator() ).getPort()
+ // ==
agent1.getServiceContainer().getConfiguration().getConnectorBindPort() : "Didn't
get the identity of agent1 - what remoting server did we just communicate with??";
+
+ return;
+ }
+}
\ No newline at end of file
commit f2ad6f8e10a004d3eae44fd762e118a65bd3ea47
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Jun 13 12:37:31 2012 -0500
[BZ 831757] Mark memory-pool-names list property as read-only.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 19bccaa..4e3f4da 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -7011,7 +7011,7 @@
<metric property="valid" dataType="trait"
description="Whether this this memory manager is valid in the Java virtual
machine."/>
<resource-configuration>
- <c:list-property name="memory-pool-names"
required="true" description="The name of memory pools that this garbage
collector manages.">
+ <c:list-property name="memory-pool-names"
required="true" readOnly="true" description="The name of memory
pools that this garbage collector manages.">
<c:simple-property name="memory-pool-names"
readOnly="true"/>
</c:list-property>
</resource-configuration>
commit 4fcfaf0e28be1a579a6de16ab78321ca8b8fb1f2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 13 15:18:08 2012 +0200
BZ 831513 Fill some defaults, as otherwise destination creation fails
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index 15a55d2..92370cb 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -223,7 +223,7 @@
<c:map-property name="metadata" required="false"
description="Metadata properties.">
<c:simple-property required="false"
name="typeMapping">
<c:description>
- The name of the corresponding type-mapping in
conf/standardjbosscmp-jdbc.xml. The type mappings provided by default: DB2, InformixDB,
MaxDB, mySQL, Oracle9i, PointBase, InterBase, Mimer SQL, McKoi, SapDB, DB2/400, SOLID,
Hypersonic SQL, FirstSQL/J, MS SQLSERVER2000, MS SQLSERVER, Cloudscape, Derby, Firebird,
PostgreSQL 8.0, PostgreSQL, Sybase, Ingres.
+ The name of the corresponding type-mapping in
conf/standardjbosscmp-jdbc.xml. The type mappings provided by default: DB2, InformixDB,
MaxDB, mySQL, Oracle9i, PointBase, InterBase, Mimer SQL, McKoi, SapDB, DB2/400, SOLID,
Hypersonic SQL, FirstSQL/J, MS SQLSERVER2000, MS SQLSERVER, Cloudscape, Derby, Firebird,
PostgreSQL 8.0, PostgreSQL, Sybase, Ingres.
Note, there may be custom type mappings defined in addition to these
predefined mappings.
</c:description>
</c:simple-property>
@@ -286,7 +286,7 @@
<c:simple-property name="type-mapping" displayName="Type
Mapping" required="false">
<c:description>
- The name of the corresponding type-mapping in conf/standardjbosscmp-jdbc.xml.
The type mappings provided by default: DB2, InformixDB, MaxDB, mySQL, Oracle9i, PointBase,
InterBase, Mimer SQL, McKoi, SapDB, DB2/400, SOLID, Hypersonic SQL, FirstSQL/J, MS
SQLSERVER2000, MS SQLSERVER, Cloudscape, Derby, Firebird, PostgreSQL 8.0, PostgreSQL,
Sybase, Ingres.
+ The name of the corresponding type-mapping in conf/standardjbosscmp-jdbc.xml.
The type mappings provided by default: DB2, InformixDB, MaxDB, mySQL, Oracle9i, PointBase,
InterBase, Mimer SQL, McKoi, SapDB, DB2/400, SOLID, Hypersonic SQL, FirstSQL/J, MS
SQLSERVER2000, MS SQLSERVER, Cloudscape, Derby, Firebird, PostgreSQL 8.0, PostgreSQL,
Sybase, Ingres.
Note, there may be custom type mappings defined in addition to these
predefined mappings.
</c:description>
</c:simple-property>
@@ -561,11 +561,11 @@
category="performance"/>
<metric property="connectionCreatedCount"
measurementType="dynamic" displayType="detail"
- displayName="Connection Created Count"
+ displayName="Connection Created Count"
dataType="measurement" category="performance"/>
<metric property="connectionDestroyedCount"
measurementType="dynamic" displayType="detail"
- displayName="Connection Destroyed Count"
+ displayName="Connection Destroyed Count"
dataType="measurement" category="performance"/>
<metric property="inUseConnectionCount"
measurementType="dynamic" displayType="detail"
@@ -1470,7 +1470,7 @@
<c:simple-property name="isSameRM-override-value"
default="false" />
<c:simple-property name="xa-datasource-class"
default="oracle.jdbc.xa.client.OracleXADataSource" />
<c:simple-property name="exception-sorter-class-name"
default="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter" />
- <!-- Oracle's XA datasource cannot reuse a connection outside a
transaction once enlisted in a global transaction
+ <!-- Oracle's XA datasource cannot reuse a connection outside a
transaction once enlisted in a global transaction
and vice-versa. -->
<c:simple-property name="no-tx-separate-pools"
default="true" />
<c:simple-property name="use-try-lock" default="60000"
/>
@@ -1852,7 +1852,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false" name="DLQ">
+ <c:simple-property required="false" name="DLQ"
default="jboss.messaging.destination:service=Queue,name=DLQ">
<c:description>
The JMX ObjectName of the dead letter queue (DLQ) for this queue (e.g.
"jboss.messaging.destination:service=Queue,name=PrivateDLQ") -
overrides the default DLQ on the
@@ -1863,7 +1863,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false"
name="expiryQueue">
+ <c:simple-property required="false" name="expiryQueue"
default="jboss.messaging.destination:service=Queue,name=ExpiryQueue">
<c:description>
The JMX ObjectName of the expiry queue for this queue (e.g.
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
@@ -1874,7 +1874,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false"
name="serverPeer">
+ <c:simple-property required="false" name="serverPeer"
default="jboss.messaging:service=ServerPeer" >
<c:description>
The JMX ObjectName of the server peer this queue was deployed on (e.g.
"jboss.messaging:service=ServerPeer"). Updates to this property
will not go into effect until
@@ -2169,7 +2169,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false" name="DLQ">
+ <c:simple-property required="false" name="DLQ"
default="jboss.messaging.destination:service=Queue,name=DLQ">
<c:description>
The JMX ObjectName of the dead letter queue (DLQ) for this topic (e.g.
"jboss.messaging.destination:service=Queue,name=PrivateDLQ") -
overrides the default DLQ on the
@@ -2180,7 +2180,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false"
name="expiryQueue">
+ <c:simple-property required="false" name="expiryQueue"
default="jboss.messaging.destination:service=Queue,name=ExpiryQueue">
<c:description>
The JMX ObjectName of the expiry queue for this topic (e.g.
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
@@ -2191,7 +2191,7 @@
</c:constraint>
</c:simple-property>
- <c:simple-property required="false"
name="serverPeer">
+ <c:simple-property required="false" name="serverPeer"
default="jboss.messaging:service=ServerPeer">
<c:description>
The JMX ObjectName of the server peer this topic was deployed on (e.g.
"jboss.messaging:service=ServerPeer"). Updates to this property
will not go into effect until
@@ -2808,13 +2808,13 @@
The name of the binding set the Service Binding Manager should use when resolving
bindings.
Note to JBoss ON or Jopr users (does not apply to JBoss AS admin console):
CHANGING THIS PROPERTY IS POTENTIALLY DANGEROUS because if there are any port conflicts
-on the machine the Application Server is running on, the server will not start up again
and
+on the machine the Application Server is running on, the server will not start up again
and
it will not be possible to monitor it.
To be able to monitor the server again after the restart you have to update the
"Naming Provider Url"
in the "Connection" subtab in the "Inventory" of the Application
Server to the value
of "jboss:service=Naming:Port" binding of the active binding set.
I.e. if the "jboss:service=Naming:Port" binding of the active binding set has
the port set to 4099 and hostname to 127.0.0.1,
-you have to set the "Naming Provider Url" to jnp://127.0.0.1:4099.
+you have to set the "Naming Provider Url" to jnp://127.0.0.1:4099.
]]></c:description>
</c:simple-property>
<c:list-property name="standardBindings" description="The
standard port bindings inherited by the binding sets.">
commit 96e8f5ac7da14b9df928c80940d1ffd40967b894
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue Jun 12 23:52:38 2012 -0400
[BZ 823691] removing debug code
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
index 647bbb4..bb9a789 100644
---
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
+++
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
@@ -30,7 +30,6 @@ import org.testng.ITestResult;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Listeners;
import org.rhq.enterprise.communications.ServiceContainerConfiguration;
import org.rhq.enterprise.communications.ServiceContainerConfigurationConstants;
@@ -41,7 +40,6 @@ import org.rhq.enterprise.communications.util.SecurityUtil;
*
* @author John Mazzitelli
*/
-(a)Listeners(AgentCommTestBase.class)
public class AgentCommTestBase implements IInvokedMethodListener {
protected static final int LARGE_STRING_SIZE = 100000;
protected static final String LARGE_STRING;
@@ -108,8 +106,6 @@ public class AgentCommTestBase implements IInvokedMethodListener {
// make sure we create keystore files - some tests needs both existing at the
same time as soon as they begin
File keystore_file1 = new File("target/testdata/keystore.dat");
- //Assert.assertFalse(keystore_file1 + " should not exist",
keystore_file1.exists());
- keystore_file1.delete();
if (!keystore_file1.exists()) {
keystore_file1.getParentFile().mkdirs();
m_agent1Test.createAgent(false);
@@ -123,8 +119,6 @@ public class AgentCommTestBase implements IInvokedMethodListener {
}
File keystore_file2 = new File("target/testdata2/keystore.dat");
- //Assert.assertFalse(keystore_file2 + " should not exist",
keystore_file2.exists());
- keystore_file2.delete();
if (!keystore_file2.exists()) {
keystore_file2.getParentFile().mkdirs();
m_agent2Test.createAgent(false);
@@ -142,7 +136,7 @@ public class AgentCommTestBase implements IInvokedMethodListener {
* Ensures any agent that was started is shutdown and all configuration is cleared so
as not to retain overridden
* preferences left over by the tests.
*/
- @AfterMethod(alwaysRun = true)
+ @AfterMethod
public void tearDown() {
if (m_agent1Test != null) {
AgentMain agent = m_agent1Test.getAgent();
commit 85b39a87c4df4c5669a05ee421a2e107f4e495c9
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 12 18:10:43 2012 -0500
Added ignored operations and also pass in a configuration even if no params are
available for the operation (to mach real application behaviour).
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
index cc03979..4eb3519 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
@@ -71,7 +71,7 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
StandaloneServerComponentTest.RESOURCE_KEY);
inventoryManager.activateResource(server, platformContainer, false);
- Thread.sleep(100 * 1000L);
+ Thread.sleep(20 * 1000L);
}
@@ -136,9 +136,13 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
@Test(priority = 11)
public void executeNoArgOperations() throws Exception {
- final List<String> ignoredSubsystems = new ArrayList<String>();
+ List<String> ignoredSubsystems = new ArrayList<String>();
ignoredSubsystems.add("ModCluster Standalone Service");
+ List<String> ignoredOperations = new ArrayList<String>();
+ ignoredOperations.add("subsystem:force-failover");
+ ignoredOperations.add("enable");
+
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
StandaloneServerComponentTest.RESOURCE_KEY);
@@ -161,9 +165,12 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
}
for (OperationDefinition operationUnderTest :
resourceUnderTest.getResourceType().getOperationDefinitions()) {
- if (operationUnderTest.getParametersConfigurationDefinition() == null
- ||
operationUnderTest.getParametersConfigurationDefinition().getPropertyDefinitions().isEmpty())
{
- this.invokeOperationAndAssertSuccess(resourceUnderTest,
operationUnderTest.getName(), null);
+ if (!ignoredOperations.contains(operationUnderTest.getName())) {
+ if (operationUnderTest.getParametersConfigurationDefinition() ==
null
+ ||
operationUnderTest.getParametersConfigurationDefinition().getPropertyDefinitions().isEmpty())
{
+ this.invokeOperationAndAssertSuccess(resourceUnderTest,
operationUnderTest.getName(),
+ new Configuration());
+ }
}
}
}
commit 66f46cb857466d948b548675dcd73f42ad307b26
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 12 18:51:12 2012 -0400
[BZ 831297] canceled operations that actually were able to be interrupted and canceled
will now show a status of canceled with the canceled icon in the history view
diff --git
a/modules/common/jboss-as/src/main/java/com/jboss/jbossnetwork/product/jbpm/handlers/ControlActionHandler.java
b/modules/common/jboss-as/src/main/java/com/jboss/jbossnetwork/product/jbpm/handlers/ControlActionHandler.java
index 577eea8..708beba 100644
---
a/modules/common/jboss-as/src/main/java/com/jboss/jbossnetwork/product/jbpm/handlers/ControlActionHandler.java
+++
b/modules/common/jboss-as/src/main/java/com/jboss/jbossnetwork/product/jbpm/handlers/ControlActionHandler.java
@@ -23,6 +23,7 @@
package com.jboss.jbossnetwork.product.jbpm.handlers;
import org.jbpm.graph.exe.ExecutionContext;
+
import org.rhq.core.pluginapi.operation.OperationServicesResult;
import org.rhq.core.pluginapi.operation.OperationServicesResultCode;
@@ -106,6 +107,11 @@ public class ControlActionHandler extends BaseHandler {
break;
}
+ case CANCELED: {
+ error(executionContext, operationError, "Canceled [" + actionName +
"] action on server.", TRANSITION_ERROR);
+ break;
+ }
+
case TIMED_OUT: {
error(executionContext, operationError, "Action [" + actionName
+
"] timed out while executing on server.",
TRANSITION_ERROR);
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/operation/OperationServerService.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/operation/OperationServerService.java
index e3ce084..f1e76cb 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/operation/OperationServerService.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/operation/OperationServerService.java
@@ -56,6 +56,20 @@ public interface OperationServerService {
long completionTime);
/**
+ * Called by the agent when a server-scheduled operation was canceled.
+ *
+ * @param jobId the server-assigned unique job id for this operation
+ * @param result a result object that can be used to capture any information
available
+ * up to the point of cancelation.
+ * @param error an exception describing the cancelation
+ * @param invocationTime the time at which the agent was asked to invoke the
operation (epoch millis)
+ * @param canceledTime the time at which the operation was canceled (epoch millis)
+ */
+ @Asynchronous(guaranteedDelivery = true)
+ void operationCanceled(String jobId, Configuration result, ExceptionPackage error,
long invocationTime,
+ long canceledTime);
+
+ /**
* Called by the agent when a server-scheduled operation times out.
*
* @param jobId the server-assigned unique job id for this operation
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/operation/OperationServicesResultCode.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/operation/OperationServicesResultCode.java
index fff2ae8..608b0e2 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/operation/OperationServicesResultCode.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/operation/OperationServicesResultCode.java
@@ -28,5 +28,5 @@ package org.rhq.core.pluginapi.operation;
* @author Jason Dobies
*/
public enum OperationServicesResultCode {
- SUCCESS, FAILURE, TIMED_OUT
+ SUCCESS, FAILURE, TIMED_OUT, CANCELED
}
\ No newline at end of file
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/StandaloneContainer.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/StandaloneContainer.java
index 7008fac..730effc 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/StandaloneContainer.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/StandaloneContainer.java
@@ -347,6 +347,8 @@ public class StandaloneContainer {
System.err.println("Failure executing the operation: \n" +
res.getErrorStackTrace());
} else if (res.getResultCode() == OperationServicesResultCode.TIMED_OUT) {
System.err.println("Operation timed out ");
+ } else if (res.getResultCode() == OperationServicesResultCode.CANCELED) {
+ System.err.println("Operation was canceled ");
} else {
Configuration result = res.getComplexResults();
if (result == null)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationInvocation.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationInvocation.java
index 5e772a1..59bc941 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationInvocation.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationInvocation.java
@@ -302,7 +302,13 @@ public class OperationInvocation implements Runnable {
}
try {
- operationServerService.operationFailed(jobId, null, errorResults,
invocationTime, finishedTime);
+ if (status.contains(Status.CANCELED)) {
+ operationServerService.operationCanceled(jobId, null,
errorResults, invocationTime,
+ finishedTime);
+ } else {
+ operationServerService.operationFailed(jobId, null,
errorResults, invocationTime,
+ finishedTime);
+ }
} catch (Throwable t) {
log.error("Failed to send operation failed message to
server. resource=[" + resourceId
+ "], operation=[" + operationName + "],
jobId=[" + jobId + "], operation-error=["
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationServicesAdapter.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationServicesAdapter.java
index 5828a04..8048a93 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationServicesAdapter.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationServicesAdapter.java
@@ -132,6 +132,19 @@ public class OperationServicesAdapter implements OperationServices,
OperationSer
}
}
+ public void operationCanceled(String jobId, Configuration result, ExceptionPackage
error, long invocationTime,
+ long canceledTime) {
+ OperationServicesResult operationServicesResult = new OperationServicesResult(
+ OperationServicesResultCode.CANCELED);
+ operationServicesResult.setComplexResults(result);
+ operationServicesResult.setErrorStackTrace(error.getStackTraceString());
+
+ completedJobs.put(jobId, operationServicesResult);
+ synchronized (callbackLock) {
+ callbackLock.notifyAll();
+ }
+ }
+
public void operationTimedOut(String jobId, long invocationTime, long timeoutTime) {
OperationServicesResult operationServicesResult = new OperationServicesResult(
OperationServicesResultCode.TIMED_OUT);
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/OperationManagerTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/OperationManagerTest.java
index accc547..e215fd7 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/OperationManagerTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/OperationManagerTest.java
@@ -596,6 +596,13 @@ public class OperationManagerTest {
jobsCompleted.put(jobId, timeoutTime);
opResults.put(jobId, "TIMEOUT");
}
+
+ public void operationCanceled(String jobId, Configuration result,
ExceptionPackage error, long invocationTime,
+ long canceledTime) {
+ //println( "~~~~~~~~~~~~~~ server service - canceled: " + jobId +
" : " + formatTime( timeoutTime ) );
+ jobsCompleted.put(jobId, canceledTime);
+ opResults.put(jobId, "CANCELED");
+ }
}
private static void println(String msg) {
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
index 887ba0f..a1713d7 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
@@ -230,6 +230,13 @@ public class ParallelOperationsTest {
jobsCompleted.put(jobId, timeoutTime);
opResults.put(jobId, "TIMEOUT");
}
+
+ public void operationCanceled(String jobId, Configuration result,
ExceptionPackage error, long invocationTime,
+ long canceledTime) {
+ //println( "~~~~~~~~~~~~~~ server service - timed out: " + jobId +
" : " + formatTime( timeoutTime ) );
+ jobsCompleted.put(jobId, canceledTime);
+ opResults.put(jobId, "CANCELED");
+ }
}
private static void println(String msg) {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationServerServiceImpl.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationServerServiceImpl.java
index 152974c..05ac1cc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationServerServiceImpl.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationServerServiceImpl.java
@@ -39,6 +39,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
* <ul>
* <li>an operation successfully completed</li>
* <li>an operation was invoked but failed</li>
+ * <li>an operation was invoked but canceled</li>
* <li>an operation was invoked but timed out before completing</li>
* </ul>
*
@@ -47,6 +48,48 @@ import org.rhq.enterprise.server.util.LookupUtil;
public class OperationServerServiceImpl implements OperationServerService {
private static final Log LOG = LogFactory.getLog(OperationServerServiceImpl.class);
+ public void operationCanceled(String jobId, Configuration result, ExceptionPackage
error, long invocationTime,
+ long completionTime) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Operation invocation [" + jobId + "] was canceled
[" + error + "] "
+ + getFromStartToEndTimestampString(invocationTime, completionTime));
+ }
+
+ try {
+ Subject superuser = LookupUtil.getSubjectManager().getOverlord();
+ OperationManagerLocal operationManager = LookupUtil.getOperationManager();
+ ResourceOperationHistory history = null;
+
+ history = (ResourceOperationHistory)
operationManager.getOperationHistoryByJobId(superuser, jobId);
+
+ // I think this will only ever occur if the server-side timed this out but
the long running
+ // operation finally got back to us afterwards. We will still go ahead and
+ // persist the failure data because, obviously, the operation really
didn't time out.
+ // I think, in reality, this condition will never occur (since the
server-side will only ever
+ // timeout ridiculously long-lived operations, which is typically only when
an agent shutdown occurred).
+ if (history.getStatus() != OperationRequestStatus.INPROGRESS) {
+ LOG.debug("Was told an operation was canceled but, curiously, it was
not in progress: " + "job-id=["
+ + jobId + "], op-history=[" + history + "]");
+ }
+
+ if (error != null) {
+ history.setErrorMessage(error.getStackTraceString());
+ } else {
+ history.setErrorMessage("Operation was canceled at " + new
Date(completionTime));
+ }
+
+ history.setResults(result);
+ history.setStatus(OperationRequestStatus.CANCELED);
+
+ operationManager.updateOperationHistory(superuser, history);
+ operationManager.checkForCompletedGroupOperation(history.getId());
+ } catch (Exception e) {
+ LOG.error("Failed to update history from canceled operation,
jobId=[" + jobId + "]. Cause: " + e, e);
+ LOG.error("The canceled operation [" + jobId + "] had an error
of: "
+ + ((error != null) ? error.getStackTraceString() : "?"));
+ }
+ }
+
public void operationFailed(String jobId, Configuration result, ExceptionPackage
error, long invocationTime,
long completionTime) {
if (LOG.isDebugEnabled()) {
commit 2b7e819927ec18f13bd75c49246c1f837fa96aeb
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 12 17:04:32 2012 -0500
[BZ 831377] Updated the plugin descriptor to allow decimal numbers for
retry-interval-multiplier of a HornetQ cluster connection because AS7 allows it.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 282ee93..19bccaa 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -4577,7 +4577,7 @@
<c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="true"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="true"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
- <c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="true"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="true"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
<c:list-property name="static-connectors"
required="false" readOnly="true" description="The statically
defined list of connectors to which this cluster connection will make connections. Must be
undefined (null) if 'discovery-group-name' is
defined." >
<c:simple-property name="static-connectors"
readOnly="true"/>
</c:list-property>
@@ -6662,7 +6662,7 @@
<c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
- <c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
<c:list-property name="static-connectors"
required="false" description="The statically defined list of connectors to
which this cluster connection will make connections. Must be undefined (null) if
'discovery-group-name' is defined." >
<c:simple-property name="static-connectors" />
</c:list-property>
@@ -12689,7 +12689,7 @@
<c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
- <c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
<c:list-property name="static-connectors"
required="false" description="The statically defined list of connectors to
which this cluster connection will make connections. Must be undefined (null) if
'discovery-group-name' is defined.">
<c:simple-property name="static-connectors"/>
</c:list-property>
commit 9f4bbacfa3212f412db718311ad7c2bd0343cc2f
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 12 16:23:15 2012 -0500
[BZ 831369] Use :whoami to retrieve server state because it does not require any
parameters and is present on all resources. This will avoid warnings printed by using
:read-attribute.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index dac0218..2851128 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -278,7 +278,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
Configuration configuration = delegate.loadResourceConfiguration();
// Read server state
- ReadAttribute op = new ReadAttribute(getAddress(), "name");
+ Operation op = new Operation("whoami", getAddress());
Result res = getASConnection().execute(op);
if (res.isReloadRequired()) {
PropertySimple oobMessage = new PropertySimple("__OOB","The
server needs a reload for the latest changes to come effective.");
commit 6b83005b22c4d44f76fc15c5e38f33a39c6f2bc2
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue Jun 12 15:56:19 2012 -0400
[BZ 823691] parameterize properties in agent config files
diff --git a/modules/enterprise/agent/src/test/resources/test-agent1-cfg-mvn.xml
b/modules/enterprise/agent/src/test/resources/test-agent1-cfg-mvn.xml
index 2d8c91f..59dbb6b 100644
--- a/modules/enterprise/agent/src/test/resources/test-agent1-cfg-mvn.xml
+++ b/modules/enterprise/agent/src/test/resources/test-agent1-cfg-mvn.xml
@@ -60,7 +60,7 @@
<entry key="rhq.communications.multicast-detector.enabled"
value="true" />
<entry key="rhq.communications.multicast-detector.multicast-address"
value="224.16.16.16" />
<entry key="rhq.communications.multicast-detector.bind-address"
value="0.0.0.0" />
- <entry key="rhq.communications.multicast-detector.port"
value="16162" />
+ <entry key="rhq.communications.multicast-detector.port"
value="${agent1.communications.multicast-detector.port}" />
<entry key="rhq.communications.multicast-detector.default-time-delay"
value="5000" />
<entry key="rhq.communications.multicast-detector.heartbeat-time-delay"
value="1000" />
<entry key="rhq.communications.connector.rhqtype"
value="agent" />
diff --git a/modules/enterprise/agent/src/test/resources/test-agent2-cfg-mvn.xml
b/modules/enterprise/agent/src/test/resources/test-agent2-cfg-mvn.xml
index 7321e5b..1957034 100644
--- a/modules/enterprise/agent/src/test/resources/test-agent2-cfg-mvn.xml
+++ b/modules/enterprise/agent/src/test/resources/test-agent2-cfg-mvn.xml
@@ -79,7 +79,7 @@
<entry key="rhq.communications.multicast-detector.enabled"
value="true" />
<entry key="rhq.communications.multicast-detector.multicast-address"
value="224.16.16.16" />
<entry key="rhq.communications.multicast-detector.bind-address"
value="0.0.0.0" />
- <entry key="rhq.communications.multicast-detector.port"
value="16162" />
+ <entry key="rhq.communications.multicast-detector.port"
value="${agent2.communications.multicast-detector.port}" />
<entry key="rhq.communications.multicast-detector.default-time-delay"
value="5000" />
<entry key="rhq.communications.multicast-detector.heartbeat-time-delay"
value="1000" />
<entry key="rhq.communications.connector.rhqtype"
value="agent" />
commit fee4a6441651e5f6e30f6d3f87ea5de1a6fabb67
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue Jun 12 15:44:20 2012 -0400
[BZ 823691] Parameterize hard coded ports
diff --git a/modules/enterprise/agent/pom.xml b/modules/enterprise/agent/pom.xml
index 6fa0902..892a1c0 100644
--- a/modules/enterprise/agent/pom.xml
+++ b/modules/enterprise/agent/pom.xml
@@ -16,6 +16,15 @@
<name>RHQ Enterprise Agent</name>
<description>RHQ Agent</description>
+ <properties>
+ <agent1.server.bind-port>11111</agent1.server.bind-port>
+ <agent2.server.bind-port>22222</agent2.server.bind-port>
+
<agent1.communications.connector.bind-port>11111</agent1.communications.connector.bind-port>
+
<agent2.communications.connector.bind-port>22222</agent2.communications.connector.bind-port>
+
<agent1.communications.multicast-detector.port>17777</agent1.communications.multicast-detector.port>
+
<agent2.communications.multicast-detector.port>18888</agent2.communications.multicast-detector.port>
+ </properties>
+
<dependencies>
<!-- Internal Deps -->
@@ -223,6 +232,14 @@ Build-Number=${buildNumber}
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <systemPropertyVariables>
+
<agent1.server.bind-port>${agent1.server.bind-port}</agent1.server.bind-port>
+
<agent2.server.bind-port>${agent2.server.bind-port}</agent2.server.bind-port>
+
<agent1.communications.connector.bind-port>${agent1.communications.connector.bind-port}</agent1.communications.connector.bind-port>
+
<agent2.communications.connector.bind-port>${agent2.communications.connector.bind-port}</agent2.communications.connector.bind-port>
+
<agent1.communications.multicast-detector.port>${agent1.communications.multicast-detector.port}</agent1.communications.multicast-detector.port>
+
<agent2.communications.multicast-detector.port>${agent2.communications.multicast-detector.port}</agent2.communications.multicast-detector.port>
+ </systemPropertyVariables>
<excludedGroups>${rhq.testng.excludedGroups}</excludedGroups>
</configuration>
</plugin>
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm1Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm1Test.java
index 9e9ab59..f4cdca0 100644
--- a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm1Test.java
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm1Test.java
@@ -100,9 +100,9 @@ public class AgentComm1Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testAgentStreamingDataToPojoWithPreprocessorAuthenticatorOverSSL() throws
Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
@@ -120,9 +120,9 @@ public class AgentComm1Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
@@ -458,9 +458,9 @@ public class AgentComm1Test extends AgentCommTestBase {
// set up the SSL configuration.
// note a side test - see that the internal remote pojo service is created even
with dynamic discovery turned off
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -471,9 +471,9 @@ public class AgentComm1Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
@@ -643,9 +643,9 @@ public class AgentComm1Test extends AgentCommTestBase {
public void testAgentStreamingDataToPojoOverSSLBigData() throws Exception {
// set up the SSL configuration.
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -655,9 +655,9 @@ public class AgentComm1Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
index b1920e5..1f1160c 100644
--- a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm2Test.java
@@ -48,9 +48,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testCreateKeystoreSecureAgent() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "socket", "127.0.0.1",
22222, null);
+ setServerLocatorUriProperties(props1, "socket", "127.0.0.1",
AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
m_agent1Test.setConfigurationOverrides(props1);
@@ -71,9 +71,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testCreateKeystoreSecureServer() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"socket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
m_agent1Test.setConfigurationOverrides(props1);
@@ -95,9 +95,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testSendSecureMessageServerAuthFailure() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -107,9 +107,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"true");
@@ -157,9 +157,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testSendSecureMessageClientAuthFailure() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_KEYSTORE_FILE,
"");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
@@ -170,9 +170,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -221,9 +221,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testSendSecureMessageNoAuth() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -233,9 +233,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -294,9 +294,9 @@ public class AgentComm2Test extends AgentCommTestBase {
public void testSendSecureMessageFullAuth() throws Exception {
// each keystore is the other's truststore
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
"target/testdata2/keystore.dat");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
@@ -308,9 +308,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
"target/testdata/keystore.dat");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
@@ -368,9 +368,9 @@ public class AgentComm2Test extends AgentCommTestBase {
public void testSendSecureMessageFullAuthWrongKeystorePassword() throws Exception {
// each keystore is the other's truststore
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_KEYSTORE_PASSWORD,
"invalidpassword");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
@@ -384,9 +384,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_KEYSTORE_PASSWORD,
"invalidpassword2");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
@@ -426,9 +426,9 @@ public class AgentComm2Test extends AgentCommTestBase {
public void testSendSecureMessageClientAuthWantWithTruststore() throws Exception {
// each keystore is the other's truststore
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
"target/testdata2/keystore.dat");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
@@ -440,9 +440,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_TRUSTSTORE_FILE,
"target/testdata/keystore.dat");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_TRUSTSTORE_FILE,
@@ -504,9 +504,9 @@ public class AgentComm2Test extends AgentCommTestBase {
@Test(enabled = ENABLE_TESTS)
public void testSendSecureMessageNoAuthDifferentProtocol() throws Exception {
Properties props1 = new Properties();
- setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", 22222, null);
+ setServerLocatorUriProperties(props1, "sslsocket",
"127.0.0.1", AGENT2_SERVER_BIND_PORT, null);
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"11111");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_COMM_CONNECTOR_BIND_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"TLS");
props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"SSL");
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
@@ -516,9 +516,9 @@ public class AgentComm2Test extends AgentCommTestBase {
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
- setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", 11111, null);
+ setServerLocatorUriProperties(props2, "sslsocket",
"127.0.0.1", AGENT1_SERVER_BIND_PORT, null);
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_TRANSPORT,
"sslsocket");
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22222");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_COMM_CONNECTOR_BIND_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SOCKET_PROTOCOL,
"SSL");
props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_SECURITY_SOCKET_PROTOCOL,
"TLS");
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SECURITY_SERVER_AUTH_MODE,
"false");
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm3Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm3Test.java
index 945bdce..da1ba6d 100644
--- a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm3Test.java
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm3Test.java
@@ -65,12 +65,14 @@ public class AgentComm3Test extends AgentCommTestBase {
// make it so the server auto-detection features do not detect anything
Properties props1 = new Properties();
props1.setProperty(AgentConfigurationConstants.SERVER_AUTO_DETECTION,
"true");
- props1.setProperty(ServiceContainerConfigurationConstants.MULTICASTDETECTOR_PORT,
"17777");
+
props1.setProperty(ServiceContainerConfigurationConstants.MULTICASTDETECTOR_PORT,
+ AGENT1_COMM_MULTICAST_DECTECTOR_PORT);
props1.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SERVER_POLLING_INTERVAL,
"-1");
Properties props2 = new Properties();
props2.setProperty(AgentConfigurationConstants.SERVER_AUTO_DETECTION,
"true");
- props2.setProperty(ServiceContainerConfigurationConstants.MULTICASTDETECTOR_PORT,
"18888");
+
props2.setProperty(ServiceContainerConfigurationConstants.MULTICASTDETECTOR_PORT,
+ AGENT2_COMM_MULTICAST_DECTECTOR_PORT);
props2.setProperty(AgentConfigurationConstants.CLIENT_SENDER_SERVER_POLLING_INTERVAL,
"-1");
m_agent1Test.setConfigurationOverrides(props1);
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm4Test.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm4Test.java
index 6519da3..691361c 100644
--- a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm4Test.java
+++ b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentComm4Test.java
@@ -72,12 +72,12 @@ public class AgentComm4Test extends AgentCommTestBase {
public void testAgentConfigurationOverride() throws Exception {
Properties props1 = new Properties();
setServerLocatorUriProperties(props1, "socket", "127.0.0.1",
22345, null);
- props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"12345");
+ props1.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT1_SERVER_BIND_PORT);
m_agent1Test.setConfigurationOverrides(props1);
Properties props2 = new Properties();
setServerLocatorUriProperties(props2, "socket", "127.0.0.1",
12345, null);
- props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
"22345");
+ props2.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
AGENT2_SERVER_BIND_PORT);
m_agent2Test.setConfigurationOverrides(props2);
AgentMain agent1 = m_agent1Test.createAgent(true);
@@ -86,8 +86,8 @@ public class AgentComm4Test extends AgentCommTestBase {
assert agent1.isStarted() : "agent1 should have been started";
assert agent2.isStarted() : "agent2 should have been started";
- assert agent1.getServiceContainer().getConfiguration().getConnectorBindPort() ==
12345;
- assert agent2.getServiceContainer().getConfiguration().getConnectorBindPort() ==
22345;
+ assert agent1.getServiceContainer().getConfiguration().getConnectorBindPort() ==
Integer.parseInt(AGENT1_SERVER_BIND_PORT);
+ assert agent2.getServiceContainer().getConfiguration().getConnectorBindPort() ==
Integer.parseInt(AGENT2_SERVER_BIND_PORT);
agent1.shutdown();
agent2.shutdown();
diff --git
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
index e6b3196..647bbb4 100644
---
a/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
+++
b/modules/enterprise/agent/src/test/java/org/rhq/enterprise/agent/AgentCommTestBase.java
@@ -24,9 +24,13 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Listeners;
import org.rhq.enterprise.communications.ServiceContainerConfiguration;
import org.rhq.enterprise.communications.ServiceContainerConfigurationConstants;
@@ -37,11 +41,25 @@ import org.rhq.enterprise.communications.util.SecurityUtil;
*
* @author John Mazzitelli
*/
-public class AgentCommTestBase {
+(a)Listeners(AgentCommTestBase.class)
+public class AgentCommTestBase implements IInvokedMethodListener {
protected static final int LARGE_STRING_SIZE = 100000;
protected static final String LARGE_STRING;
protected static final byte[] LARGE_STRING_BYTES;
+ protected static final String AGENT1_SERVER_BIND_PORT =
System.getProperty("agent1.server.bind-port", "11111");
+ protected static final String AGENT2_SERVER_BIND_PORT =
System.getProperty("agent2.server.bind-port", "22222");
+
+ protected static final String AGENT1_COMM_CONNECTOR_BIND_PORT = System.getProperty(
+ "agent1.communications.connector.bind-port", "11111");
+ protected static final String AGENT2_COMM_CONNECTOR_BIND_PORT = System.getProperty(
+ "agent2.communications.connector.bind-port", "22222");
+
+ protected static final String AGENT1_COMM_MULTICAST_DECTECTOR_PORT =
System.getProperty(
+ "agent1.communications.multicast-detector.port", "17777");
+ protected static final String AGENT2_COMM_MULTICAST_DECTECTOR_PORT =
System.getProperty(
+ "agent2.communications.multicast-detector.port", "18888");
+
static {
StringBuffer stream_data_buf = new StringBuffer(LARGE_STRING_SIZE);
@@ -58,6 +76,20 @@ public class AgentCommTestBase {
protected AgentTestClass m_agent1Test;
protected AgentTestClass m_agent2Test;
+ @Override
+ public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
+ System.out.println("before " + getTestMethod(method));
+ }
+
+ @Override
+ public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
+ System.out.println("after " + getTestMethod(method));
+ }
+
+ private String getTestMethod(IInvokedMethod method) {
+ return method.getTestMethod().getTestClass().getName() + "." +
method.getTestMethod().getMethodName();
+ }
+
/**
* Creates new agent test classes.
*
@@ -76,6 +108,8 @@ public class AgentCommTestBase {
// make sure we create keystore files - some tests needs both existing at the
same time as soon as they begin
File keystore_file1 = new File("target/testdata/keystore.dat");
+ //Assert.assertFalse(keystore_file1 + " should not exist",
keystore_file1.exists());
+ keystore_file1.delete();
if (!keystore_file1.exists()) {
keystore_file1.getParentFile().mkdirs();
m_agent1Test.createAgent(false);
@@ -89,6 +123,8 @@ public class AgentCommTestBase {
}
File keystore_file2 = new File("target/testdata2/keystore.dat");
+ //Assert.assertFalse(keystore_file2 + " should not exist",
keystore_file2.exists());
+ keystore_file2.delete();
if (!keystore_file2.exists()) {
keystore_file2.getParentFile().mkdirs();
m_agent2Test.createAgent(false);
@@ -106,7 +142,7 @@ public class AgentCommTestBase {
* Ensures any agent that was started is shutdown and all configuration is cleared so
as not to retain overridden
* preferences left over by the tests.
*/
- @AfterMethod
+ @AfterMethod(alwaysRun = true)
public void tearDown() {
if (m_agent1Test != null) {
AgentMain agent = m_agent1Test.getAgent();
@@ -177,6 +213,25 @@ public class AgentCommTestBase {
}
/**
+ * This will set the appropriate properties in <code>props</code> to
define the server locator URI.
+ *
+ * @param props
+ * @param transport
+ * @param addr
+ * @param port
+ * @param transport_params
+ */
+ protected void setServerLocatorUriProperties(Properties props, String transport,
String addr, String port,
+ String transport_params) {
+ props.setProperty(AgentConfigurationConstants.SERVER_TRANSPORT, transport);
+ props.setProperty(AgentConfigurationConstants.SERVER_BIND_ADDRESS, addr);
+ props.setProperty(AgentConfigurationConstants.SERVER_BIND_PORT, port);
+ if (transport_params != null) {
+ props.setProperty(AgentConfigurationConstants.SERVER_TRANSPORT_PARAMS,
transport_params);
+ }
+ }
+
+ /**
* Creates a very large file that we can use for testing streaming of large data.
*
* @return the file
commit 7e8318f1fc74a5a95c87c6b55d182e3be7d22a84
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 12 13:05:41 2012 -0500
Update the test to retrieve the resource configuration only when they are defined.
Also, enable both integration tests.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
index 0d9dfd5..cc03979 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
@@ -75,7 +75,7 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
}
- @Test(priority = 12, enabled = false)
+ @Test(priority = 12)
public void loadUpdateTemplatedResourceConfiguration() throws Exception {
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
@@ -99,6 +99,7 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
}
int errorCount = 0;
+
while (!unparsedResources.isEmpty()) {
Resource resourceUnderTest = unparsedResources.poll();
@@ -110,34 +111,30 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
}
}
- Configuration resourceUnderTestConfig =
configurationManager.loadResourceConfiguration(resourceUnderTest
- .getId());
-
- Assert.assertNotNull(resourceUnderTestConfig);
-
- ConfigurationUpdateRequest updateRequest = new ConfigurationUpdateRequest(1,
resourceUnderTestConfig,
- resourceUnderTest.getId());
- ConfigurationUpdateResponse updateResponse = configurationManager
- .executeUpdateResourceConfigurationImmediately(updateRequest);
-
- Assert.assertNotNull(updateResponse);
- if (updateResponse.getErrorMessage() != null) {
- log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- log.info(updateResponse.getErrorMessage());
- log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
-
- errorCount++;
+ if (resourceUnderTest.getResourceType().getResourceConfigurationDefinition()
!= null) {
+ Configuration configUnderTest = configurationManager
+ .loadResourceConfiguration(resourceUnderTest.getId());
+
+ ConfigurationUpdateRequest updateRequest = new
ConfigurationUpdateRequest(1, configUnderTest,
+ resourceUnderTest.getId());
+ ConfigurationUpdateResponse updateResponse = configurationManager
+ .executeUpdateResourceConfigurationImmediately(updateRequest);
+
+ Assert.assertNotNull(updateResponse);
+ if (updateResponse.getErrorMessage() != null) {
+ errorCount++;
+ log.error("------------------------------");
+ log.error(resourceUnderTest);
+ log.error(updateResponse.getErrorMessage());
+ log.error("------------------------------");
+ }
}
}
- log.info("?????????????????????????????");
- log.info(errorCount);
- log.info("?????????????????????????????");
-
Assert.assertEquals(errorCount, 0);
}
- @Test(priority = 11, enabled = false)
+ @Test(priority = 11)
public void executeNoArgOperations() throws Exception {
final List<String> ignoredSubsystems = new ArrayList<String>();
ignoredSubsystems.add("ModCluster Standalone Service");
commit a96bf77b2e402a29dd2265ad2b2bf80e5459bb88
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 12 13:39:03 2012 -0400
[BZ 830998] implement operation cancel in the UI. we already had the server-side and
agent-side implemented, we just needed to expose it in the GUI. This commit does this.
There is now a Cancel button in the group and resource operation history view.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
index f4d8085..f47e8f5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
@@ -74,4 +74,19 @@ public interface OperationGWTService extends RemoteService {
List<GroupOperationSchedule> findScheduledGroupOperations(int groupId) throws
RuntimeException;
+ /**
+ * Cancels a currently in-progress operation. Doing this will attempt to stop the
invocation if it is currently
+ * running on the agent.
+ *
+ * <p>Note that this method will handle canceling a resource or group history -
depending on what the given
+ * <code>historyId</code> refers to. If it refers to a group history, it
will cancel all the resource
+ * invocations for that group invocation.</p>
+ *
+ * @param historyId the ID of the group or resource history item identifying
the in-progress operation
+ * @param ignoreAgentErrors if <code>true</code> this will still flag the
history items in the database as canceled,
+ * even if the method failed to notify the agent(s) that the
operation should be canceled.
+ * If <code>false</code>, this method will not
update the history status unless it could
+ * successfully tell the agent(s) to cancel the operation.
+ */
+ void cancelOperationHistory(int historyId, boolean ignoreAgentErrors) throws
RuntimeException;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
index e4b2d7f..00d26f8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryListView.java
@@ -18,6 +18,10 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.history;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.List;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSRequest;
@@ -36,6 +40,7 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+
import org.rhq.core.domain.operation.OperationHistory;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -45,15 +50,16 @@ import
org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.OperationGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.AncestryUtil;
+import org.rhq.enterprise.gui.coregui.client.operation.OperationHistoryDataSource;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Option;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHTMLPane;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* @author Greg Hinkle
* @author John Mazzitelli
@@ -87,6 +93,56 @@ public abstract class AbstractOperationHistoryListView<T extends
AbstractOperati
SortDirection.DESCENDING);
getListGrid().setSort(new SortSpecifier[] { sortSpec });
+ // the below addTableAction and the enclosing TableAction anon class code is
taken from
+ // OperationHistoryView. I don't know why we have an abstract operation
history list hierarchy separate
+ // from OperationHistoryView. Perhaps independently developed and the developer
of one didn't know the other
+ // existed. In any case, this code is almost identical as the table action in
OperationHistoryView with the
+ // exception that this code uses AbstractOperationHistoryDataSource.Field
constants.
+ addTableAction(extendLocatorId("Cancel"), MSG.common_button_cancel(),
+ MSG.view_operationHistoryList_cancelConfirm(), new TableAction() {
+ public boolean isEnabled(ListGridRecord[] selection) {
+ int count = selection.length;
+ for (ListGridRecord item : selection) {
+ if (!OperationRequestStatus.INPROGRESS.name().equals(
+
item.getAttribute(AbstractOperationHistoryDataSource.Field.STATUS))) {
+ count--; // one selected item was not in-progress, it
doesn't count
+ }
+ }
+ return (count >= 1 && hasControlPermission());
+ }
+
+ public void executeAction(ListGridRecord[] selection, Object actionValue)
{
+ int numCancelRequestsSubmitted = 0;
+ OperationGWTServiceAsync opService =
GWTServiceLookup.getOperationService();
+ for (ListGridRecord toBeCanceled : selection) {
+ // only cancel those selected operations that are currently in
progress
+ if (OperationRequestStatus.INPROGRESS.name().equals(
+
toBeCanceled.getAttribute(AbstractOperationHistoryDataSource.Field.STATUS))) {
+ numCancelRequestsSubmitted++;
+ final int historyId =
toBeCanceled.getAttributeAsInt(OperationHistoryDataSource.Field.ID);
+ opService.cancelOperationHistory(historyId, false, new
AsyncCallback<Void>() {
+ public void onSuccess(Void result) {
+ Message msg = new
Message(MSG.view_operationHistoryList_cancelSuccess(String
+ .valueOf(historyId)), Severity.Info,
EnumSet.of(Option.BackgroundJobResult));
+ CoreGUI.getMessageCenter().notify(msg);
+ };
+
+ public void onFailure(Throwable caught) {
+ Message msg = new
Message(MSG.view_operationHistoryList_cancelFailure(String
+ .valueOf(historyId)), caught, Severity.Error,
EnumSet
+ .of(Option.BackgroundJobResult));
+ CoreGUI.getMessageCenter().notify(msg);
+ };
+ });
+ }
+ }
+ CoreGUI.getMessageCenter().notify(
+ new Message(MSG.view_operationHistoryList_cancelSubmitted(String
+ .valueOf(numCancelRequestsSubmitted)), Severity.Info));
+ refreshTableInfo();
+ }
+ });
+
addTableAction(extendLocatorId("Delete"), MSG.common_button_delete(),
getDeleteConfirmMessage(),
new TableAction() {
public boolean isEnabled(ListGridRecord[] selection) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
index d66056f..0f32bab 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
@@ -20,6 +20,7 @@
package org.rhq.enterprise.gui.coregui.client.operation;
import java.util.ArrayList;
+import java.util.EnumSet;
import java.util.LinkedHashMap;
import java.util.List;
@@ -47,8 +48,11 @@ import
org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import org.rhq.enterprise.gui.coregui.client.components.view.HasViewName;
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.OperationGWTServiceAsync;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDetailsView;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Option;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
/**
* A view that displays a paginated table of operation history. Support exists of
subsystem and resource contexts.
@@ -165,6 +169,52 @@ public class OperationHistoryView extends
TableSection<OperationHistoryDataSourc
protected void setupTableInteractions() {
+ addTableAction(extendLocatorId("Cancel"), MSG.common_button_cancel(),
+ MSG.view_operationHistoryList_cancelConfirm(),
+ new TableAction() {
+ public boolean isEnabled(ListGridRecord[] selection) {
+ int count = selection.length;
+ for (ListGridRecord item : selection) {
+ if (!OperationRequestStatus.INPROGRESS.name().equals(
+ item.getAttribute(OperationHistoryDataSource.Field.STATUS)))
{
+ count--; // one selected item was not in-progress, it
doesn't count
+ }
+ }
+ return (count >= 1 && hasControlPermission());
+ }
+
+ public void executeAction(ListGridRecord[] selection, Object actionValue)
{
+ int numCancelRequestsSubmitted = 0;
+ OperationGWTServiceAsync opService =
GWTServiceLookup.getOperationService();
+ for (ListGridRecord toBeCanceled : selection) {
+ // only cancel those selected operations that are currently in
progress
+ if (OperationRequestStatus.INPROGRESS.name().equals(
+
toBeCanceled.getAttribute(OperationHistoryDataSource.Field.STATUS))) {
+ numCancelRequestsSubmitted++;
+ final int historyId =
toBeCanceled.getAttributeAsInt(OperationHistoryDataSource.Field.ID);
+ opService.cancelOperationHistory(historyId, false, new
AsyncCallback<Void>() {
+ public void onSuccess(Void result) {
+ Message msg = new
Message(MSG.view_operationHistoryList_cancelSuccess(String
+ .valueOf(historyId)), Severity.Info,
EnumSet.of(Option.BackgroundJobResult));
+ CoreGUI.getMessageCenter().notify(msg);
+ };
+
+ public void onFailure(Throwable caught) {
+ Message msg = new
Message(MSG.view_operationHistoryList_cancelFailure(String
+ .valueOf(historyId)), caught, Severity.Error,
EnumSet
+ .of(Option.BackgroundJobResult));
+ CoreGUI.getMessageCenter().notify(msg);
+ };
+ });
+ }
+ }
+ CoreGUI.getMessageCenter().notify(
+ new Message(MSG.view_operationHistoryList_cancelSubmitted(String
+ .valueOf(numCancelRequestsSubmitted)), Severity.Info));
+ refreshTableInfo();
+ }
+ });
+
addTableAction(extendLocatorId("Delete"), MSG.common_button_delete(),
getDeleteConfirmMessage(),
new TableAction() {
public boolean isEnabled(ListGridRecord[] selection) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
index 6f56f65..4e556d0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java
@@ -235,4 +235,11 @@ public class OperationGWTServiceImpl extends AbstractGWTServiceImpl
implements O
}
}
+ public void cancelOperationHistory(int historyId, boolean ignoreAgentErrors) throws
RuntimeException {
+ try {
+ operationManager.cancelOperationHistory(getSessionSubject(), historyId,
ignoreAgentErrors);
+ } catch (Throwable t) {
+ throw getExceptionToThrowToClient(t);
+ }
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index db76a5f..4852efc 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1614,6 +1614,10 @@ view_operationHistoryDetails_results = Results
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_forceDelete = Force Delete
view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 2b65a61..67a0445 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1631,6 +1631,10 @@ view_operationHistoryDetails_results = Výsledky
view_operationHistoryDetails_status = Stav
view_operationHistoryList_button_forceDelete = Vynutit smazání
view_operationHistoryList_button_runOperation = Spustit operaci
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 51a6df2..43c6479 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1449,6 +1449,10 @@ view_operationHistoryDetails_requestor = Anforderer
view_operationHistoryDetails_results = Ergebnisse
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_runOperation = Operation ausführen
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 274049c..9380390 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1602,6 +1602,10 @@ view_operationHistoryDetails_results = 結果
view_operationHistoryDetails_status = ステータス
view_operationHistoryList_button_forceDelete = 強制削除
view_operationHistoryList_button_runOperation = オペレーションの実行
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index f70f08c..b167577 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -1671,6 +1671,10 @@ view_operationHistoryDetails_results = Results
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_forceDelete = Force Delete
view_operationHistoryList_button_runOperation = Run Operation
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 158f224..faeb808 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2459,6 +2459,10 @@ view_admin_downloads_cli_version = Версия CLI
##view_configEdit_unset = Unset?
##view_configEdit_value = Value
##view_messageCenter_messageRootCause = Root Cause
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 2c96e9e..51b4ab1 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1603,6 +1603,10 @@ view_operationHistoryDetails_results = \u7ed3\u679c
view_operationHistoryDetails_status = \u72b6\u6001
view_operationHistoryList_button_forceDelete = \u5f3a\u5236\u5220\u9664
view_operationHistoryList_button_runOperation = \u6267\u884c\u64cd\u4f5c
+##view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
+##view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
+##view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
+##view_operationHistoryList_cancelSuccess = The cancel request has been successfully
submitted for the operation with the history ID of [{0}].
##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
commit 7771076c4c28709021d601b03ad79fcc05eaf5a8
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 12 11:49:25 2012 -0400
[BZ 830998] while working on this class for this BZ I saw these TODOs to i18n some
messages. So while this doesn't address the issue in the BZ, it does need to get done.
this is just new i18n messages.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
index e5c6208..d66056f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
@@ -19,6 +19,10 @@
package org.rhq.enterprise.gui.coregui.client.operation;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSRequest;
@@ -29,6 +33,7 @@ import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.SpacerItem;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.operation.ResourceOperationHistory;
@@ -45,10 +50,6 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDetailsView;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-
/**
* A view that displays a paginated table of operation history. Support exists of
subsystem and resource contexts.
* Group operation history is (currently) handled separately as the view is comprised of
group operation history
@@ -210,8 +211,8 @@ public class OperationHistoryView extends
TableSection<OperationHistoryDataSourc
}
public void onFailure(Throwable caught) {
- // TODO: i18n
- CoreGUI.getErrorHandler().handleError("Failed to delete
" + operationHistoryToRemove + ".",
+ CoreGUI.getErrorHandler().handleError(
+
MSG.view_operationHistoryList_deleteFailure(operationHistoryToRemove.toString()),
caught);
failureIds.add(operationHistoryToRemove.getId());
handleCompletion(successIds, failureIds,
numberOfRecordsToBeDeleted);
@@ -222,15 +223,13 @@ public class OperationHistoryView extends
TableSection<OperationHistoryDataSourc
private void handleCompletion(List<Integer> successIds, List<Integer>
failureIds, int numberOfRecordsToBeDeleted) {
if ((successIds.size() + failureIds.size()) == numberOfRecordsToBeDeleted) {
- // TODO: i18n
if (successIds.size() == numberOfRecordsToBeDeleted) {
CoreGUI.getMessageCenter().notify(
- new Message("Deleted " + numberOfRecordsToBeDeleted +
" operation history items."));
+ new
Message(MSG.view_operationHistoryList_deleteSuccess(String.valueOf(numberOfRecordsToBeDeleted))));
} else {
CoreGUI.getMessageCenter().notify(
- new Message("Deleted " + successIds.size()
- + " operation history items, but failed to delete the items
with the following IDs: "
- + failureIds));
+ new
Message(MSG.view_operationHistoryList_deletePartialSuccess(String.valueOf(successIds.size()),
+ failureIds.toString())));
}
refresh();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 05308b1..db76a5f 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1614,6 +1614,9 @@ view_operationHistoryDetails_results = Results
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_forceDelete = Force Delete
view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = not yet started
view_operationHistoryList_title = Operation History
view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 06c3525..2b65a61 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1631,6 +1631,9 @@ view_operationHistoryDetails_results = Výsledky
view_operationHistoryDetails_status = Stav
view_operationHistoryList_button_forceDelete = Vynutit smazání
view_operationHistoryList_button_runOperation = Spustit operaci
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = ještě nebyla spuštěna
view_operationHistoryList_title = Historie operací
view_operationScheduleDetails_enterParametersBelow = Vložte parametry níže...
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 1b01b6c..51a6df2 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1449,6 +1449,9 @@ view_operationHistoryDetails_requestor = Anforderer
view_operationHistoryDetails_results = Ergebnisse
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_runOperation = Operation ausführen
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = noch nicht gestartet
view_operationHistoryList_title = Verlauf der Operationen
view_operationScheduleDetails_enterParametersBelow = Geben Sie die Parameter unten an...
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 7e21f48..274049c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1602,6 +1602,9 @@ view_operationHistoryDetails_results = 結果
view_operationHistoryDetails_status = ステータス
view_operationHistoryList_button_forceDelete = 強制削除
view_operationHistoryList_button_runOperation = オペレーションの実行
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = まだ開始していません
view_operationHistoryList_title = オペレーション履歴
view_operationScheduleDetails_enterParametersBelow = 以下にパラメーターを入力してください...
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index c96c74f..f70f08c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -1671,6 +1671,9 @@ view_operationHistoryDetails_results = Results
view_operationHistoryDetails_status = Status
view_operationHistoryList_button_forceDelete = Force Delete
view_operationHistoryList_button_runOperation = Run Operation
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = not yet started
view_operationHistoryList_title = Operation History
view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 9a2b35e..158f224 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2459,3 +2459,6 @@ view_admin_downloads_cli_version = Версия CLI
##view_configEdit_unset = Unset?
##view_configEdit_value = Value
##view_messageCenter_messageRootCause = Root Cause
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 7182e42..2c96e9e 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1603,6 +1603,9 @@ view_operationHistoryDetails_results = \u7ed3\u679c
view_operationHistoryDetails_status = \u72b6\u6001
view_operationHistoryList_button_forceDelete = \u5f3a\u5236\u5220\u9664
view_operationHistoryList_button_runOperation = \u6267\u884c\u64cd\u4f5c
+##view_operationHistoryList_deleteFailure = Failed to delete operation history [{0}].
+##view_operationHistoryList_deletePartialSuccess = Deleted [{0}] operation history items,
but failed to delete the items with the following IDs: {1}
+##view_operationHistoryList_deleteSuccess = Deleted [{0}] operation history items.
view_operationHistoryList_notYetStarted = \u8fd8\u672a\u5f00\u59cb
view_operationHistoryList_title = \u64cd\u4f5c\u5386\u53f2
view_operationScheduleDetails_enterParametersBelow =
\u8f93\u5165\u4e0b\u9762\u7684\u53c2\u6570...
commit 2a2102df22a4c87662e80e5704a2e8302ce0377d
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Tue Jun 12 19:01:59 2012 +0200
[BZ 829751] - Make sure deploying a package updates the internal info
about it.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 529ac32..8923398 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -848,7 +848,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
return bits.getBlob().getBits();
} catch (Exception e) {
throw new RuntimeException("Unable to retrieve package bits for
resource: " + resourceId + " and package: "
- + installedPackageId + " before timeout.");
+ + installedPackageId + ".", e);
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
index 8cd683c..7be42bb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
@@ -164,6 +164,8 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
try {
redeployOnServer(detail.getKey().getName(), hash);
response.setOverallRequestResult(ContentResponseResult.SUCCESS);
+ //we just deployed a different file on the AS7 server, so let's refresh
ourselves
+ deploymentFile = determineDeploymentFile();
DeployIndividualPackageResponse packageResponse = new
DeployIndividualPackageResponse(detail.getKey(), ContentResponseResult.SUCCESS);
response.addPackageResponse(packageResponse);
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
index a3ca1fb..655b0a3 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/DeploymentTest.java
@@ -26,6 +26,7 @@ import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Set;
import org.mockito.Mockito;
@@ -39,10 +40,12 @@ import org.rhq.core.clientapi.agent.inventory.CreateResourceResponse;
import org.rhq.core.clientapi.agent.inventory.DeleteResourceRequest;
import org.rhq.core.clientapi.server.content.ContentDiscoveryReport;
import org.rhq.core.clientapi.server.content.ContentServiceResponse;
+import org.rhq.core.clientapi.server.content.DeployPackagesRequest;
import org.rhq.core.clientapi.server.content.RetrievePackageBitsRequest;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageDetailsKey;
+import org.rhq.core.domain.content.transfer.DeployPackagesResponse;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.domain.resource.Resource;
@@ -61,9 +64,32 @@ import org.rhq.test.arquillian.ServerServicesSetup;
@Test(groups = { "integration", "pc", "standalone" },
singleThreaded = true)
public class DeploymentTest extends AbstractJBossAS7PluginTest {
- private static final String TEST_DEPLOYMENT_NAME = "test-simple.war";
- private static final String TEST_DEPLOYMENT_RESOURCE_PATH =
"itest/test-simple.war";
-
+ private enum TestDeployments {
+ DEPLOYMENT_1("test-simple.war"),
DEPLOYMENT_2("test-simple-2.war");
+
+ private String deploymentName;
+ private String resourcePath;
+ private byte[] hash;
+
+ private TestDeployments(String warName) {
+ this.deploymentName = warName;
+ this.resourcePath = "itest/" + warName;
+ hash =
computeHash(DeploymentTest.class.getClassLoader().getResourceAsStream(resourcePath));
+ }
+
+ public String getDeploymentName() {
+ return deploymentName;
+ }
+
+ public String getResourcePath() {
+ return resourcePath;
+ }
+
+ public byte[] getHash() {
+ return hash;
+ }
+ }
+
@ResourceComponentInstances(plugin = PLUGIN_NAME, resourceType = "JBossAS7
Standalone Server")
private Set<StandaloneASComponent> standalones;
@@ -75,12 +101,21 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
@DiscoveredResources(plugin = PLUGIN_NAME, resourceType = "Deployment")
private Set<Resource> deploymentResources;
- private static final byte[] DEPLOYMENT_HASH;
- static {
- DEPLOYMENT_HASH =
-
computeHash(DeploymentTest.class.getClassLoader().getResourceAsStream(TEST_DEPLOYMENT_RESOURCE_PATH));
- }
+ private static TestDeployments DEPLOYMENT_TO_SERVE = TestDeployments.DEPLOYMENT_1;
+
+ private static long copyStreamAndReturnCount(InputStream in, OutputStream out) throws
IOException {
+ int data;
+ long cnt = 0;
+ while ((data = in.read()) != -1) {
+ if (out != null) {
+ out.write(data);
+ }
+ cnt++;
+ }
+ return cnt;
+ }
+
//this is no test method
@ServerServicesSetup
@Test(enabled = false)
@@ -91,20 +126,20 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
new Answer<Long>() {
@Override
public Long answer(InvocationOnMock invocation) throws Throwable {
- InputStream str =
getClass().getClassLoader().getResourceAsStream(TEST_DEPLOYMENT_RESOURCE_PATH);
+ InputStream str =
getClass().getClassLoader().getResourceAsStream(DEPLOYMENT_TO_SERVE.getResourcePath());
OutputStream out = (OutputStream)
invocation.getArguments()[invocation.getArguments().length - 1];
- int data;
- long cnt = 0;
- while ((data = str.read()) != -1) {
- if (out != null) {
- out.write(data);
- }
- cnt++;
- }
-
- return cnt;
+ return copyStreamAndReturnCount(str, out);
}
});
+
+
Mockito.when(serverServices.getContentServerService().downloadPackageBitsGivenResource(Mockito.anyInt(),
Mockito.any(PackageDetailsKey.class), Mockito.any(OutputStream.class))).then(new
Answer<Long>() {
+ @Override
+ public Long answer(InvocationOnMock invocation) throws Throwable {
+ InputStream str =
getClass().getClassLoader().getResourceAsStream(DEPLOYMENT_TO_SERVE.getResourcePath());
+ OutputStream out = (OutputStream)
invocation.getArguments()[invocation.getArguments().length - 1];
+ return copyStreamAndReturnCount(str, out);
+ }
+ });
}
@Test(priority = 10)
@@ -118,10 +153,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
//(dependsOnMethods = "assignServerResource")
@Test(priority = 11)
public void testDeploy() throws Exception {
- ResourcePackageDetails packageDetails = getTestDeploymentPackageDetails();
-
- packageDetails.setFileName(TEST_DEPLOYMENT_NAME);
- packageDetails.setDeploymentTimeConfiguration(new Configuration());
+ ResourcePackageDetails packageDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
Configuration deploymentConfig = new Configuration();
deploymentConfig.put(new PropertySimple("runtimeName",
packageDetails.getName()));
@@ -148,7 +180,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
Resource deployment = deploymentResources.iterator().next();
- assert TEST_DEPLOYMENT_NAME.equals(deployment.getName()) : "The deployment
doesn't seem to have the expected name";
+ assert
TestDeployments.DEPLOYMENT_1.getDeploymentName().equals(deployment.getName()) : "The
deployment doesn't seem to have the expected name";
ContentDiscoveryReport report =
pluginContainer.getContentManager().executeResourcePackageDiscoveryImmediately(deployment.getId(),
"file");
@@ -157,7 +189,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
assert details != null && details.size() == 1 : "The archived
deployment should be backed by exactly 1 package.";
ResourcePackageDetails actualDetails = details.iterator().next();
- ResourcePackageDetails expectedDetails = getTestDeploymentPackageDetails();
+ ResourcePackageDetails expectedDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
//we don't expect the resource details to be equal, because the version
field
//will be different - the test code simplistically just assigns "1.0"
@@ -175,6 +207,41 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
@Test(priority = 13)
public void testDeploymentContentRetrieval() throws Exception {
+ testContentRetrieval(TestDeployments.DEPLOYMENT_1);
+ }
+
+ @Test(priority = 14)
+ public void testRedeploy() throws Exception {
+ Resource deployment = deploymentResources.iterator().next();
+ //we are updating the deployment 1. So provide a key to the first deployment but
later on actually
+ //deliver bits of the deployment 2, so that we get the update we
"wanted".
+ ResourcePackageDetails packageDetails =
getTestDeploymentPackageDetails(TestDeployments.DEPLOYMENT_1);
+
+ //this is what our mocked serverside is going to serve the package bits for
+ TestDeployments origServedDeployemnt = DEPLOYMENT_TO_SERVE;
+ DEPLOYMENT_TO_SERVE = TestDeployments.DEPLOYMENT_2;
+
+ try {
+ DeployPackagesRequest request = new DeployPackagesRequest(1, deployment.getId(),
Collections.singleton(packageDetails));
+
+ DeployPackagesResponse response =
pluginContainer.getContentManager().deployPackagesImmediately(request);
+
+ testContentRetrieval(TestDeployments.DEPLOYMENT_2);
+ } finally {
+ //switch the served deployment back, so that other tests aren't affected
+ DEPLOYMENT_TO_SERVE = origServedDeployemnt;
+ }
+ }
+
+ @Test(priority = 15)
+ public void testUndeploy() throws Exception {
+ Resource deployment = deploymentResources.iterator().next();
+ DeleteResourceRequest request = new DeleteResourceRequest(0,
deployment.getId());
+ getServerInventory().removeResource(deployment);
+ pluginContainer.getResourceFactoryManager().deleteResource(request);
+ }
+
+ private void testContentRetrieval(final TestDeployments deployment) throws Exception
{
final boolean[] lockAndTestResult = new boolean[2];
//perform the test in the mocked server-side.
@@ -189,7 +256,7 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
lockAndTestResult[0] = true;
//transfer the test result to the test thread so that
//the assert is captured.
- lockAndTestResult[1] = Arrays.equals(DEPLOYMENT_HASH, md5);
+ lockAndTestResult[1] = Arrays.equals(deployment.getHash(), md5);
lockAndTestResult.notifyAll();
}
@@ -201,9 +268,9 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
Mockito.any(InputStream.class));
//setup the content retrieval request and execute it
- Resource deployment = deploymentResources.iterator().next();
+ Resource deploymentResource = deploymentResources.iterator().next();
RetrievePackageBitsRequest request =
- new RetrievePackageBitsRequest(0, deployment.getId(),
getTestDeploymentPackageDetails());
+ new RetrievePackageBitsRequest(0, deploymentResource.getId(),
getTestDeploymentPackageDetails(deployment));
pluginContainer.getContentManager().retrievePackageBits(request);
//the content retrieval is async so wait in the test method until the mocked
server-side
@@ -215,17 +282,14 @@ public class DeploymentTest extends AbstractJBossAS7PluginTest {
assert lockAndTestResult[1] : "The data obtained from the deployment are
different to what should have been deployed.";
}
}
-
- @Test(priority = 14)
- public void testUndeploy() throws Exception {
- Resource deployment = deploymentResources.iterator().next();
- DeleteResourceRequest request = new DeleteResourceRequest(0,
deployment.getId());
- getServerInventory().removeResource(deployment);
- pluginContainer.getResourceFactoryManager().deleteResource(request);
- }
- private ResourcePackageDetails getTestDeploymentPackageDetails() {
- return new ResourcePackageDetails(new PackageDetailsKey(TEST_DEPLOYMENT_NAME,
"1.0", "file", "noarch"));
+ private ResourcePackageDetails getTestDeploymentPackageDetails(TestDeployments
deployment) {
+ ResourcePackageDetails details = new ResourcePackageDetails(new
PackageDetailsKey(deployment.getDeploymentName(), "1.0", "file",
"noarch"));
+ details.setFileName(deployment.getDeploymentName());
+ details.setDeploymentTimeConfiguration(new Configuration());
+
+ return details;
+
}
private static byte[] computeHash(InputStream str) {
diff --git a/modules/plugins/jboss-as-7/src/test/resources/itest/test-simple-2.war
b/modules/plugins/jboss-as-7/src/test/resources/itest/test-simple-2.war
new file mode 100644
index 0000000..67fb7a0
Binary files /dev/null and
b/modules/plugins/jboss-as-7/src/test/resources/itest/test-simple-2.war differ
commit 9801e8e7b62f621c1e972497c5f38c11f0ff93f6
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue Jun 12 18:00:02 2012 +0200
[830871 - Bundle disable deploy icon not available] fixed, also little refactoring
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/IconEnum.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/IconEnum.java
index 2df0099..23bb13d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/IconEnum.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/IconEnum.java
@@ -77,6 +77,12 @@ public enum IconEnum {
// Bundle Tab
/////////////////////////////
BUNDLE("subsystems/bundle/Bundle_16.png",
"subsystems/bundle/Bundle_24.png"),
+ BUNDLE_DELETE("subsystems/bundle/BundleAction_Delete_16.png",
"subsystems/bundle/BundleAction_Delete_24.png"),
+ BUNDLE_DEPLOY("subsystems/bundle/BundleAction_Deploy_16.png",
"subsystems/bundle/BundleAction_Deploy_24.png"),
+ BUNDLE_DESTINATION("subsystems/bundle/BundleDestination_16.png",
"subsystems/bundle/BundleDestination_24.png"),
+
BUNDLE_DESTINATION_DELETE("subsystems/bundle/BundleDestinationAction_Delete_16.png",
"subsystems/bundle/BundleDestinationAction_Delete_24.png"),
+
BUNDLE_DESTINATION_PURGE("subsystems/bundle/BundleDestinationAction_Purge_16.png",
"subsystems/bundle/BundleDestinationAction_Purge_24.png"),
+ BUNDLE_REVERT("subsystems/bundle/BundleAction_Revert_16.png",
"subsystems/bundle/BundleAction_Revert_24.png"),
/////////////////////////////
// Administration Tab
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
index 1c5a45d..5ac720f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
@@ -43,6 +43,7 @@ import org.rhq.core.domain.tagging.Tag;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.IconEnum;
import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
@@ -91,7 +92,7 @@ public class BundleDestinationView extends LocatableVLayout implements
Bookmarka
BackButton backButton = new BackButton(extendLocatorId("BackButton"),
MSG.view_bundle_dest_backToBundle()
+ ": " + StringUtility.escapeHtml(bundle.getName()),
"Bundles/Bundle/" + bundle.getId());
- HeaderLabel header = new
HeaderLabel(Canvas.getImgURL("subsystems/bundle/BundleDestination_24.png"),
+ HeaderLabel header = new
HeaderLabel(Canvas.getImgURL(IconEnum.BUNDLE_DESTINATION.getIcon24x24Path()),
StringUtility.escapeHtml(destination.getName()));
detail = new Canvas();
@@ -181,7 +182,7 @@ public class BundleDestinationView extends LocatableVLayout implements
Bookmarka
private Canvas getActionLayout(String locatorId) {
LocatableVLayout actionLayout = new LocatableVLayout(locatorId, 10);
IButton deployButton = new
LocatableIButton(actionLayout.extendLocatorId("Deploy"),
MSG.view_bundle_deploy());
- deployButton.setIcon("subsystems/bundle/BundleAction_Deploy_16.png");
+ deployButton.setIcon(IconEnum.BUNDLE_DEPLOY.getIcon16x16Path());
deployButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
new BundleDeployWizard(destination).startWizard();
@@ -190,7 +191,7 @@ public class BundleDestinationView extends LocatableVLayout implements
Bookmarka
actionLayout.addMember(deployButton);
IButton revertButton = new
LocatableIButton(actionLayout.extendLocatorId("Revert"),
MSG.view_bundle_revert());
- revertButton.setIcon("subsystems/bundle/BundleAction_Revert_16.png");
+ revertButton.setIcon(IconEnum.BUNDLE_REVERT.getIcon16x16Path());
revertButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
SC.ask(MSG.view_bundle_dest_revertConfirm(), new BooleanCallback() {
@@ -205,7 +206,7 @@ public class BundleDestinationView extends LocatableVLayout implements
Bookmarka
actionLayout.addMember(revertButton);
IButton purgeButton = new
LocatableIButton(actionLayout.extendLocatorId("Purge"),
MSG.view_bundle_purge());
-
purgeButton.setIcon("subsystems/bundle/BundleDestinationAction_Purge_16.png");
+ purgeButton.setIcon(IconEnum.BUNDLE_DESTINATION_PURGE.getIcon16x16Path());
purgeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
SC.ask(MSG.view_bundle_dest_purgeConfirm(), new BooleanCallback() {
@@ -237,7 +238,7 @@ public class BundleDestinationView extends LocatableVLayout implements
Bookmarka
actionLayout.addMember(purgeButton);
IButton deleteButton = new
LocatableIButton(actionLayout.extendLocatorId("Delete"),
MSG.common_button_delete());
-
deleteButton.setIcon("subsystems/bundle/BundleDestinationAction_Delete_16.png");
+ deleteButton.setIcon(IconEnum.BUNDLE_DESTINATION_DELETE.getIcon16x16Path());
deleteButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
index e79b1fd..6eaa263 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
@@ -201,7 +201,7 @@ public class BundleView extends LocatableVLayout implements
BookmarkableView {
VLayout layout = new LocatableVLayout(form.extendLocatorId("Actions"),
10);
IButton deployButton = new
LocatableIButton(form.extendLocatorId("Deploy"), MSG.view_bundle_deploy());
- deployButton.setIcon(IconEnum.BUNDLE.getIcon16x16Path());
+ deployButton.setIcon(IconEnum.BUNDLE_DEPLOY.getIcon16x16Path());
deployButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
@@ -230,7 +230,7 @@ public class BundleView extends LocatableVLayout implements
BookmarkableView {
layout.addMember(deployButton);
IButton deleteButton = new
LocatableIButton(form.extendLocatorId("Delete"), MSG.common_button_delete());
- deleteButton.setIcon("subsystems/bundle/BundleAction_Delete_16.png");
+ deleteButton.setIcon(IconEnum.BUNDLE_DELETE.getIcon16x16Path());
deleteButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
SC.ask(MSG.view_bundle_deleteConfirm(), new BooleanCallback() {
commit 0377efde9ee8886a1fbb03d4de74958841946ac1
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jun 12 10:33:35 2012 -0400
[831237 - modules/core/domain/src/main/resources/META-INF/persistence.xml missing
version attribute]
added version attribute
diff --git a/modules/core/domain/src/main/resources/META-INF/persistence.xml
b/modules/core/domain/src/main/resources/META-INF/persistence.xml
index bf336f7..451c82a 100644
--- a/modules/core/domain/src/main/resources/META-INF/persistence.xml
+++ b/modules/core/domain/src/main/resources/META-INF/persistence.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<persistence
xmlns="http://java.sun.com/xml/ns/persistence">
+<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="rhqpu">
<jta-data-source>java:/RHQDS</jta-data-source>
commit 274f189f5b4f5eba233630eb92c368c2abe485fa
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue Jun 12 14:14:50 2012 +0200
[BZ 816086 - Inventory tree focuses previously selected node when expanding others]
Added the check whether expanding the currently selected node or some other
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index 694f8b6..0f37f65 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -83,6 +83,7 @@ import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
+import org.rhq.enterprise.gui.coregui.client.components.tree.EnhancedTreeNode;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.resource.graph.ResourceGraphPortlet;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
@@ -250,7 +251,15 @@ public class ResourceTreeView extends LocatableVLayout {
treeGrid.addDataArrivedHandler(new DataArrivedHandler() {
public void onDataArrived(DataArrivedEvent dataArrivedEvent) {
- updateSelection();
+ // expand the tree if nothing is selected
+ if (selectedNodeId == null) {
+ updateSelection();
+ }
+ // do not update the selection when expanding other tree node (BZ
816086)
+ TreeNode parent = dataArrivedEvent.getParentNode();
+ if (parent instanceof EnhancedTreeNode && ((EnhancedTreeNode)
parent).getID().equals(selectedNodeId)) {
+ updateSelection();
+ }
}
});
}
commit 04b75f0ec33362fd9e7033588ffa24624f2b536b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 11 17:37:14 2012 -0400
[BZ 830996] allow the OperationManager thread pool support multiple concurrent
operations
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationManager.java
index d87f5c1..a3f5f1d 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/operation/OperationManager.java
@@ -38,8 +38,8 @@ import org.jetbrains.annotations.Nullable;
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.agent.configuration.ConfigurationUtility;
import org.rhq.core.clientapi.agent.operation.CancelResults;
-import org.rhq.core.clientapi.agent.operation.OperationAgentService;
import org.rhq.core.clientapi.agent.operation.CancelResults.InterruptedState;
+import org.rhq.core.clientapi.agent.operation.OperationAgentService;
import org.rhq.core.clientapi.server.operation.OperationServerService;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -83,8 +83,8 @@ public class OperationManager extends AgentService implements
OperationAgentServ
LinkedBlockingQueue<Runnable> queue = new
LinkedBlockingQueue<Runnable>(10000);
LoggingThreadFactory threadFactory = new
LoggingThreadFactory(SENDER_THREAD_POOL_NAME, true);
int maxPoolSize = configuration.getOperationInvokerThreadPoolSize();
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(1, maxPoolSize, 1000,
TimeUnit.MILLISECONDS, queue,
- threadFactory);
+ ThreadPoolExecutor threadPool = new ThreadPoolExecutor(maxPoolSize, maxPoolSize,
1000, TimeUnit.MILLISECONDS,
+ queue, threadFactory);
operationGateway = new OperationThreadPoolGateway(threadPool);
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
new file mode 100644
index 0000000..887ba0f
--- /dev/null
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/operation/ParallelOperationsTest.java
@@ -0,0 +1,242 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.pc.operation;
+
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import org.rhq.core.clientapi.agent.PluginContainerException;
+import org.rhq.core.clientapi.server.operation.OperationServerService;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.PluginContainerConfiguration;
+import org.rhq.core.pc.ServerServices;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.core.util.exception.ExceptionPackage;
+
+@Test
+public class ParallelOperationsTest {
+ private static final String JOB_1_ID = "job1"; // the job ID for the job
run on resource #1
+ private static final String JOB_2_ID = "job2"; // the job ID for the job
run on resource #2
+ private static final int RESOURCE_1_ID = 1;
+ private static final int RESOURCE_2_ID = 2;
+ private static final long OPERATION_TIMEOUT_MILLIS = 5000L;
+
+ // keyed on job Id
+ private Map<String, Object> opResults; // key=job ID, value=results object
+ private Map<String, Long> jobsCompleted; // key=job ID, value=time it
completed
+ private OperationManager manager;
+ private PluginContainerConfiguration pcConfig;
+
+ @BeforeMethod
+ public void beforeMethod() {
+ opResults = new Hashtable<String, Object>(); // need synchronized
hashtable
+ jobsCompleted = Collections.synchronizedMap(new TreeMap<String, Long>());
+
+ ServerServices serverServices = new ServerServices();
+ serverServices.setOperationServerService(new MockOperationServerService());
+
+ pcConfig = new PluginContainerConfiguration();
+ pcConfig.setOperationInvocationTimeout(OPERATION_TIMEOUT_MILLIS / 1000L);
+ pcConfig.setServerServices(serverServices);
+
+ manager = new MockOperationManager();
+ manager.setConfiguration(pcConfig);
+ manager.initialize();
+ println("Starting new test method...");
+ }
+
+ @AfterMethod
+ public void afterMethod() {
+ opResults = null;
+ jobsCompleted = null;
+ manager.shutdown();
+ pcConfig = null;
+ println("Test method ended.");
+ }
+
+ public void testParallelOperations() throws Exception {
+ println("testParallelOperations - START");
+
+ // invoke job 1 - which in turn invokes job 1 (initialOp calls secondOp)
+ // but job 1 will invoke on resource 1 and job 2 will invoke on resource 2 - they
should be able to run concurrently
+ manager.invokeOperation(JOB_1_ID, RESOURCE_1_ID, "initialOp", new
Configuration());
+
+ // let's wait for both jobs to finish - they should finish really fast and
not timeout
+ waitForAgentResponse(OPERATION_TIMEOUT_MILLIS, JOB_1_ID);
+ waitForAgentResponse(OPERATION_TIMEOUT_MILLIS, JOB_2_ID);
+
+ Object results = opResults.get(JOB_1_ID);
+ assert results != null : "assertJob1Result1: " + opResults;
+ assert results instanceof Configuration : "assertJob1Result2: " +
opResults;
+ assert ((Configuration)
results).getSimple("initialOpResults").getStringValue().equals("initialOpSuccess")
: "assertJob1Result3: "
+ + opResults;
+
+ results = opResults.get(JOB_2_ID);
+ assert results != null : "assertJob2Result1: " + opResults;
+ assert results instanceof Configuration : "assertJob2Result2: " +
opResults;
+ assert ((Configuration)
results).getSimple("secondOpResults").getStringValue().equals("secondOpSuccess")
: "assertJob2Result3: "
+ + opResults;
+
+ printJobsCompleted();
+
+ println("testParallelOperations - STOP");
+ }
+
+ public void testOperationsOnSameResource() throws Exception {
+ println("testOperationsOnSameResource - START");
+
+ // invoke job 1 - which in turn invokes job 1 (initialOpSameResource calls
secondOpSameResource)
+ // where job 1 and job 2 will invoke on same resource 1. They should not run at
the same time.
+ // Since job 1 waits for job 2 (and since job 2 can't run until job 1
finished), there is a deadlock
+ // condition and job 1 will eventually timeout.
+ manager.invokeOperation(JOB_1_ID, RESOURCE_1_ID,
"initialOpSameResource", new Configuration());
+
+ // let's wait job 1 and confirm it does timeout (it times out due to being
deadlocked)
+ waitForAgentResponse(OPERATION_TIMEOUT_MILLIS + 1000L, JOB_1_ID);
+ Object results = opResults.get(JOB_1_ID);
+ assert results != null : "odd - job 1 should have timed out - it should not
still be actively running";
+ assert results.toString().equals("TIMEOUT") : "job 1 should have
timed out after being deadlocked: " + results;
+
+ printJobsCompleted();
+
+ println("testOperationsOnSameResource - STOP");
+ }
+
+ private void printJobsCompleted() {
+ if (jobsCompleted == null || jobsCompleted.isEmpty()) {
+ println("jobsCompleted is null/empty");
+ } else {
+ for (String op : jobsCompleted.keySet()) {
+ println(op + " completed at " +
formatTime(jobsCompleted.get(op)));
+ }
+ }
+ }
+
+ private void waitForAgentResponse(long sleepMillis, String jobId) throws
InterruptedException {
+ // keep checking to see if it finished
+ long now = System.currentTimeMillis();
+ long timeout = now + sleepMillis;
+
+ while (System.currentTimeMillis() < timeout) {
+ Thread.sleep(1000);
+ if (opResults.containsKey(jobId)) {
+ break;
+ }
+ }
+ }
+
+ private class MockOperationManager extends OperationManager {
+
+ @Override
+ protected OperationFacet getOperationFacet(int resourceId, long
facetMethodTimeout)
+ throws PluginContainerException {
+ return new MockOperationFacet();
+ }
+
+ @Override
+ protected ResourceType getResourceType(int resourceId) {
+ return new ResourceType("testType", "testPlugin",
ResourceCategory.PLATFORM, null);
+ }
+ }
+
+ private class MockOperationFacet implements OperationFacet {
+ public OperationResult invokeOperation(String name, Configuration parameters)
throws Exception {
+ OperationResult opConfig = new OperationResult();
+ if (name.equals("initialOp")) {
+ manager.invokeOperation(JOB_2_ID, RESOURCE_2_ID, "secondOp",
new Configuration()); // call back into OperationManager on different resource
+ // The above call to secondOp should be asynchronous and be able to run
concurrently with us (because
+ // we are invoking it on resource 2, and we are running on resource 1).
+ // If it cannot complete within a few seconds, we have deadlocked.
+ // That would mean resource 1 is delaying a resource 2 op - which would
be a bug.
+ // Different resources should not delay operations on other resources.
+ waitForAgentResponse(OPERATION_TIMEOUT_MILLIS, JOB_2_ID);
+ Object results = opResults.get(JOB_2_ID);
+ assert results != null : "our called job 2 did not finish";
+ assert results instanceof Configuration : "our called job 2 did not
finish as expected: " + opResults;
+ assert ((Configuration)
results).getSimple("secondOpResults").getStringValue()
+ .equals("secondOpSuccess") : "our called job 2 did not
finish as expected: " + opResults;
+
+ opConfig.getComplexResults().put(new
PropertySimple("initialOpResults", "initialOpSuccess"));
+ } else if (name.equals("secondOp")) {
+ opConfig.getComplexResults().put(new
PropertySimple("secondOpResults", "secondOpSuccess"));
+ } else if (name.equals("initialOpSameResource")) {
+ manager.invokeOperation(JOB_2_ID, RESOURCE_1_ID,
"secondOpSameResource", new Configuration()); // call back into OperationManager
on same resource #1
+ // The above call to secondOp should not be able to run concurrently with
us (because
+ // we are invoking it on resource 1, which is the same resource we are
running on).
+ // This should deadlock - job 2 should never finish because it should
never start (at least
+ // until we finish first).
+ // Therefore, we are going to wait for an agent response to job 2 that
will never come.
+ // This will in turn cause our job to timeout.
+ waitForAgentResponse(OPERATION_TIMEOUT_MILLIS + 1000L, JOB_2_ID); // wait
longer than the operation timeout
+ } else if (name.equals("secondOpSameResource")) {
+ opConfig.getComplexResults().put(
+ new PropertySimple("secondOpSameResourceResults",
"secondOpSameResourceSuccess"));
+ } else {
+ throw new IllegalStateException("BAD TEST - unknown operation:
" + name);
+ }
+
+ return opConfig;
+ }
+ }
+
+ private class MockOperationServerService implements OperationServerService {
+ public void operationFailed(String jobId, Configuration result, ExceptionPackage
error, long invocationTime,
+ long completionTime) {
+ //println( "~~~~~~~~~~~~~~ server service - failed: " + jobId +
" : " + formatTime( completionTime ) );
+ jobsCompleted.put(jobId, completionTime);
+ opResults.put(jobId, error);
+ }
+
+ public void operationSucceeded(String jobId, Configuration result, long
invocationTime, long completionTime) {
+ //println( "~~~~~~~~~~~~~~ server service - success: " + jobId +
" : " + formatTime( completionTime ) );
+ jobsCompleted.put(jobId, completionTime);
+ opResults.put(jobId, result);
+ }
+
+ public void operationTimedOut(String jobId, long invocationTime, long
timeoutTime) {
+ //println( "~~~~~~~~~~~~~~ server service - timed out: " + jobId +
" : " + formatTime( timeoutTime ) );
+ jobsCompleted.put(jobId, timeoutTime);
+ opResults.put(jobId, "TIMEOUT");
+ }
+ }
+
+ private static void println(String msg) {
+ System.out.println(formatTime(new Date().getTime()) + ": " + msg);
+ }
+
+ private static String formatTime(long date) {
+ return new SimpleDateFormat("HH:mm:ss.S").format(new Date(date));
+ }
+}
\ No newline at end of file
commit aad0d20a503b7e0cd05749c8a78511afd9d15e1f
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Jun 11 15:24:43 2012 -0400
[Bug 830325 - [Downloads view] links in Connectors and CLI Alert Scripts sections are
centered, rather than left-aligned]
- Fix this so they line up and use the same label as the other stack sections.
- Also, consolidate the "Link" I18N message as well as properly comment
missing
translations for this page.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/DownloadsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/DownloadsView.java
index c3e0069..bcc4ad4 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/DownloadsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/DownloadsView.java
@@ -26,7 +26,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.widgets.form.fields.FormItem;
-import com.smartgwt.client.widgets.form.fields.LinkItem;
import com.smartgwt.client.widgets.form.fields.SpacerItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.layout.SectionStackSection;
@@ -136,7 +135,7 @@ public class DownloadsView extends LocatableVLayout {
md5Item.setWrapTitle(false);
StaticTextItem linkItem = new StaticTextItem("agentLink");
- linkItem.setTitle(MSG.view_admin_downloads_agent_link_label());
+ linkItem.setTitle(MSG.common_label_link());
linkItem.setValue("<a
href=\"/agentupdate/download\">"
+ MSG.view_admin_downloads_agent_link_value(version, build) +
"</a>");
@@ -187,7 +186,7 @@ public class DownloadsView extends LocatableVLayout {
md5Item.setWrapTitle(false);
StaticTextItem linkItem = new StaticTextItem("cliLink");
- linkItem.setTitle(MSG.view_admin_downloads_cli_link_label());
+ linkItem.setTitle(MSG.common_label_link());
linkItem.setValue("<a
href=\"/client/download\">"
+ MSG.view_admin_downloads_cli_link_value(version, build) +
"</a>");
@@ -226,7 +225,7 @@ public class DownloadsView extends LocatableVLayout {
String url = result.values().iterator().next();
StaticTextItem linkItem = new StaticTextItem("bundleLink");
- linkItem.setTitle(MSG.view_admin_downloads_bundle_link_label());
+ linkItem.setTitle(MSG.common_label_link());
linkItem.setValue("<a href=\"" + url +
"\">" + MSG.view_admin_downloads_bundle_link_value(name)
+ "</a>");
@@ -263,24 +262,25 @@ public class DownloadsView extends LocatableVLayout {
if (result != null && !result.isEmpty()) {
int i = 0;
- FormItem[] items = new FormItem[result.size() + 1];
+ FormItem[] items = new FormItem[result.size() + 2];
+
+ for (Map.Entry<String, String> entry : result.entrySet()) {
+ StaticTextItem linkItem = new StaticTextItem("link" +
i);
+ linkItem.setTitle(MSG.common_label_link());
+ linkItem.setValue("<a href=\"" +
entry.getValue() + "\">" + entry.getKey() + "</a>");
+ items[i++] = linkItem;
+ }
+
+ SpacerItem spacerItem = new SpacerItem("spacer");
+ spacerItem.setHeight(5);
+ items[i++] = spacerItem;
StaticTextItem helpText = new
StaticTextItem("connectorHelp");
helpText.setColSpan(2);
helpText.setShowTitle(false);
helpText.setValue(MSG.view_admin_downloads_connectors_help(productInfo.getShortName()));
- items[i] = helpText;
- i++;
+ items[i++] = helpText;
- for (Map.Entry<String, String> entry : result.entrySet()) {
- LinkItem linkItem = new LinkItem("connectorLink" + i);
- linkItem.setColSpan(2);
- linkItem.setShowTitle(false);
- linkItem.setLinkTitle(entry.getKey());
- linkItem.setValue(entry.getValue());
- items[i] = linkItem;
- i++;
- }
form.setItems(items);
} else {
StaticTextItem item = new StaticTextItem("noConnectors");
@@ -313,24 +313,25 @@ public class DownloadsView extends LocatableVLayout {
if (result != null && !result.isEmpty()) {
int i = 0;
- FormItem[] items = new FormItem[result.size() + 1];
+ FormItem[] items = new FormItem[result.size() + 2];
+
+ for (Map.Entry<String, String> entry : result.entrySet()) {
+ StaticTextItem linkItem = new StaticTextItem("link" +
i);
+ linkItem.setTitle(MSG.common_label_link());
+ linkItem.setValue("<a href=\"" +
entry.getValue() + "\">" + entry.getKey() + "</a>");
+ items[i++] = linkItem;
+ }
+
+ SpacerItem spacerItem = new SpacerItem("spacer");
+ spacerItem.setHeight(5);
+ items[i++] = spacerItem;
StaticTextItem helpText = new
StaticTextItem("cliAlertScriptsHelp");
helpText.setColSpan(2);
helpText.setShowTitle(false);
helpText.setValue(MSG.view_admin_downloads_cliAlertScripts_help());
- items[i] = helpText;
- i++;
+ items[i++] = helpText;
- for (Map.Entry<String, String> entry : result.entrySet()) {
- LinkItem linkItem = new LinkItem("cliAlertScriptLink" +
i);
- linkItem.setColSpan(2);
- linkItem.setShowTitle(false);
- linkItem.setLinkTitle(entry.getKey());
- linkItem.setValue(entry.getValue());
- items[i] = linkItem;
- i++;
- }
form.setItems(items);
} else {
StaticTextItem item = new
StaticTextItem("noCliAlertScripts");
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 792f1b5..05308b1 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -66,6 +66,7 @@ common_label_filters = Filters
common_label_hour = hour
common_label_item = item
common_label_items = items
+common_label_link = Link
common_label_month = month
common_label_none = none
common_label_none2 = none
@@ -535,14 +536,12 @@ view_admin_content = Content
view_admin_downloads_agentDownload = Agent Download
view_admin_downloads_agent_buildNumber = Agent Build
view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
view_admin_downloads_agent_link_value = Download Agent {0} ({1})
view_admin_downloads_agent_loadError = Cannot get agent version info
view_admin_downloads_agent_md5 = Agent MD5
view_admin_downloads_agent_version = Agent Version
view_admin_downloads_bundleDownload = Bundle Deployer Download
view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of {0} bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = Link
view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
view_admin_downloads_cliAlertScriptsDownload = CLI Alert Scripts Download
@@ -552,7 +551,6 @@ view_admin_downloads_cliAlertScripts_none = No CLI alert scripts are
available f
view_admin_downloads_cliDownload = Command Line Client Download
view_admin_downloads_cli_buildNumber = CLI Build
view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the {0} Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Link
view_admin_downloads_cli_link_value = Download CLI {0} ({1})
view_admin_downloads_cli_loadError = Cannot get CLI version info
view_admin_downloads_cli_md5 = CLI MD5
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index ed85095..06c3525 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -89,6 +89,7 @@ common_label_filters = Filtry
common_label_hour = hodina
common_label_item = položka
common_label_items = položky
+common_label_link = Odkaz
common_label_month = měsíc
common_label_none = žádný
common_label_none2 = žádný
@@ -554,13 +555,12 @@ view_admin_content = Obsah
view_admin_downloads_agentDownload = Stáhnout agenta
view_admin_downloads_agent_buildNumber = Sestavení agenta
##view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Odkaz
view_admin_downloads_agent_link_value = Stáhnout agenta {0} ({1})
view_admin_downloads_agent_loadError = Nelze získat informace o verzi agenta
view_admin_downloads_agent_md5 = Agent MD5
view_admin_downloads_agent_version = Verze agenta
view_admin_downloads_bundleDownload = Stáhnutí nasazovacího balíku
-view_admin_downloads_bundle_link_label = Odkaz
+##view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is
for use by developers and packagers of {0} bundles. This standalone tool allows you to
test your bundles and their recipes from a console. </p>
view_admin_downloads_bundle_link_value = Stáhnout nasazovače balíků {0}
view_admin_downloads_bundle_loadError = Nelze získat informace nasazovače balíků
view_admin_downloads_cliAlertScriptsDownload = Stáhnout CLI agent skripty
@@ -570,7 +570,6 @@ view_admin_downloads_cliAlertScripts_none = Žádné CLI výstrahové
skripty ne
view_admin_downloads_cliDownload = Stáhnout klienta pro příkazovou řádku
view_admin_downloads_cli_buildNumber = CLI číslo sestavení
##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Odkaz
view_admin_downloads_cli_link_value = Stáhnout CLI {0} ({1})
view_admin_downloads_cli_loadError = Nelze získat informace o verzi CLI
view_admin_downloads_cli_md5 = CLI MD5
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 1712664..1b01b6c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -69,6 +69,7 @@ common_label_filters = Filter
common_label_hour = Stunde
common_label_item = Eintrag
common_label_items = Einträge
+##common_label_link = Link
common_label_month = Monat
common_label_none = keine
common_label_none2 = keines
@@ -499,15 +500,32 @@ view_adminUsersDetails_dataTypeName = Benutzer
view_admin_administration = Verwaltung
view_admin_configuration = Konfiguration
view_admin_content = Inhalte
+##view_admin_downloads_agentDownload = Agent Download
view_admin_downloads_agent_buildNumber = Build-Nummer des Agents
+##view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+##view_admin_downloads_agent_link_value = Download Agent {0} ({1})
+##view_admin_downloads_agent_loadError = Cannot get agent version info
view_admin_downloads_agent_md5 = MD5 Prüfsumme des Agents
view_admin_downloads_agent_version = Version des Agents
+##view_admin_downloads_bundleDownload = Bundle Deployer Download
+##view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is
for use by developers and packagers of {0} bundles. This standalone tool allows you to
test your bundles and their recipes from a console. </p>
+##view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+##view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
view_admin_downloads_cliAlertScriptsDownload = Download von CLI-Alarm-Skripten
view_admin_downloads_cliAlertScripts_help = CLI-Alarm-Skripte sind vorefertigete Skripte,
die als Vorlagen für die Erstellung von Alert-Skripten genutzt werden können. Die Skripte
benötigen üblicherweise einiger Anpassungen bevore sie zur Benachrichtigun für eine
spezifische Alarm-Definition genutzt werden können.
view_admin_downloads_cliAlertScripts_loadError = Kann keine Informationen über
CLI-Alarm-Skripte für den Download lesen
view_admin_downloads_cliAlertScripts_none = Es liegen keine CLI-Alarm-Skripte für den
Download vor
+##view_admin_downloads_cliDownload = Command Line Client Download
+##view_admin_downloads_cli_buildNumber = CLI Build
+##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
+##view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+##view_admin_downloads_cli_loadError = Cannot get CLI version info
view_admin_downloads_cli_md5 = MD5 Prüfsumme des CLI
view_admin_downloads_cli_version = Version des CLI
+##view_admin_downloads_connectorsDownload = Connectors Download
+##view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
+##view_admin_downloads_connectors_loadError = Cannot get connectors info
+##view_admin_downloads_connectors_none = No connectors are available for download
view_admin_landing = In dieser Sektion können die globalen Einstellungen für {0}
verwaltet werden. Dies schließt Sicherheitseinstellungen und Plugins ein, sowie die
Verwaltung der {0} Server- und Agentplugins.
view_admin_measTemplates_updateExisting_title = Existierende Zeitpläne aktualisieren
##view_admin_measTemplates_updateExisting_tooltip = Check this box to update the
collection schedules for the selected metrics on all existing resources of this type. If
this is not checked, the template schedules will only be applied to new resources of this
type that are added to inventory in the future.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 4050dc7..7e21f48 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -69,6 +69,7 @@ common_label_filters = フィルター
common_label_hour = 時間
common_label_item = 項目
common_label_items = 項目
+common_label_link = リンク
common_label_month = 月
common_label_none = なし
common_label_none2 = なし
@@ -533,14 +534,12 @@ view_admin_content = コンテント
view_admin_downloads_agentDownload = エージェントのダウンロード
view_admin_downloads_agent_buildNumber = エージェントビルド
view_admin_downloads_agent_help = <p> これは {0}
Agentの更新バイナリJARファイルです。このJARファイルの目的はユーザーがエージェントがまだ存在しないマシン上に新しいエージェントをインストールできるようにすることと、すでにインストール済みのエージェントを更新できるようにするためです。詳細は、このエージェントダウンロードJARで次のように--helpコマンドラインオプションをつけて実行してください。<br/>
<b>java -jar <agent-download.jar> --help</b> </p>
<h3>エージェントのインストール</h3> <p> <b>java -jar
<agent-download.jar>
--install[=<新しいエージェントディレクトリ>]</b><br/>
このコマンドは新しいエージェントをインストールします。もし新しいディレクトリを指定しなければ、デフォルトは"."となります。</p>
<h3>エージェントの更新</h3> <p> <b>java -jar
<agent-download.jar>
--update[=<古いエージェントディレクトリ>]</b><br/>
これはすでにインストールされた既存のエージェントを更新します。もし古い、既存のエージェントがインストールされたディレクトリを指定しなかったなら、"rhq-agent"が仮定されます。</p>
-view_admin_downloads_agent_link_label = リンク
view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
view_admin_downloads_agent_loadError = エージェントバージョン情報が取得できません
view_admin_downloads_agent_md5 = エージェント MD5
view_admin_downloads_agent_version = エージェントバージョン
view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
view_admin_downloads_bundle_help = <p>
これはバンドルデプロイヤツールで、{0}バンドルの開発者とパッケージ開発者によって使われます。このスタンドアロンツールを使うとバンドルやコンソールからのレシピをテストできるようにします。</p>
-view_admin_downloads_bundle_link_label = リンク
view_admin_downloads_bundle_link_value = バンドルデプロイヤー {0} をダウンロード
view_admin_downloads_bundle_loadError = バンドルデプロイヤー情報が取得できません
view_admin_downloads_cliAlertScriptsDownload = CLIアラートスクリプトのダウンロード
@@ -550,7 +549,6 @@ view_admin_downloads_cliAlertScripts_none = ダウンロードするために利
view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
view_admin_downloads_cli_buildNumber = CLIビルド
view_admin_downloads_cli_help = <p>
これはコマンドラインツールで、CLIとして知られているものです。コンソールから実行するスタンドアロンツールで、{0}サーバーに対してコマンドラインインタフェースを提供します。自動化されたタスクを実行するためにCLIやrunスクリプトを介してコマンドを呼び出すことが可能です。CLIのインストール方法と使い方についての詳細情報はドキュメントをご覧ください。</p>
-view_admin_downloads_cli_link_label = リンク
view_admin_downloads_cli_link_value = CLI {0} ({1}) をダウンロード
view_admin_downloads_cli_loadError = CLIバージョン情報が取得できません
view_admin_downloads_cli_md5 = CLI MD5
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 76ad864..c96c74f 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -67,6 +67,7 @@ common_label_day = dia
common_label_hour = hora
common_label_item = item
common_label_items = itens
+##common_label_link = Link
common_label_month = m\u00EAs
common_label_none = nenhum
common_label_none2 = nenhum
@@ -536,24 +537,23 @@ view_admin_administration = Administra\u00E7\u00E3o
view_admin_configuration = Configura\u00E7\u00E3o
view_admin_content = Conte\u00FAdo
view_admin_downloads_agentDownload = Download do agente
-view_admin_downloads_agent_buildNumber = Agent Build
+##view_admin_downloads_agent_buildNumber = Agent Build
##view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[ = <new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[ = <old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
-view_admin_downloads_agent_link_value = Download Agent {0} ({1})
+##view_admin_downloads_agent_link_value = Download Agent {0} ({1})
view_admin_downloads_agent_loadError = Imposs\u00EDvel recuperar informa\u00E7\u00F5es da
vers\u00E3o do agente
view_admin_downloads_agent_md5 = Agente MD5
view_admin_downloads_agent_version = Vers\u00E3o do agente
view_admin_downloads_bundleDownload = Download do Bundle Deployer
##view_admin_downloads_bundle_help = <p> view_admin_downloads_bundle_link_label =
Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+##view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
view_admin_downloads_bundle_loadError = Imposs\u00EDvel recuperar informa\u00E7\u00F5es
do bundle deployer
##view_admin_downloads_cliAlertScriptsDownload = CLI Alert Scripts Download
##view_admin_downloads_cliAlertScripts_help = CLI alert scripts are pre-canned scripts
that can be used for creating scripted alert notifications. The scripts will usually
require some tweaking before they can be used as a notification on a particular alert
definition.
##view_admin_downloads_cliAlertScripts_loadError = Cannot get info on available CLI alert
scripts for download
##view_admin_downloads_cliAlertScripts_none = No CLI alert scripts are available for
download
view_admin_downloads_cliDownload = Download do cliente por linha de comando (CLI)
-view_admin_downloads_cli_buildNumber = CLI Build
-##view_admin_downloads_cli_help = <p> view_admin_downloads_cli_link_label = Link
+##view_admin_downloads_cli_buildNumber = CLI Build
+##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
view_admin_downloads_cli_link_value = Download do CLI {0} ({1})
view_admin_downloads_cli_loadError = Imposs\u00EDvel recuperar informa\u00E7\u00F5es da
vers\u00E3o do CLI
view_admin_downloads_cli_md5 = CLI MD5
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 2a53522..9a2b35e 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2079,6 +2079,7 @@ common_label_filters = Фильтры
common_label_hour = час
common_label_item = элемент
common_label_items = элементы
+common_label_link = Ссылка
common_label_month = месяц
common_label_none = никого
common_label_none2 = ничего
@@ -2427,25 +2428,29 @@ view_admin_content = Контент
view_admin_downloads_agentDownload = Загрузить агента
view_admin_downloads_agent_buildNumber = Номер сборки агента
view_admin_downloads_agent_help = <p> Это бинарный файл обноавления агента {0}. С
помощью это jar файла вы можете установить свежую версию агента на машину, на которой
агент еще не установлен, и обновить уже установленного агента на машине. Для более
детальной информации запустите загруженный jar в командной строке с опцией --help\:
<br/><b>java -jar <agent-download.jar> --help</b>
</p> <h3>Установка агента</h3> <p> <b>java -jar
<agent-download.jar> --install[\=<новый каталог
агента>]</b><br/>Эта команда установит нового агента. Если вы не
определите новый каталог агента, по умолчанию будет установлен в "."</p>
<h3> Обновление агента</h3> <p> <b>java -jar
<agent-download.jar> --update[\=<существующий каталог
агента>]</b><br/> Будет произведено обновление существующего агента,
который уже установлен. Если вы не определили каталог с уже установленным агентом, им
будет считаться "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Ссылка
view_admin_downloads_agent_link_value = Загрузить агента {0} ({1})
view_admin_downloads_agent_loadError = Не возможно получить информацию о версии агента
view_admin_downloads_agent_md5 = MD5 сумма агента
view_admin_downloads_agent_version = Версия агента
view_admin_downloads_bundleDownload = Загрузить инструмент развертывания пакетов
-view_admin_downloads_bundle_link_label = Связь
+##view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is
for use by developers and packagers of {0} bundles. This standalone tool allows you to
test your bundles and their recipes from a console. </p>
view_admin_downloads_bundle_link_value = Загрузить инструмент развертывания пакета {0}
view_admin_downloads_bundle_loadError = Не удалось получить информацию об инструменте
развертывания пакета
view_admin_downloads_cliAlertScriptsDownload = Загрузить CLI сценарии уведомлений
+##view_admin_downloads_cliAlertScripts_help = CLI alert scripts are pre-canned scripts
that can be used for creating scripted alert notifications. The scripts will usually
require some tweaking before they can be used as a notification on a particular alert
definition.
view_admin_downloads_cliAlertScripts_loadError = Не удается получить доступные CLI
скрипты уведомлений для загрузки
view_admin_downloads_cliAlertScripts_none = Отсутствуют CLI сценарии уведомлений,
доступные для загрузки
view_admin_downloads_cliDownload = Загрузить клиент командной строки
view_admin_downloads_cli_buildNumber = Консольная сборка
-view_admin_downloads_cli_link_label = Ссылка
+##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
view_admin_downloads_cli_link_value = Загрузить CLI {0} ({1})
view_admin_downloads_cli_loadError = Не удалось получить версию CLI
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = Версия CLI
+##view_admin_downloads_connectorsDownload = Connectors Download
+##view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
+##view_admin_downloads_connectors_loadError = Cannot get connectors info
+##view_admin_downloads_connectors_none = No connectors are available for download
##view_alert_details_field_resource_ancestry = Resource Ancestry
##view_alert_details_field_watched_resource = Watched Resource
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 3a0ccbc..7182e42 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -66,6 +66,7 @@ common_label_day = \u5929
common_label_hour = \u5c0f\u65f6
common_label_item = \u9879
common_label_items = \u9879
+common_label_link = \u94fe\u63a5
common_label_month = \u6708
common_label_none = \u65e0
common_label_none2 = \u65e0
@@ -525,24 +526,21 @@ view_admin_content = Content
view_admin_downloads_agentDownload = \u4ee3\u7406\u4e0b\u8f7d
view_admin_downloads_agent_buildNumber = \u4ee3\u7406Build
##view_admin_downloads_agent_help = <p> \u8fd9\u662fRHQ
Agent\u66f4\u65b0\u7684\u4e8c\u8fdb\u5236jar\u6587\u4ef6. The purpose of this jar file is
to allow you to install a fresh agent on a machine where an agent does not yet exist and
to allow you to update an agent that is already installed on a machine. For more details,
run this agent download jar with the --help command line option:<br/> <b>java
-jar <agent-download.jar> --help</b> </p>
<h3>\u4ee3\u7406\u5b89\u88c5</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>\u4ee3\u7406\u66f4\u65b0</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = \u94fe\u63a5
view_admin_downloads_agent_link_value = \u4e0b\u8f7d\u4ee3\u7406 {0} ({1})
view_admin_downloads_agent_loadError =
\u65e0\u6cd5\u83b7\u5f97\u4ee3\u7406\u7248\u672c\u4fe1\u606f
view_admin_downloads_agent_md5 = \u4ee3\u7406MD5
view_admin_downloads_agent_version = \u4ee3\u7406\u7248\u672c
view_admin_downloads_bundleDownload = Bundle\u90e8\u7f72\u5668\u4e0b\u8f7d
##view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is
for use by developers and packagers of RHQ bundles. This standalone tool allows you to
test your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = \u94fe\u63a5
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+##view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+##view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
##view_admin_downloads_cliAlertScriptsDownload = CLI Alert Scripts Download
##view_admin_downloads_cliAlertScripts_help = CLI alert scripts are pre-canned scripts
that can be used for creating scripted alert notifications. The scripts will usually
require some tweaking before they can be used as a notification on a particular alert
definition.
##view_admin_downloads_cliAlertScripts_loadError = Cannot get info on available CLI alert
scripts for download
##view_admin_downloads_cliAlertScripts_none = No CLI alert scripts are available for
download
view_admin_downloads_cliDownload = \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\u4e0b\u8f7d
-view_admin_downloads_cli_buildNumber = CLI Build
+##view_admin_downloads_cli_buildNumber = CLI Build
##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the RHQ Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = \u94fe\u63a5
view_admin_downloads_cli_link_value = \u4e0b\u8f7dCLI {0} ({1})
view_admin_downloads_cli_loadError = \u65e0\u6cd5\u83b7\u5f97CLI\u7248\u672c\u4fe1\u606f
view_admin_downloads_cli_md5 = CLI MD5
commit adb9f7ea0c3cea791bccb5c27dbdd4badcad349b
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 11 11:21:50 2012 -0500
Add two generic integration tests for Standalone server:
1) Update resoure configuration with the configuration loaded from server (no
changes)
2) Execute all operations with zero arguments.
The tests are currently disabled (and pending further development) because of test
framework issues.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
new file mode 100644
index 0000000..0d9dfd5
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
@@ -0,0 +1,174 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7.itest.standalone;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.rhq.core.clientapi.agent.configuration.ConfigurationUpdateRequest;
+import org.rhq.core.clientapi.server.configuration.ConfigurationUpdateResponse;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.operation.OperationDefinition;
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.configuration.ConfigurationManager;
+import org.rhq.core.pc.inventory.InventoryManager;
+import org.rhq.core.pc.inventory.ResourceContainer;
+import org.rhq.modules.plugins.jbossas7.itest.AbstractJBossAS7PluginTest;
+import org.rhq.test.arquillian.RunDiscovery;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+@Test(groups = { "integration", "pc", "standalone" },
singleThreaded = true)
+public class ResourcesStandaloneServerTest extends AbstractJBossAS7PluginTest {
+ private Log log = LogFactory.getLog(this.getClass());
+
+ @Test(priority = 10, groups = "discovery")
+ @RunDiscovery(discoverServices = true, discoverServers = true)
+ public void discoverPlatform() throws Exception {
+ InventoryManager inventoryManager = this.pluginContainer.getInventoryManager();
+
+ Resource platform = inventoryManager.getPlatform();
+ assertNotNull(platform);
+ assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+
+ Thread.sleep(20 * 1000L);
+
+ ResourceContainer platformContainer =
inventoryManager.getResourceContainer(platform);
+ Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
+ StandaloneServerComponentTest.RESOURCE_KEY);
+ inventoryManager.activateResource(server, platformContainer, false);
+
+ Thread.sleep(100 * 1000L);
+ }
+
+
+ @Test(priority = 12, enabled = false)
+ public void loadUpdateTemplatedResourceConfiguration() throws Exception {
+ Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
+ Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
+ StandaloneServerComponentTest.RESOURCE_KEY);
+
+ ConfigurationManager configurationManager =
this.pluginContainer.getConfigurationManager();
+ configurationManager.initialize();
+ Thread.sleep(100 * 1000L);
+
+ Queue<Resource> unparsedResources = new LinkedList<Resource>();
+ for (Resource topLevelResource : server.getChildResources()) {
+ ResourceType resourceType = new
ResourceType(topLevelResource.getResourceType().getName(), PLUGIN_NAME,
+ ResourceCategory.SERVICE, null);
+ topLevelResource = getResourceByTypeAndKey(server, resourceType,
topLevelResource.getResourceKey());
+
+ if (topLevelResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
+ unparsedResources.add(topLevelResource);
+ } else {
+ log.info("Subsystem not COMMITTED " + topLevelResource + "
- " + topLevelResource.getInventoryStatus());
+ }
+ }
+
+ int errorCount = 0;
+ while (!unparsedResources.isEmpty()) {
+ Resource resourceUnderTest = unparsedResources.poll();
+
+ for (Resource childResource : resourceUnderTest.getChildResources()) {
+ if (childResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
+ unparsedResources.add(childResource);
+ } else {
+ log.info("Subsystem not COMMITTED " + childResource +
" - " + childResource.getInventoryStatus());
+ }
+ }
+
+ Configuration resourceUnderTestConfig =
configurationManager.loadResourceConfiguration(resourceUnderTest
+ .getId());
+
+ Assert.assertNotNull(resourceUnderTestConfig);
+
+ ConfigurationUpdateRequest updateRequest = new ConfigurationUpdateRequest(1,
resourceUnderTestConfig,
+ resourceUnderTest.getId());
+ ConfigurationUpdateResponse updateResponse = configurationManager
+ .executeUpdateResourceConfigurationImmediately(updateRequest);
+
+ Assert.assertNotNull(updateResponse);
+ if (updateResponse.getErrorMessage() != null) {
+ log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ log.info(updateResponse.getErrorMessage());
+ log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+
+ errorCount++;
+ }
+ }
+
+ log.info("?????????????????????????????");
+ log.info(errorCount);
+ log.info("?????????????????????????????");
+
+ Assert.assertEquals(errorCount, 0);
+ }
+
+ @Test(priority = 11, enabled = false)
+ public void executeNoArgOperations() throws Exception {
+ final List<String> ignoredSubsystems = new ArrayList<String>();
+ ignoredSubsystems.add("ModCluster Standalone Service");
+
+ Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
+ Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
+ StandaloneServerComponentTest.RESOURCE_KEY);
+
+ Queue<Resource> unparsedResources = new LinkedList<Resource>();
+ for (Resource topLevelResource : server.getChildResources()) {
+ if (topLevelResource.getInventoryStatus().equals(InventoryStatus.COMMITTED)
+ &&
!ignoredSubsystems.contains(topLevelResource.getResourceType().getName())) {
+ unparsedResources.add(topLevelResource);
+ }
+ }
+
+ while (!unparsedResources.isEmpty()) {
+ Resource resourceUnderTest = unparsedResources.poll();
+
+ for (Resource childResource : resourceUnderTest.getChildResources()) {
+ if (childResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
+ unparsedResources.add(childResource);
+ }
+ }
+
+ for (OperationDefinition operationUnderTest :
resourceUnderTest.getResourceType().getOperationDefinitions()) {
+ if (operationUnderTest.getParametersConfigurationDefinition() == null
+ ||
operationUnderTest.getParametersConfigurationDefinition().getPropertyDefinitions().isEmpty())
{
+ this.invokeOperationAndAssertSuccess(resourceUnderTest,
operationUnderTest.getName(), null);
+ }
+ }
+ }
+ }
+}
commit b0e2a5a830ce54f0c902be9dc844fbe701182fdc
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Jun 11 12:02:05 2012 -0400
[732571 - Admin Test page operation Snapshot Measurement Tables
(snapshotMeasurementTables)fails against Oracle]
Fixed this for Oracle. Also, change the JSP page to better display the
results for this and some other options.
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp
b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp
index 1fbc38d..1015894 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp
@@ -79,7 +79,8 @@
typeManager = LookupUtil.getResourceTypeManagerRemote();
serverPlugins = LookupUtil.getServerPlugins();
- String result = null;
+ String result = null;
+ String resultNoEscape = null;
String mode = pageContext.getRequest().getParameter("mode");
String failure = null;
try
@@ -207,14 +208,14 @@
else if ("snapshotMeasurementTables".equals(mode))
{
- result = "<table>";
+ resultNoEscape = "<table>";
Map<String, Long> tableCounts =
measurementTestBean.snapshotMeasurementTables();
for (Map.Entry<String, Long> nextCount : tableCounts.entrySet()) {
String tableAlias = nextCount.getKey();
Long tableCount = nextCount.getValue();
- result += "<tr><td>" + tableAlias +
"</td><td>" + tableCount + "</td></tr>";
+ resultNoEscape += "<tr><td>" + tableAlias +
"</td><td>" + tableCount + "</td></tr>";
}
- result += "</table>";
+ resultNoEscape += "</table>";
}
else if ("typeManagerRemote".equals(mode))
{
@@ -238,16 +239,26 @@
pageContext.setAttribute("executed", mode);
pageContext.setAttribute("result", result);
+ pageContext.setAttribute("resultNoEscape", resultNoEscape);
pageContext.setAttribute("failure", failure);
pageContext.setAttribute("testAgentReported",
Boolean.valueOf(coreTestBean.isTestAgentReported()));
%>
<c:if test="${executed != null}">
- <b>Executed <c:out value="${executed}"/>: </b> <c:out
value="${result}"/><br>
+ <b>Executed <c:out value="${executed}"/>
+
+ <c:if test="${result != null}">
+ : </b> <c:out value="${result}"/><br>
+ </c:if>
+
+ <c:if test="${resultNoEscape != null}">
+ : </b> ${resultNoEscape} <br>
+ </c:if>
+
<c:if test="${failure != null}">
<pre style="background-color: yellow;"><c:out
value="${failure}"/></pre>
- </c:if>
+ </c:if>
</c:if>
<h2>Administration</h2>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/MeasurementTestBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/MeasurementTestBean.java
index 6840e0b..b9c59fa 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/MeasurementTestBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/MeasurementTestBean.java
@@ -42,7 +42,6 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.core.clientapi.server.measurement.MeasurementServerService;
import org.rhq.core.db.DatabaseType;
import org.rhq.core.db.DatabaseTypeFactory;
-import org.rhq.core.db.OracleDatabaseType;
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
@@ -189,6 +188,8 @@ public class MeasurementTestBean implements MeasurementTestLocal {
}
public Map<String, Long> snapshotMeasurementTables() {
+ String qTrue = this.databaseType.getBooleanValue(true);
+
String snapshotQuery = "" //
+ "select" //
+ "(select count(*) from rhq_meas_data_num_r00) as r00," //
@@ -217,17 +218,17 @@ public class MeasurementTestBean implements MeasurementTestLocal {
+ "(select count(*) from rhq_calltime_data_value) as calldata," //
+ "(select count(ms.id) from rhq_measurement_sched ms" //
+ " join rhq_measurement_def md on ms.definition = md.id" //
- + " where ms.enabLed = true and md.data_type=0) as
enabledMetricSchedules," //
+ + " where ms.enabled = " + qTrue + " and md.data_type=0) as
enabledMetricSchedules," //
+ "(select count(ms.id) from rhq_measurement_sched ms" //
+ " join rhq_measurement_def md on ms.definition = md.id" //
- + " where ms.enabLed = true and md.data_type=1) as
enabledTraitSchedules," //
+ + " where ms.enabled = " + qTrue + " and md.data_type=1) as
enabledTraitSchedules," //
+ "(select count(ms.id) from rhq_measurement_sched ms" //
+ " join rhq_measurement_def md on ms.definition = md.id" //
- + " where ms.enabLed = true and md.data_type=3) as
enabledCalltimeSchedules";
+ + " where ms.enabled = " + qTrue + " and md.data_type=3) as
enabledCalltimeSchedules";
String querySuffix = ";";
- if (databaseType instanceof OracleDatabaseType) {
- querySuffix = "from dual;";
+ if (DatabaseTypeFactory.isOracle(this.databaseType)) {
+ querySuffix = " from dual";
}
Map<String, Long> results = new LinkedHashMap<String, Long>();
commit f6ac42c51930aecc42cf6eb006e9abbc8d09584d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 11 17:30:36 2012 +0200
Various Improvements in the REST-api (mostly around alerts)
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
index cd9beaf..a4bc84e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.ejb.EJB;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
@@ -54,6 +55,7 @@ import org.jboss.cache.TreeCacheMBean;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.rest.domain.Link;
import org.rhq.enterprise.server.rest.domain.ResourceWithType;
@@ -74,6 +76,8 @@ public class AbstractRestBean {
/** The cache to use */
@javax.annotation.Resource(name="cache")
TreeCacheMBean treeCache;
+ @EJB
+ ResourceManagerLocal resMgr;
/**
* Renders the passed object with the help of a freemarker template into a string.
Freemarket templates
@@ -335,6 +339,9 @@ public class AbstractRestBean {
}
else
rwt.setParentId(0);
+
+ rwt.setAncestry(res.getAncestry());
+
UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
uriBuilder.path("/operation/definitions");
uriBuilder.queryParam("resourceId",res.getId());
@@ -342,15 +349,6 @@ public class AbstractRestBean {
Link link = new Link("operationDefinitions",uri.toString());
rwt.addLink(link);
-/*
- for (Resource child : getResourcesFromCacheByParentId(res.getId())) {
- uriBuilder = uriInfo.getBaseUriBuilder();
- uriBuilder.path("/resource/{id}");
- uri = uriBuilder.build(child.getId());
- link = new Link("child",uri.toString());
- rwt.addLink(link);
- }
-*/
uriBuilder = uriInfo.getBaseUriBuilder();
uriBuilder.path("/resource/{id}");
uri = uriBuilder.build(res.getId());
@@ -362,6 +360,11 @@ public class AbstractRestBean {
link = new Link("schedules",uri.toString());
rwt.addLink(link);
uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/resource/{id}/availability");
+ uri = uriBuilder.build(res.getId());
+ link = new Link("availability",uri.toString());
+ rwt.addLink(link);
+ uriBuilder = uriInfo.getBaseUriBuilder();
uriBuilder.path("/resource/{id}/children");
uri = uriBuilder.build(res.getId());
link = new Link("children",uri.toString());
@@ -376,4 +379,17 @@ public class AbstractRestBean {
return rwt;
}
+
+ protected Resource fetchResource(int resourceId) {
+ Resource res;
+ res = getFromCache(resourceId, Resource.class);
+ if (res == null) {
+ res = resMgr.getResource(caller, resourceId);
+ if (res != null)
+ putToCache(resourceId, Resource.class, res);
+ else
+ throw new StuffNotFoundException("Resource with id " +
resourceId);
+ }
+ return res;
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
index 396cbd8..024b084 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
@@ -24,19 +24,16 @@ import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-
-import org.jboss.resteasy.links.AddLinks;
-import org.jboss.resteasy.links.LinkResource;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.UriInfo;
import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.criteria.AlertCriteria;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.criteria.Criteria;
+import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerLocal;
@@ -62,17 +59,16 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
AlertDefinitionManagerLocal alertDefinitionManager;
- @GET
- @AddLinks
- @LinkResource(value = AlertRest.class)
@Override
- public List<AlertRest> listAlerts(@QueryParam("page") int page,
@QueryParam("status") String status) {
+ public List<AlertRest> listAlerts(int page, String status, Request request,
UriInfo uriInfo) {
+
+
AlertCriteria criteria = new AlertCriteria();
criteria.setPaging(page,20); // TODO implement linking to next page
PageList<Alert> alerts =
alertManager.findAlertsByCriteria(caller,criteria);
List<AlertRest> ret = new ArrayList<AlertRest>(alerts.size());
for (Alert al : alerts) {
- AlertRest ar = alertToDomain(al);
+ AlertRest ar = alertToDomain(al, uriInfo);
ret.add(ar);
}
return ret;
@@ -94,35 +90,32 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
- public AlertRest getAlert(@PathParam("id") int id) {
+ public AlertRest getAlert(int id, UriInfo uriInfo) {
Alert al = findAlertWithId(id);
- AlertRest ar = alertToDomain(al);
+ AlertRest ar = alertToDomain(al, uriInfo);
return ar;
}
@Override
- public AlertRest ackAlert(@PathParam("id") int id) {
+ public AlertRest ackAlert(int id, UriInfo uriInfo) {
findAlertWithId(id); // Ensure the alert exists
alertManager.acknowledgeAlerts(caller,new int[]{id});
Alert al = findAlertWithId(id);
- AlertRest ar = alertToDomain(al);
+ AlertRest ar = alertToDomain(al, uriInfo);
return ar;
}
@Override
- public void purgeAlert(@PathParam("id") int id) {
+ public void purgeAlert(int id) {
alertManager.deleteAlerts(caller,new int[]{id});
}
@Override
- @GET
- @LinkResource(rel = "definition")
- @Path("/{id}/definition")
- public AlertDefinitionRest getDefinitionForAlert(@PathParam("id") int
alertId) {
+ public AlertDefinitionRest getDefinitionForAlert(int alertId) {
Alert al = findAlertWithId(alertId);
AlertDefinition def = al.getAlertDefinition();
AlertDefinitionRest ret = definitionToDomain(def);
@@ -130,8 +123,7 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
- public List<AlertDefinitionRest>
listAlertDefinitions(@QueryParam("page") int page,
- @QueryParam("status")
String status) {
+ public List<AlertDefinitionRest> listAlertDefinitions(int page, String status)
{
AlertDefinitionCriteria criteria = new AlertDefinitionCriteria();
criteria.setPaging(page,20); // TODO add link to next page
@@ -145,9 +137,7 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
- @GET
- @Path("/definition/{id}")
- public AlertDefinitionRest getAlertDefinition(@PathParam("id") int
definitionId) {
+ public AlertDefinitionRest getAlertDefinition(int definitionId) {
AlertDefinition def =
alertDefinitionManager.getAlertDefinition(caller,definitionId);
if (def==null)
@@ -156,10 +146,27 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
return adr;
}
+ @Override
+ public AlertDefinitionRest updateDefinition(int definitionId, AlertDefinitionRest
definitionRest, Request request) {
+ AlertDefinition def =
alertDefinitionManager.getAlertDefinition(caller,definitionId);
+ if (def==null)
+ throw new StuffNotFoundException("AlertDefinition with id " +
definitionId);
+
+ def.setEnabled(definitionRest.isEnabled());
+ def.setPriority(AlertPriority.valueOf(definitionRest.getPriority()));
+
+ def =
alertDefinitionManager.updateAlertDefinition(caller,def.getId(),def,false);
+
+ definitionRest = definitionToDomain(def);
+
+ return definitionRest;
+ }
+
private AlertDefinitionRest definitionToDomain(AlertDefinition def) {
AlertDefinitionRest adr = new AlertDefinitionRest(def.getId());
adr.setName(def.getName());
adr.setEnabled(def.getEnabled());
+ adr.setPriority(def.getPriority().getName());
return adr;
}
@@ -180,7 +187,7 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
return alerts.get(0);
}
- public AlertRest alertToDomain(Alert al) {
+ public AlertRest alertToDomain(Alert al, UriInfo uriInfo) {
AlertRest ret = new AlertRest();
ret.setId(al.getId());
AlertDefinition alertDefinition = al.getAlertDefinition();
@@ -195,7 +202,10 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
ret.setDescription(alertManager.prettyPrintAlertConditions(al,false));
- ret.setResource(new ResourceWithType(alertDefinition.getResource().getId()));
+ Resource r = fetchResource(alertDefinition.getResource().getId());
+ ResourceWithType rwt = fillRWT(r,uriInfo);
+
+ ret.setResource(rwt);
return ret;
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
index 2299ab6..b255db3 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
@@ -28,6 +28,9 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.UriInfo;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
@@ -35,11 +38,9 @@ import com.wordnik.swagger.annotations.ApiParam;
import org.jboss.resteasy.links.AddLinks;
import org.jboss.resteasy.links.LinkResource;
-import org.jboss.resteasy.links.LinkResources;
import org.rhq.enterprise.server.rest.domain.AlertRest;
import org.rhq.enterprise.server.rest.domain.AlertDefinitionRest;
-import org.rhq.enterprise.server.rest.domain.ResourceWithType;
/**
* Deal with Alerts
@@ -58,7 +59,8 @@ public interface AlertHandlerLocal {
@ApiOperation("List all alerts")
List<AlertRest> listAlerts(
@ApiParam(value = "Page number", defaultValue = "0")
@QueryParam("page") int page,
- @ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status);
+ @ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status,
+ @Context Request request, @Context UriInfo uriInfo);
@GET
@Path("count")
@@ -68,26 +70,22 @@ public interface AlertHandlerLocal {
@GET
@Path("/{id}")
@AddLinks
- @LinkResource(value = AlertRest.class)
@ApiOperation("Get one alert with the passed id")
- AlertRest getAlert(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id);
+ AlertRest getAlert(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id, @Context UriInfo uriInfo);
@PUT
@Path("/{id}")
- @LinkResource
@ApiOperation(value = "Mark the alert as acknowledged (by the caller)")
AlertRest ackAlert(
- @ApiParam(value = "Id of the alert to acknowledge")
@PathParam("id") int id);
+ @ApiParam(value = "Id of the alert to acknowledge")
@PathParam("id") int id, @Context UriInfo uriInfo);
@DELETE
@Path("/{id}")
- @LinkResource(value = AlertRest.class)
@ApiOperation(value = "Remove the alert from the lit of alerts")
void purgeAlert(
@ApiParam(value = "Id of the alert to remove")
@PathParam("id") int id);
@GET
- @LinkResource(rel="definition",value = AlertDefinitionRest.class)
@Path("/{id}/definition")
@ApiOperation("Get the alert definition (basics) for the alert")
AlertDefinitionRest getDefinitionForAlert(@ApiParam("Id of the alert to show the
definition") @PathParam("id") int alertId);
@@ -104,4 +102,10 @@ public interface AlertHandlerLocal {
@Path("/definition/{id}")
@ApiOperation("Get one AlertDefinition by id")
AlertDefinitionRest getAlertDefinition(@ApiParam("Id of the alert definition to
retrieve") @PathParam("id") int definitionId);
+
+ @PUT
+ @Path("/definition/{id}")
+ @ApiOperation(value = "Update the alert definition (priority, enablement)",
notes = "Priority must be HIGH,LOW,MEDIUM")
+ AlertDefinitionRest updateDefinition(@ApiParam("Id of the alert definition to
update") @PathParam("id") int definitionId,
+ AlertDefinitionRest definition, @Context Request
request);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
index a485664..5987758 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
@@ -688,7 +688,7 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
}
else if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
pw.println("<table>");
-
pw.print("<th><td>time</td><td>value</td></th>");
+
pw.print("<tr><th>time</th><th>value</th></tr>\n");
while (rs.next()) {
pw.print(" <tr>");
pw.print("<td>");
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index 4825b02..1f9594b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -65,7 +65,6 @@ import org.rhq.enterprise.server.core.AgentManagerLocal;
import org.rhq.enterprise.server.measurement.AvailabilityManagerLocal;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal;
import org.rhq.enterprise.server.resource.ResourceAlreadyExistsException;
-import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.rest.domain.*;
@@ -78,8 +77,6 @@ import org.rhq.enterprise.server.rest.domain.*;
public class ResourceHandlerBean extends AbstractRestBean implements ResourceHandlerLocal
{
@EJB
- ResourceManagerLocal resMgr;
- @EJB
AvailabilityManagerLocal availMgr;
@EJB
MeasurementScheduleManagerLocal scheduleManager;
@@ -188,7 +185,7 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
}
@Override
- public AvailabilityRest getAvailability(int resourceId) {
+ public Response getAvailability(int resourceId, HttpHeaders headers) {
Availability avail = availMgr.getCurrentAvailabilityForResource(caller,
resourceId);
AvailabilityRest availabilityRest;
@@ -197,7 +194,16 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
.getResource().getId());
else
availabilityRest = new AvailabilityRest(avail.getStartTime(), resourceId);
- return availabilityRest;
+
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder =
Response.ok(renderTemplate("availability.ftl",availabilityRest), mediaType);
+ } else {
+ builder = Response.ok(availabilityRest);
+ }
+ return builder.build();
}
@Override
@@ -332,21 +338,6 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
return links;
}
- private Resource fetchResource(int resourceId) {
- Resource res;
- res = getFromCache(resourceId, Resource.class);
- if (res == null) {
- res = resMgr.getResource(caller, resourceId);
- if (res != null)
- putToCache(resourceId, Resource.class, res);
- else
- throw new StuffNotFoundException("Resource with id " +
resourceId);
- }
- return res;
- }
-
-
-
@Override
public Response createPlatform(@PathParam("name") String name, StringValue
typeValue, @Context UriInfo uriInfo) {
String typeName = typeValue.getValue();
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
index 1b6ef0d..7ae0c0b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
@@ -94,9 +94,9 @@ public interface ResourceHandlerLocal {
@GET
@Path("/{id}/availability")
@ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
- @ApiOperation("Return the current availability for the passed resource")
- AvailabilityRest getAvailability(
- @ApiParam("Id of the resource to query") @PathParam("id")
int resourceId);
+ @ApiOperation(value = "Return the current availability for the passed
resource", responseClass = "AvailabilityRest")
+ Response getAvailability(
+ @ApiParam("Id of the resource to query") @PathParam("id")
int resourceId, @Context HttpHeaders headers);
@PUT
@Path("/{id}/availability")
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertDefinitionRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertDefinitionRest.java
index f8d1f88..0719d4a 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertDefinitionRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertDefinitionRest.java
@@ -18,28 +18,20 @@
*/
package org.rhq.enterprise.server.rest.domain;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlRootElement;
-import org.jboss.resteasy.links.RESTServiceDiscovery;
-import org.jboss.resteasy.spi.touri.URITemplate;
/**
* Alert Definition
* @author Heiko W. Rupp
*/
-@URITemplate("/alert/definition/{id}")
@XmlRootElement
public class AlertDefinitionRest {
int id;
String name;
boolean enabled;
-
- private RESTServiceDiscovery rest;
+ String priority;
public AlertDefinitionRest() {
@@ -49,13 +41,14 @@ public class AlertDefinitionRest {
this.id = id;
}
- @XmlID
- @XmlAttribute
- public String getId() {
- return ""+id;
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
}
- @XmlElement
public String getName() {
return name;
}
@@ -64,7 +57,6 @@ public class AlertDefinitionRest {
this.name = name;
}
- @XmlElement
public boolean isEnabled() {
return enabled;
}
@@ -73,12 +65,11 @@ public class AlertDefinitionRest {
this.enabled = enabled;
}
- @XmlElementRef
- public RESTServiceDiscovery getRest() {
- return rest;
+ public String getPriority() {
+ return priority;
}
- public void setRest(RESTServiceDiscovery rest) {
- this.rest = rest;
+ public void setPriority(String priority) {
+ this.priority = priority;
}
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
index 90fe925..71687c0 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/AlertRest.java
@@ -18,46 +18,32 @@
*/
package org.rhq.enterprise.server.rest.domain;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlRootElement;
-import org.jboss.resteasy.links.AddLinks;
-import org.jboss.resteasy.links.LinkResource;
import org.jboss.resteasy.links.RESTServiceDiscovery;
-import org.jboss.resteasy.spi.touri.URITemplate;
/**
* A single alert
* @author Heiko W. Rupp
*/
-@URITemplate("/alert/{id}")
@XmlRootElement
-(a)XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class AlertRest {
private int id;
private String name;
private AlertDefinitionRest alertDefinition;
+ private ResourceWithType resource;
private boolean definitionEnabled;
String ackBy;
long ackTime;
long alertTime;
String description;
-
- private RESTServiceDiscovery rest;
-
public void setResource(ResourceWithType resource) {
this.resource = resource;
}
- private ResourceWithType resource
- ;
public void setId(int id) {
this.id = id;
@@ -71,20 +57,14 @@ public class AlertRest {
this.alertDefinition = alertDefinitionId;
}
- @XmlID
- @XmlAttribute
- public String getId() {
- return ""+id;
+ public int getId() {
+ return id;
}
- @XmlElement
public String getName() {
return name;
}
- @AddLinks
- @LinkResource(rel="definition",value = AlertDefinitionRest.class)
- @XmlElementRef
public AlertDefinitionRest getAlertDefinition() {
return alertDefinition;
}
@@ -130,19 +110,7 @@ public class AlertRest {
this.description = description;
}
- @AddLinks
- @LinkResource(rel="resource",value = ResourceWithType.class)
- @XmlElementRef
- ResourceWithType getResource() {
+ public ResourceWithType getResource() {
return resource;
}
-
- @XmlElementRef
- public RESTServiceDiscovery getRest() {
- return rest;
- }
-
- public void setRest(RESTServiceDiscovery rest) {
- this.rest = rest;
- }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
index 735efa1..a0c3527 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/ResourceWithType.java
@@ -53,7 +53,7 @@ public class ResourceWithType {
String pluginName;
Integer parentId;
List<Link> links = new ArrayList<Link>();
-
+ private String ancestry;
public ResourceWithType() {
}
@@ -132,4 +132,12 @@ public class ResourceWithType {
public void addLink(Link link) {
links.add(link);
}
+
+ public void setAncestry(String ancestry) {
+ this.ancestry = ancestry;
+ }
+
+ public String getAncestry() {
+ return ancestry;
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
new file mode 100644
index 0000000..d02558a
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/availability.ftl
@@ -0,0 +1,26 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.AvailabilityRest" -->
+
+State: ${var.type}<br/>
+Since: ${var.since?number_to_time}
+<a href="/rest/1/resource/${var.resourceId?c}.html">Back to
Resource</a>
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
index f1ab4d2..2adf78a 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/resourceWithType.ftl
@@ -20,7 +20,7 @@
*/
-->
<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.ResourceWithType" -->
-<html>
+
<table>
<thead>
<tr>
@@ -50,4 +50,4 @@
</table>
<a
href="/rest/1/resource/${var.resourceId}/children.html">Children</a><br/>
<a
href="/rest/1/resource/${var.resourceId}/schedules.html">Schedules</a><br/>
-</html>
\ No newline at end of file
+ <a
href="/rest/1/resource/${var.resourceId}/availability.html">Availability</a><br/>
commit b212dc184deaa36dd70d04a08b5f02ec2c79424b
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Mon Jun 11 15:57:11 2012 +0200
[BZ 818173 - Config editor : description of map (of simples) is not shown] description
of map added on the top
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index 06adbdc..8a12549 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -778,6 +778,9 @@ public class ConfigurationEditor extends LocatableVLayout {
propertyDefinitionMap = propertyDefinitionMapClone;
}
LocatableVLayout layout = new LocatableVLayout(parentLocatorId +
"_Layout");
+
+ HTMLFlow description = new HTMLFlow(propertyDefinitionMap.getDescription());
+ layout.addMember(description);
final PropertyDefinitionMap propertyDefinitionMapFinal = propertyDefinitionMap;
LocatableDynamicForm valuesCanvas = buildPropertiesForm(layout.getLocatorId(),
commit e1f5fb046fb207ffefbb8c9bb7d15d2634f0dbba
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 11 14:48:57 2012 +0200
BZ 829394 Use the name from resource key, as this is available in UI and CLI
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 60a5151..dac0218 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -405,11 +405,8 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
return report;
}
- String fileName = details.getFileName();
-
- if (fileName.startsWith("C:\\fakepath\\")) { // TODO this is a hack as
the server adds the fake path somehow
- fileName = fileName.substring("C:\\fakepath\\".length());
- }
+ // Key is available from UI and CLI
+ String fileName = details.getKey().getName();
String runtimeName =
report.getPackageDetails().getDeploymentTimeConfiguration().getSimpleValue("runtimeName");
if (runtimeName == null || runtimeName.isEmpty()) {
commit 4cb4394695a3bc8d0d2b5f5a8a11296d60a2859e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 11 07:33:13 2012 +0200
Better describe response.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
index b74e807..472fd1c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
@@ -188,7 +188,7 @@ public interface MetricHandlerLocal {
@POST
@Path("data/raw")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- @ApiOperation("Submit a series of (numerical) metric values to the
server")
+ @ApiOperation(value="Submit a series of (numerical) metric values to the
server",responseClass = "No response")
Response postMetricValues(Collection<NumericDataPoint> points, @Context
HttpHeaders headers);
@GET
commit a3c4a46771df659f8e18e27135a0391aa9b5d772
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 11 06:20:33 2012 +0200
Add created media types to the docs.
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
index 41e4f1e..f9a5f83 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
@@ -74,6 +74,9 @@
Defining class:
<xsl:value-of select="@name"/>
</simpara>
+ <xsl:call-template name="print-created-media-types">
+ <xsl:with-param name="produces" select="produces"/>
+ </xsl:call-template>
<para>
<xsl:if test="method">
<itemizedlist>
@@ -204,5 +207,23 @@
<xsl:value-of select="@path"/>
</xsl:template>
+ <!-- emit media types produced -->
+ <xsl:template name="print-created-media-types">
+ <xsl:param name="produces"/>
+
+ <xsl:if test="$produces">
+ <simpara>
+ Produces:
+ <xsl:for-each select="$produces/type">
+ <xsl:value-of select="."/>
+ <xsl:if test="not(position() = last())">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </simpara>
+ </xsl:if>
+
+ </xsl:template>
+
</xsl:stylesheet>
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
index bd8ac06..dff70ba 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
@@ -69,6 +69,9 @@
<p/>
Defining class: <xsl:value-of select="@name"/><br/>
<br/>
+ <xsl:call-template name="print-created-media-types">
+ <xsl:with-param name="produces" select="produces"/>
+ </xsl:call-template>
<xsl:if test="method">
Methods:<br/>
<xsl:apply-templates>
@@ -129,4 +132,21 @@
</tr>
</xsl:template>
+ <!-- emit media types produced -->
+ <xsl:template name="print-created-media-types">
+ <xsl:param name="produces"/>
+
+ <xsl:if test="$produces">
+ <b>Produces:</b>
+ <ul>
+ <xsl:for-each select="$produces/type">
+ <li>
+ <xsl:value-of select="."/>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if>
+
+ </xsl:template>
+
</xsl:stylesheet>
\ No newline at end of file
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
index 73b6f61..8144273 100644
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -25,6 +25,7 @@ import javax.lang.model.util.ElementFilter;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -178,6 +179,17 @@ public class ClassLevelProcessor extends AbstractProcessor {
String basePathAttr = api.basePath();
setOptionalAttribute(classElement, "basePath",basePathAttr);
}
+ Produces produces = classElementIn.getAnnotation(Produces.class);
+ if (produces!=null) {
+ String[] types = produces.value();
+ Element pElement = doc.createElement("produces");
+ classElement.appendChild(pElement);
+ for (String type : types) {
+ Element tElement = doc.createElement("type");
+ pElement.appendChild(tElement);
+ tElement.setTextContent(type);
+ }
+ }
xmlRoot.appendChild(classElement);
commit 0a06569e58ed0f89e4241fcf4f33c782e7b0c5a1
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Sun Jun 10 13:15:36 2012 -0400
a few handy shell scripts
diff --git a/etc/dev-utils/firefox3 b/etc/dev-utils/firefox3
new file mode 100755
index 0000000..84e1974
--- /dev/null
+++ b/etc/dev-utils/firefox3
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# start a FF3 instance from a manual installation, while the standard rpm version of FF
(e.g. FF 13.0) is
+# simultaneously running
+nohup /opt/firefox3/firefox -P firefox3 -no-remote >/dev/null 2>&1 &
+
diff --git a/etc/dev-utils/gensums b/etc/dev-utils/gensums
new file mode 100755
index 0000000..2b12552
--- /dev/null
+++ b/etc/dev-utils/gensums
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Generates md5 and sha1 checksum files for all Maven artifacts in the specified dir, or
in the current dir if no dir is
+# specified.
+
+if [ -n "$1" ]; then
+ root_dir="$1"
+else
+ root_dir=.
+fi
+echo root_dir=\"$root_dir\"
+
+find $root_dir -regextype posix-extended -regex '.*\.(pom|xml|jar|war|ear|zip)' |
while read FILE; do
+ echo "Processing $FILE..."
+ checksum=`md5sum $FILE`
+ echo -n ${checksum%% *} > $FILE.md5
+ checksum=`sha1sum $FILE`
+ echo -n ${checksum%% *} > $FILE.sha1
+done
+
diff --git a/etc/dev-utils/git-create-branch b/etc/dev-utils/git-create-branch
new file mode 100755
index 0000000..038d224
--- /dev/null
+++ b/etc/dev-utils/git-create-branch
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Usage: git-create-branch <branch_name>
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $0 <branch_name>" >&2
+ exit 127
+fi
+
+branch_name="$1"
+git push origin origin:refs/heads/${branch_name}
+git fetch origin
+git checkout --track -b ${branch_name} origin/${branch_name}
+git pull
+
diff --git a/etc/dev-utils/jarfind b/etc/dev-utils/jarfind
new file mode 100755
index 0000000..e4d7e11
--- /dev/null
+++ b/etc/dev-utils/jarfind
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# A tool to find out what jars contain a certain class. Looks for the specified regex in
the names of the files in all
+# jar files recursively under the current directory, and prints the name of any jar files
where a match was found.
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $(basename $0) CLASS_NAME"
+ echo " e.g.: $(basename $0) com.smartgwt.client.widgets.HTMLFlow"
+ exit 1
+fi
+
+LOOK_FOR="$1"
+for i in `find . -name "*jar"`; do
+ # echo "Looking in $i ..."
+ jar tvf $i | grep "$LOOK_FOR" > /dev/null
+ if [ $? == 0 ]; then
+ echo "==> Found \"$LOOK_FOR\" in $i"
+ fi
+done
+
diff --git a/etc/dev-utils/killall-as7 b/etc/dev-utils/killall-as7
new file mode 100755
index 0000000..d34b1e3
--- /dev/null
+++ b/etc/dev-utils/killall-as7
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Kill all AS7 standalone server processes.
+pkill -f ".*/java .* org.jboss.as.standalone.* "
+
+# Kill all AS7 host controller processes.
+pkill -f ".*/java .* org.jboss.as.process-controller.* "
+
commit 4b3010f158cd5bdc06b2e627ccf32a0f3dd69c2c
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Sat Jun 9 11:23:18 2012 -0400
add an echo command
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
index 1639239..ce7535f 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -29,6 +29,7 @@ import org.pircbotx.hooks.events.PrivateMessageEvent;
public class RhqIrcBot extends ListenerAdapter {
private static final Pattern BUG_PATTERN = Pattern.compile("(?i)(bz|bug)[
]*(\\d{6,7})");
+ private static final Pattern ECHO_PATTERN = Pattern.compile("(?i)echo[
]+(.+)");
private static final Set<String> JON_DEVS = new HashSet<String>();
static {
@@ -119,7 +120,14 @@ public class RhqIrcBot extends ListenerAdapter {
@Override
public void onPrivateMessage(PrivateMessageEvent privateMessageEvent) throws
Exception {
PircBotX bot = privateMessageEvent.getBot();
- bot.sendMessage(privateMessageEvent.getUser(), "Hi, I am " +
bot.getFinger() + ".");
+ String message = privateMessageEvent.getMessage();
+ Matcher echoMatcher = ECHO_PATTERN.matcher(message);
+ if (echoMatcher.matches()) {
+ String echoMessage = echoMatcher.group(1);
+ bot.sendMessage(this.channel, echoMessage);
+ } else {
+ bot.sendMessage(privateMessageEvent.getUser(), "Hi, I am " +
bot.getFinger() + ".");
+ }
// TODO: Implement a HELP command.
}
commit 3579469dac73c93f670b52b4215dec91073e221d
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 8 16:12:36 2012 -0400
trivial - fix some inline comments
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
index 241a7d2..363c1c0 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
@@ -664,8 +664,8 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
platformAvailType = (null == platformAvailType) ? AvailabilityType.UNKNOWN :
platformAvailType;
childAvailType = (null == childAvailType) ? AvailabilityType.UNKNOWN :
childAvailType;
- // get the platform resource as well as all child resources not already at
childAvailType (since these are the
- // ones we need to change)
+ // get the platform resource if not already at platformAvailType (since this is
the one
+ // we need to change)
Query query = entityManager
.createNamedQuery(Availability.FIND_PLATFORM_COMPOSITE_BY_AGENT_AND_NONMATCHING_TYPE);
query.setParameter("agentId", agentId);
@@ -673,7 +673,7 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
// should be 0 or 1 entry
List<ResourceIdWithAvailabilityComposite> platformResourcesWithStatus =
query.getResultList();
- // get the platform resource as well as all child resources not disabled and not
already at childAvailType
+ // get the child resources not disabled and not already at childAvailType
// (since these are the ones we need to change)
query =
entityManager.createNamedQuery(Availability.FIND_CHILD_COMPOSITE_BY_AGENT_AND_NONMATCHING_TYPE);
query.setParameter("agentId", agentId);
commit 46b3c031c75e2dd44f180abaa0eb2c573326cf63
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 8 16:08:52 2012 -0400
[785237] trivial - remove some obsolete comments
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
index 3f2f46f..6b4b356 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
@@ -77,9 +77,6 @@ import org.rhq.enterprise.server.util.LookupUtil;
* !!! configured drift server plugin. To enhance this to do that then you may need to
model this
* !!! mode like BundleManagerBeanTest
*/
-// TODO: Figure out how to get this test class to run without causing issues in the
test-jar generation. I don't
-// understand exactly what the deal is but removing this dependency on an itests group
causes the server test jar to
-// not correctly generate the drift package contents.
public class DriftManagerBeanTest extends AbstractEJB3Test {
private JPADriftServerLocal jpaDriftServer;
commit c96fb05c5b227f3e3c1b4980ecbd0c4dd7e1f89a
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Fri Jun 8 17:49:26 2012 +0200
[BZ 805503 - Recently triggered alerts report does not show resource in details view]
More space.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index 71bf7fb..06adbdc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -1183,7 +1183,7 @@ public class ConfigurationEditor extends LocatableVLayout {
final Window popup = new Window();
popup.setTitle(MSG.view_configEdit_addItem());
popup.setWidth(300);
- popup.setHeight(140);
+ popup.setHeight(145);
popup.setIsModal(true);
popup.setShowModalMask(true);
popup.setShowCloseButton(false);
commit 79c1e59e81cb691b6026bbdec27f0e2c9e1a0613
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Fri Jun 8 15:23:11 2012 +0200
i18n
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 182f2a7..4050dc7 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -25,10 +25,12 @@ common_button_create_child = 子を作成
common_button_delete = 削除
common_button_delete_all = すべてを削除
common_button_disable = 無効
+common_button_dump_sysInfo_to_log = ダンプシステム情報
common_button_edit = 編集
common_button_enable = 有効
common_button_execute = 実行
common_button_finish = 完了
+common_button_fixedWidth = 固定幅
common_button_import = インポート
common_button_new = 新規
common_button_next = 次へ
@@ -65,6 +67,8 @@ common_label_day = 日
common_label_error = エラー
common_label_filters = フィルター
common_label_hour = 時間
+common_label_item = 項目
+common_label_items = 項目
common_label_month = 月
common_label_none = なし
common_label_none2 = なし
@@ -83,11 +87,14 @@ common_msg_changeAutoDetected = 変更が自動検出されました
common_msg_deleteConfirm = 選択された {0} を削除してもよろしいですか
common_msg_emphasizedNotePrefix = 注意:
common_msg_loading = ロード中...
+common_msg_noItemsToShow = 表示する項目はありません
+common_msg_notYetImplemented = 実装されていません
common_msg_see_more = 詳細...
common_msg_step_x_of_y = ステップ {1} 中 {0} 番め
common_severity_debug = デバッグ
common_severity_error = エラー
common_severity_fatal = 致命的
+common_severity_info = 情報
common_severity_warn = 警告
common_status_canceled = キャンセル
common_status_deferred = 延期
@@ -105,6 +112,7 @@ common_title_add_portlet = ポートレット追加
common_title_address = アドレス
common_title_alerts = アラート
common_title_alerts_range = アラートの範囲
+common_title_ancestry = 先祖
common_title_availability = アベイラビリティ
common_title_available_resources = 利用可能リソース
common_title_average_metrics = 毎分の平均メトリックス
@@ -118,6 +126,7 @@ common_title_compare_metrics = メトリックスの比較
common_title_compatibleGroups = 互換グループ
common_title_compatibleGroups_total = 互換グループの合計
common_title_component_errors = コンポーネントエラー
+common_title_config_update_status = 更新状態
common_title_configuration = 構成
common_title_count = 数
common_title_createTime = 作成時刻
@@ -140,6 +149,7 @@ common_title_end = 終了
common_title_generalProp = 一般プロパティ
common_title_group = グループ
common_title_group_def_total = グループ定義の合計
+common_title_group_member_health = グループメンバーの状態
common_title_groups = グループ
common_title_help = ヘルプ
common_title_host = ホスト
@@ -165,6 +175,7 @@ common_title_new_dashboard = 新規ダッシュボード
common_title_numeric_metrics = 数値メトリックス
common_title_numeric_type = 数値型
common_title_operation = オペレーション
+common_title_operation_status = オペレーションの状態
common_title_operations = オペレーション
common_title_operations_range = オペレーションの範囲
##common_title_over = Over
@@ -287,6 +298,7 @@ dataSource_configurationHistory_updateType = 更新タイプ
dataSource_configurationHistory_updateType_group = グループ
dataSource_configurationHistory_updateType_individual = 個人
dataSource_definitions_loadFailed = メトリック定義のロードに失敗しました
+dataSource_measurementOob_error_fetchFailure = 範囲外情報の測定のロードに失敗しました
dataSource_measurementOob_field_factor = 範囲外係数 (%)
dataSource_measurementOob_field_formattedBaseband = バンド
dataSource_measurementOob_field_formattedOutlier = アウトライナー
@@ -297,6 +309,7 @@ dataSource_operationHistory_error_fetchFailure = オペレーション履歴の
dataSource_operationHistory_field_createdTime = 作成時刻
dataSource_operationHistory_field_operationName = オペレーション名
dataSource_operationHistory_field_startedTime = 開始時刻
+dataSource_operationHistory_field_subject = 要求者
dataSource_operationSchedule_field_description = ノート
dataSource_operationSchedule_field_id = スケジュールID
dataSource_operationSchedule_field_nextFireTime = 次回の実行
@@ -326,8 +339,10 @@ dataSource_resources_field_discoveryTime = 発見時刻
dataSource_resources_field_importTime = インポート時刻
dataSource_resources_field_key = キー
dataSource_resources_field_lastModifiedTime = 最終更新時刻
+dataSource_resources_field_lastModifier = 最終更新者
dataSource_resources_field_location = 場所
dataSource_rpc_error_transformRequestFailure = {0} リクエストの処理中にデータソースで失敗しました
+dataSource_rpc_error_unsupportedArrayFilterType = タイプ {0} の配列フィルタの引き渡しはサポートしていません
dataSource_rpc_error_unsupportedEnumType = RPCDataSource.getEnumArray(Class)へ enum {0}
のための適切なコードブロックを追加してください
dataSource_rpc_no = いいえ
dataSource_rpc_yes = はい
@@ -385,13 +400,18 @@ datasource_templateSchedules_enabled_failed = ID [{2}] を持つリソースタ
datasource_templateSchedules_updated = 選択されたメトリック [{0}] の収集間隔を更新しました
datasource_templateSchedules_updated_detail = ID [{2}] を持つリソースタイプのためにデフォルトでメトリック [{0}]
[{1}] の収集間隔が [{3}] 秒に設定されました
datasource_templateSchedules_updated_failed = ID [{2}] を持つリソースタイプのためにデフォルトでメトリック [{0}]
[{1}] の収集間隔が [{3}] 秒に設定するのに失敗しました
+favorites = お気に入り
+favorites_groups = お気に入りグループ
favorites_recentlyViewed = 最近閲覧した
+favorites_resources = お気に入りリソース
filter_from_date = 開始
filter_to_date = 終了
##group_tree_groupOfResourceType = Group of [{0}]
group_tree_partialClusterTooltip = {1} の中の {0} グループメンバーが ''{2}''
リソースを持っています
+util_ancestry_parentAncestry = 親の先祖 :
util_disambiguationReportDecorator_pluginSuffix = ({0} プラグイン)
util_errorHandler_nullException = 例外は null でした
+util_monitoringRequestCallback_error_checkServerStatusFailure = ログインの状態を決定できません -
サーバーの状態を調べてください
util_rpcManager_activeRequests = {0} アクティブリクエスト
util_userPerm_loadFailGlobal = グローバルな権限をロードするのに失敗しました - 何も許可されません
util_userPerm_loadFailGroup = ID [{0}] のリソースグループに対する権限をロードするのに失敗しました - 何も許可されません
@@ -401,6 +421,7 @@ util_userSession_logoutFail = ログアウトに失敗しました
util_widgetsField_unlimited = 無制限
view_aboutBox_allRightsReserved = All Rights Reserved.
view_aboutBox_buildNumber = ビルド番号:
+view_aboutBox_failedToLoad = プロダクト情報のロードに失敗しました
view_aboutBox_homepage = ホームページ
view_aboutBox_jbossByRedHat = JBoss by Red Hat
view_aboutBox_title = {0}について
@@ -514,21 +535,29 @@ view_admin_downloads_agent_buildNumber = エージェントビルド
view_admin_downloads_agent_help = <p> これは {0}
Agentの更新バイナリJARファイルです。このJARファイルの目的はユーザーがエージェントがまだ存在しないマシン上に新しいエージェントをインストールできるようにすることと、すでにインストール済みのエージェントを更新できるようにするためです。詳細は、このエージェントダウンロードJARで次のように--helpコマンドラインオプションをつけて実行してください。<br/>
<b>java -jar <agent-download.jar> --help</b> </p>
<h3>エージェントのインストール</h3> <p> <b>java -jar
<agent-download.jar>
--install[=<新しいエージェントディレクトリ>]</b><br/>
このコマンドは新しいエージェントをインストールします。もし新しいディレクトリを指定しなければ、デフォルトは"."となります。</p>
<h3>エージェントの更新</h3> <p> <b>java -jar
<agent-download.jar>
--update[=<古いエージェントディレクトリ>]</b><br/>
これはすでにインストールされた既存のエージェントを更新します。もし古い、既存のエージェントがインストールされたディレクトリを指定しなかったなら、"rhq-agent"が仮定されます。</p>
view_admin_downloads_agent_link_label = リンク
view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
+view_admin_downloads_agent_loadError = エージェントバージョン情報が取得できません
view_admin_downloads_agent_md5 = エージェント MD5
view_admin_downloads_agent_version = エージェントバージョン
view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
+view_admin_downloads_bundle_help = <p>
これはバンドルデプロイヤツールで、{0}バンドルの開発者とパッケージ開発者によって使われます。このスタンドアロンツールを使うとバンドルやコンソールからのレシピをテストできるようにします。</p>
view_admin_downloads_bundle_link_label = リンク
view_admin_downloads_bundle_link_value = バンドルデプロイヤー {0} をダウンロード
+view_admin_downloads_bundle_loadError = バンドルデプロイヤー情報が取得できません
view_admin_downloads_cliAlertScriptsDownload = CLIアラートスクリプトのダウンロード
+view_admin_downloads_cliAlertScripts_help =
CLIアラートスクリプトはスクリプト化されたアラート通知を作成するために使うことができる作成済みのスクリプトです。通常、そのスクリプトは特定のアラート定義についての通知として使うためには前もって微調整をする必要があります。
view_admin_downloads_cliAlertScripts_loadError =
ダウンロードするために利用可能なCLIアラートスクリプトにアクセスすることができません
view_admin_downloads_cliAlertScripts_none = ダウンロードするために利用可能なCLIスクリプトが一つも存在しません
view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
view_admin_downloads_cli_buildNumber = CLIビルド
+view_admin_downloads_cli_help = <p>
これはコマンドラインツールで、CLIとして知られているものです。コンソールから実行するスタンドアロンツールで、{0}サーバーに対してコマンドラインインタフェースを提供します。自動化されたタスクを実行するためにCLIやrunスクリプトを介してコマンドを呼び出すことが可能です。CLIのインストール方法と使い方についての詳細情報はドキュメントをご覧ください。</p>
view_admin_downloads_cli_link_label = リンク
view_admin_downloads_cli_link_value = CLI {0} ({1}) をダウンロード
+view_admin_downloads_cli_loadError = CLIバージョン情報が取得できません
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = CLIバージョン
view_admin_downloads_connectorsDownload = コネクタのダウンロード
+view_admin_downloads_connectors_help =
コネクターは製品が{0}によって管理可能であるために必要となるソフトウェアです。RHQエージェントが通信できるように、管理製品にコネクターをインストールします。詳細はドキュメントをご覧ください。
+view_admin_downloads_connectors_loadError = コネクター情報を取得できません
view_admin_downloads_connectors_none = ダウンロードのためのコネクターが見つかりません
view_admin_landing =
このセクションにおいて、{0}グローバル設定が管理されます。これはセキュリティ構成、プラグイン設定、RHQサーバーとエージェントの管理を含みます。
view_admin_measTemplates_updateExisting_title = 既存スケジュールの更新
@@ -550,6 +579,7 @@ view_admin_plugins_enabledServerPluginsFailure = サーバープラグインの
view_admin_plugins_hideDeleted = 削除済みを隠す
view_admin_plugins_hideUndeployed = アンデプロイを隠す
view_admin_plugins_loadFailure = プラグインデータをロードするのに失敗しました
+view_admin_plugins_purgedAgentPlugins = エージェントプラグイン {0}
をパージするための準備をしています。これは数分かかるかもしれません。なぜなら、そのプラグインからのすべてのタイプ定義は最初にシステムからパージされなければならないからです。それらのプラグインはパージされるまでの間このページで見え続けます。パージが実行中はそのプラグインを再インストールしてはいけないことに留意してください。さもなければ、失敗することでしょう。したがって、このパージが完了するまでシステムへプラグインの再インストールをお待ちください。
view_admin_plugins_purgedAgentPluginsFailure = エージェントプラグインのパージに失敗しました
view_admin_plugins_purgedServerPlugins = パージされたサーバープラグイン: {0}.
view_admin_plugins_purgedServerPluginsFailure = サーバープラグインのパージに失敗しました
@@ -562,9 +592,11 @@ view_admin_plugins_scanComplete = 更新されたプラグインのためのス
view_admin_plugins_scanFailure = 更新されたプラグインのためのスキャンが失敗しました
view_admin_plugins_server = サーバー
view_admin_plugins_serverConfig = プラグイン構成
+view_admin_plugins_serverConfig_badSettings = 正しい設定を入力してください
view_admin_plugins_serverConfig_saveFailed = 設定の保存に失敗しました
view_admin_plugins_serverConfig_settingsSaved = 設定が保存されました
view_admin_plugins_serverControls = コントロール
+view_admin_plugins_serverControls_badParams = 正しいパラメーターを入力してください
view_admin_plugins_serverControls_clickForError = エラーメッセージをクリックしてください
view_admin_plugins_serverControls_invokeFailure = コントロールの呼び出しに失敗しました
view_admin_plugins_serverControls_name = コントロール
@@ -602,6 +634,7 @@ view_admin_systemSettings_DriftFilePurge_desc = バックエンドからパー
view_admin_systemSettings_DriftFilePurge_name = 未使用ドリフトファイルの削除
view_admin_systemSettings_EnableAgentAutoUpdate_desc =
サーバーがエージェントが自動更新することを許すかどうかを決定します。もしこれが無効にされているのであれば、サーバーからエージェントのディストリビューションをダウンロードすることはできません。
view_admin_systemSettings_EnableAgentAutoUpdate_name = エージェントの自動更新を有効にする
+view_admin_systemSettings_EnableDebugMode_desc = 有効であれば、サーバーはデバッグモードに入ります
view_admin_systemSettings_EnableDebugMode_name = デバッグモードを有効にする
view_admin_systemSettings_EnableExperimentalFeatures_desc =
有効であれば、現在の製品に含まれる任意の実験的機能が利用可能になります
view_admin_systemSettings_EnableExperimentalFeatures_name = 実験的機能を有効にする
@@ -611,6 +644,7 @@ view_admin_systemSettings_JAASProvider_desc = ユーザーIDを決定するの
view_admin_systemSettings_JAASProvider_name = LDAPの有効化
view_admin_systemSettings_LDAPBaseDN_desc = ユーザ認証の間にユーザー名とパスワードを検索するディレクトリツリーのベース。例:
ou=People,dc=redhat,dc=com
view_admin_systemSettings_LDAPBaseDN_name = サーチベース
+view_admin_systemSettings_LDAPBindDN_desc =
LDAPユーザーデータベースの問い合わせ時にLDAPサーバーに接続するためのユーザー名。これは普通はマネージャーユーザーの完全なLDAP識別名 (DN) になる。例:
cn=Manager,dc=redhat,dc=com
view_admin_systemSettings_LDAPBindDN_name = ユーザー名
view_admin_systemSettings_LDAPBindPW_desc =
LDAPユーザーデータベースの問い合わせ時にLDAPサーバーに接続するためのユーザーのクレデンシャル
view_admin_systemSettings_LDAPBindPW_name = パスワード
@@ -636,6 +670,7 @@ view_admin_systemSettings_fixBeforeSaving = 保存前に無効な値を修正し
view_admin_systemSettings_group_baseline = 自動ベースライン構成プロパティ
view_admin_systemSettings_group_dataMgr = データマネージャー構成プロパティ
view_admin_systemSettings_group_drift = ドリフトサーバー構成設定
+view_admin_systemSettings_group_general = 全体構成プロパティ
view_admin_systemSettings_group_ldap = LDAP構成プロパティ
view_admin_systemSettings_saveFailure = システム設定の保存に失敗しました
view_admin_systemSettings_savedSettings = システムプロパティの保存に成功しました
@@ -654,6 +689,7 @@ view_admin_systemSettings_serverDetails_tz = サーバータイムゾーン
view_admin_topology = トポロジー
view_alert_common_tab_conditions = 条件
view_alert_common_tab_conditions_expression = アラート発火
+view_alert_common_tab_conditions_expression_tooltip =
全体の条件がtrueであると認められるために、条件の一部またはすべてがtrueと評価されなければならないかどうか決定します
view_alert_common_tab_conditions_modal_title = 条件追加
view_alert_common_tab_conditions_recovery_disabled = このアラートはそのアラート定義が無効化される原因となりました
view_alert_common_tab_conditions_recovery_enabled = トリガー ''{0}''
が再び有効化される
@@ -674,6 +710,7 @@ view_alert_common_tab_conditions_type_metric_calltime_change_verb =
少なくと
view_alert_common_tab_conditions_type_metric_calltime_delta_grows = 上昇
view_alert_common_tab_conditions_type_metric_calltime_delta_other = 変化
view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = 縮小
+view_alert_common_tab_conditions_type_metric_calltime_destination = 呼び出しの宛先が一致
view_alert_common_tab_conditions_type_metric_calltime_threshold = 呼び出し時間の閾値
view_alert_common_tab_conditions_type_metric_change = メトリック値の変換
view_alert_common_tab_conditions_type_metric_range_inside_exclusive = メトリック値の範囲 [{0}] :
[{1}] と [{2}] の間 (境界値を含まない)
@@ -689,6 +726,7 @@ view_alert_common_tab_dampening = 減衰
view_alert_common_tab_dampening_category_consecutive_count = 連続
view_alert_common_tab_dampening_category_consecutive_count_tooltip =
条件設定がX回連続してtrueであればアラートが引き起こされます。
view_alert_common_tab_dampening_category_duration_count = 時間間隔
+view_alert_common_tab_dampening_category_duration_count_tooltip =
アラートは与えられた時間内で条件設定がtrueであることがX回発生するたびに引き起こされます
view_alert_common_tab_dampening_category_none = なし
view_alert_common_tab_dampening_category_none_tooltip =
減衰は無効化されています。その条件がtrueになるたびに、アラートが引き起こされます。
view_alert_common_tab_dampening_category_partial_count = 直近のN個の評価
@@ -696,6 +734,7 @@ view_alert_common_tab_dampening_category_partial_count_tooltip =
アラートは
view_alert_common_tab_dampening_consecutive_occurrences_label = 発生
view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip =
アラートが引き起こされる前に条件設定が連続してtrueでなけらればならない回数
view_alert_common_tab_dampening_duration_occurrences_label = 発生
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip =
アラートが引き起こされる前に与えられた時間内で条件設定が連続してtrueでなけらればならない回数
view_alert_common_tab_dampening_duration_period_label = 時間間隔
view_alert_common_tab_dampening_duration_period_label_tooltip =
与えられた発生回数がtrueであるかどうかを調べるために条件設定がテストされるタイムスパン
view_alert_common_tab_dampening_partial_evalatuions_label = 評価
@@ -712,6 +751,9 @@ view_alert_common_tab_notifications_sender = センダー
view_alert_common_tab_notifications_status = ステータス
view_alert_common_tab_recovery = リカバリ
view_alert_definition_condition_editor_availabilityDuration = アベイラビリティ間隔
+view_alert_definition_condition_editor_availabilityDuration_tooltip =
アベイラビリティの条件をトリガーするために保存されていなければならないアベイラビリティ状態の変化と間隔を指定します。その間隔は分単位で指定されます。エージェントがアベイラビリティ状態の変更を検出して問題を修正できるようにするためには、エージェントに指定する時間としては、数分という長さで十分です。
+view_alert_definition_condition_editor_availabilityDuration_tooltip_duration =
アベイラビリティの条件を満たすためにリソースが指定されたアベイラビリティになる必要がある時間の長さ(分)です。
+view_alert_definition_condition_editor_availability_tooltip =
条件のトリガーとなるアベイラビリティ状態の変化を指定します
view_alert_definition_condition_editor_availability_value = アベイラビリティ
view_alert_definition_condition_editor_common_avg = 平均
view_alert_definition_condition_editor_common_max = 最大
@@ -725,11 +767,14 @@ view_alert_definition_condition_editor_drift_tooltip = この条件はドリフ
view_alert_definition_condition_editor_event_regex = 正規表現
view_alert_definition_condition_editor_event_regex_tooltip =
もし指定されたなら、これは正規表現であり、この条件を引き起こすために収集されたイベントメッセージに一致しなければなりません。
view_alert_definition_condition_editor_event_severity = イベント重大度
+view_alert_definition_condition_editor_event_tooltip =
この条件を引き起こすためにイベントメッセージが報告される必要があるイベント重大度を指定します。もしオプションとなる正規表現を指定したなら、イベントメッセージはその条件が引き起こされるためにイベントメッセージも正規表現に一致しなければなりません。
view_alert_definition_condition_editor_metric_baseline_percentage = ベースラインパーセンテージ
view_alert_definition_condition_editor_metric_baseline_percentage_tooltip =
選択された比較演算子を使用して選択されたベースライン値のパーセンテージを比較するときに収集されたメトリック値はこの条件を引き起こします。
+view_alert_definition_condition_editor_metric_baseline_tooltip =
条件を引き起こすために違反されることが必要となるベースライン値を指定します。指定する値は、与えられたベースライン値のパーセンテージになります。
view_alert_definition_condition_editor_metric_baseline_value = ベースライン
view_alert_definition_condition_editor_metric_calltime_change_percentage = パーセンテージの変化
view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip =
少なくとも選択された呼び出し時間リミット値のパーセンテージと異なるとき、収集された呼び出し時間はこの条件を引き起こします
+view_alert_definition_condition_editor_metric_calltime_change_tooltip =
条件を引き起こす、少なくとも指定された量の変化が起こったときの、呼び出し値を指定します。(最小、最大、平均の呼び出し時間の値)をチェックするための呼び出し時間のリミットの種別と発生に必要な変化のパーセンテージを指定しなければなりません。
view_alert_definition_condition_editor_metric_calltime_common_comparator = コンパレータ
view_alert_definition_condition_editor_metric_calltime_common_comparator_changes = 変化
view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = 増大
@@ -739,14 +784,19 @@ view_alert_definition_condition_editor_metric_calltime_common_limit
= 呼び出
view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip =
与えられた値と比較されるべき呼び出し時間リミットの値
view_alert_definition_condition_editor_metric_calltime_common_name = 呼び出し時間メトリック
view_alert_definition_condition_editor_metric_calltime_common_regex = 正規表現
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip =
もし指定されるなら、これは正規表現であり、条件を引き起こすために呼び出しの宛先と一致する必要があります
view_alert_definition_condition_editor_metric_calltime_threshold_tooltip =
違反したときに条件を引き起こす呼び出し時間の閾値を指定します。指定する値はオプションの単位を伴う絶対値になります。(最小、最大、平均の呼び出し時間の値)と値を比較するため呼び出し時間のリミットの種別を指定しなければなりません。
view_alert_definition_condition_editor_metric_calltime_threshold_value = 呼び出し時間の値
view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip =
選択された比較子(comparator)を使って比較するとき条件が引き起こされるメトリックの閾値
view_alert_definition_condition_editor_metric_change_tooltip =
条件を引き起こすために変更しなければならない値を持つメトリックを指定します
view_alert_definition_condition_editor_metric_common_definition_not_found =
メトリック定義が見つかるべきです - 何かがおかしいです
+view_alert_definition_condition_editor_metric_nometrics =
すべてを連結して使うとき、複数条件内に同じメトリックを使うことはできません。この警告は現在の条件内でのすべての利用可能なメトリックスを使います。
view_alert_definition_condition_editor_metric_range_comparator = 比較演算子
+view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive =
内部で、境界値を含まない
+view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive =
内部で、境界値を含む
view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive = 外部で、
境界値を含まない
view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive = 外部で、
境界値を含む
+view_alert_definition_condition_editor_metric_range_comparator_tooltip =
メトリック値が、範囲内か範囲外のとき、この条件のトリガーになるかどうかを決定します。
view_alert_definition_condition_editor_metric_range_hivalue = 高値
view_alert_definition_condition_editor_metric_range_hivalue_tooltip = 範囲での高値の閾値
view_alert_definition_condition_editor_metric_range_lovalue = 低値
@@ -766,9 +816,12 @@ view_alert_definition_condition_editor_metric_trait_change_value =
トレイト
view_alert_definition_condition_editor_metricswarning =
すべての連結を使うときは同じメトリックを使う複数の条件を指定することはできません。この警告定義はそのメトリック [{0}] を使う複数の条件を持ちます。
view_alert_definition_condition_editor_operation_status = オペレーションステータス
view_alert_definition_condition_editor_operation_tooltip =
条件を引き起こすために選択されたが実行されるとき発生しなければならない結果を指定します
+view_alert_definition_condition_editor_operator_availability_durationDown = 停止中の状態
+view_alert_definition_condition_editor_operator_availability_durationNotUp = 起動しない状態
view_alert_definition_condition_editor_operator_availability_goesDisabled = 無効化になる
view_alert_definition_condition_editor_operator_availability_goesDown = 停止する
view_alert_definition_condition_editor_operator_availability_goesNotUp = 起動しない
+view_alert_definition_condition_editor_operator_availability_goesUnknown = 不明な状態になる
view_alert_definition_condition_editor_operator_availability_goesUp = 起動する
view_alert_definition_condition_editor_option_availability = アベイラビリティの変化
view_alert_definition_condition_editor_option_drift = ドリフトの検出
@@ -802,7 +855,12 @@ view_alert_definition_notification_editor_delete_confirm = 選択されたアラ
view_alert_definition_notification_editor_field_configuration = 構成
view_alert_definition_notification_editor_field_configuration_loadFailed =
通知構成プレビューの取得に失敗しました
view_alert_definition_notification_editor_field_configuration_not_loaded = 未知
+view_alert_definition_notification_editor_field_sender = 送信者
+view_alert_definition_notification_editor_loadFailed = アラート送信者を取得できません
+view_alert_definition_notification_editor_loadFailed_single = アラート送信者構成定義を取得できません
+view_alert_definition_notification_editor_none_available = アラート送信者が利用できません
view_alert_definition_notification_editor_saveFailed = 通知の構成を保存できません
+view_alert_definition_notification_editor_sender = 通知送信者
view_alert_definition_notification_editor_title_add = 通知の追加
view_alert_definition_notification_editor_title_edit = 通知の編集
view_alert_definition_notification_operation_editor_common_operation = オペレーション
@@ -814,7 +872,11 @@ view_alert_definition_notification_operation_editor_mode_unknown =
未知のオ
view_alert_definition_notification_operation_editor_operations_loadFailed =
利用可能なオペレーションのリストをロードするのに失敗しました
view_alert_definition_notification_operation_editor_operations_no_parameters =
この操作は一つもパラメーターを取りません
view_alert_definition_notification_operation_editor_relative_ancestor = 検索を開始
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
タイプの祖先を取得できません
+view_alert_definition_notification_operation_editor_relative_ancestor_root = ルートの祖先タイプ
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip =
タイプ階層のトップを選択します。それはタイプによるフィルターのために子孫のツリーを検索する元となります
view_alert_definition_notification_operation_editor_relative_descendant = 次によるフィルター
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
選択したタイプに対応する複数のリソースが存在するときリソースをユニークに識別する具体的な名前。これは選択したタイプ階層においてそのリソースタイプの唯一のリソースしか存在しない場合はオプションです。
view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
タイプの子孫を取得できません
view_alert_definition_notification_operation_editor_relative_descendant_tooltip =
検索の開始セクションで定義されるルートタイプの下で検索するリソースタイプ
view_alert_definition_notification_operation_editor_specific_pick_button = 選択
@@ -853,6 +915,7 @@ view_alert_definitions_update_failure = アラート定義の更新に失敗し
view_alert_definitions_update_success = アラート定義の更新に成功しました
view_alert_details_field_ack_at = 次の場所で確認済みです
view_alert_details_field_ack_by = 次の人によって確認済みです
+view_alert_details_field_recovery_info = リカバリ情報
##view_alert_details_field_resource_ancestry = Resource Ancestry
##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = アラートの詳細を取り出すのに失敗しました
@@ -882,9 +945,11 @@ view_alerts_field_enabled = 有効
view_alerts_field_modified_time = 修正時刻
view_alerts_field_name = 名前
view_alerts_field_parent = 親
+view_alerts_field_priority = 優先度
view_alerts_field_protected = 保護されている
view_alerts_field_protected_tooltip =
もしtrueなら、この定義は親定義による変更から保護されています。他の言葉で言えば、その親定義設定はこの定義を上書きしません。
view_alerts_loadFailed = アラートデータを取り出すのにしました
+view_alerts_table_filter_priority = 優先度フィルター
view_alerts_table_title_group = グループアラート履歴
view_alerts_table_title_resource = リソースアラート履歴
view_autoDiscoveryQ_committed = コミット済み
@@ -917,19 +982,27 @@ view_bundleVersion_loadFailure = バンドルバージョンデータをロー
view_bundle_bundle = バンドル
view_bundle_bundleDeployment = バンドルデプロイメント
view_bundle_bundleDeployments = バンドルデプロイメント
+view_bundle_bundleDestinations = バンドル宛先
view_bundle_bundleFiles = バンドルファイル
view_bundle_bundleType = バンドルタイプ
view_bundle_bundleVersion = バンドルバージョン
view_bundle_bundleVersions = バンドルバージョン
view_bundle_bundles = バンドル
+view_bundle_createWizard_bundleDistro = バンドル配布
+view_bundle_createWizard_cancelFailure = バンドル [{0}], バージョン = [{1}] の作成の完全なキャンセルに失敗しました -
バンドルはデータベースにまだ残っているかもしれません
view_bundle_createWizard_cancelSuccessful = バンドル [{0}], バージョン = [{1}] の作成をキャンセルしました
view_bundle_createWizard_clickToUploadRecipe = レシピファイルのロードするためにクリックしてください
view_bundle_createWizard_createFailure = バンドルを作成するのに失敗しました
view_bundle_createWizard_createSuccessful = バージョン [{1}] の [{0}] という名前のバンドルの作成に成功しました
view_bundle_createWizard_enterRecipe = 正しいレシピを提供してください
+view_bundle_createWizard_enterUrl = バンドル配布ファイルをダウンロードできる正しいURLを入力してください
+view_bundle_createWizard_failedToUploadDistroFile = バンドル配布ファイルのアップロードに失敗しました
view_bundle_createWizard_failedToUploadFile = バンドルファイルのアップロードに失敗しました
+view_bundle_createWizard_loadBundleFileFailure = サーバーからバンドルファイル情報の取得ができません
+view_bundle_createWizard_noAdditionalFilesNeeded = このバンドルのためにアップロードされる必要がある追加ファイルはありません
view_bundle_createWizard_noBundleTypesAvail = バンドルタイプが利用できません
view_bundle_createWizard_noBundleTypesSupported = バンドルタイプは一つもサポートされていません -
バンドルデプロイメントをサポートする正しいプラグインをデプロイしなければなりません
+view_bundle_createWizard_provideBundleDistro = バンドル配布の提供
view_bundle_createWizard_recipeOption = レシピ
view_bundle_createWizard_title = バンドル作成
view_bundle_createWizard_uploadInProgress = アップロード中です... この操作は大きいファイルの場合には数分かかることもあります
@@ -938,25 +1011,44 @@ view_bundle_createWizard_uploadStepName = バンドルファイルのアップ
view_bundle_createWizard_urlOption = URL
view_bundle_createWizard_windowTitle = バンドル作成ウィザード
view_bundle_createWizard_youMustChooseOne = バンドルを作成するためのオプションを選択しなければなりません
+view_bundle_deleteConfirm = このバンドルを削除してもよろしいですか? このバンドルのすべてのバージョン、宛先、デプロイも削除されます。
view_bundle_deploy = デプロイ
view_bundle_deployDir = デプロイディレクトリ
+view_bundle_deployWizard_deployStep = 宛先プラットフォームへのバンドルのデプロイ
view_bundle_deployWizard_deploying = デプロイ中...
view_bundle_deployWizard_deploymentCreated = 作成されたデプロイメント...
view_bundle_deployWizard_deploymentCreatedDetail = ディスクリプション [{1}] の付いたデプロイメント [{0}]
を作成しました
view_bundle_deployWizard_deploymentCreatedDetail_concise = デプロイメント [{0}] を作成しました
view_bundle_deployWizard_deploymentScheduled = バンドルデプロイがスケジュールされました!
+view_bundle_deployWizard_deploymentScheduledDetail = バンドルデプロイメント [{0}] を宛先グループ [{1}]
にスケジュールしました
view_bundle_deployWizard_deploymentScheduledDetail_concise = バンドルデプロイメントがスケジュールされました
view_bundle_deployWizard_destinationCreatedDetail = ディスクリプション [{1}] の付いたデプロイメント [{0}]
を作成しました
+view_bundle_deployWizard_destinationCreatedDetail_concise = 宛先 [{0}] を作成しました
view_bundle_deployWizard_error_1 = キャンセルについての新しいデプロイメントの削除に失敗しました
+view_bundle_deployWizard_error_10 = 宛先の作成に失敗しました。それはすでに存在するかもしれません。
(注意:宛先ビューから既存の宛先デプロイのため)
view_bundle_deployWizard_error_11 = 定義済みデプロイメントの検索に失敗しました
view_bundle_deployWizard_error_12 = 定義済みバンドルの検索に失敗しました
+view_bundle_deployWizard_error_2 = キャンセルについての新しい宛先の削除に失敗しました
view_bundle_deployWizard_error_3 = デプロイメントのスケジュールに失敗しました!
view_bundle_deployWizard_error_4 = デプロイメントのスケジュールに失敗しました: {0}
view_bundle_deployWizard_error_5 = デプロイメントの作成に失敗しました!
view_bundle_deployWizard_error_6 = デプロイメントの作成に失敗しました: {0}
view_bundle_deployWizard_error_7 = デプロイメント名の取得に失敗しました
view_bundle_deployWizard_error_8 = ドロップダウンから正しいリソースグループを選択しなければなりません
+view_bundle_deployWizard_error_9 = 次ページでの新しい宛先の削除に失敗しました
+view_bundle_deployWizard_error_noBundleConfig =
バンドルターゲット情報の取得に失敗しました。選択したグループはバンドルデプロイメントのターゲットに成り得る正当な互換グループですか?
+view_bundle_deployWizard_getConfigSkip = このバンドルバージョンには構成は必要ありません
view_bundle_deployWizard_getConfigStep = デプロイメント構成の設定
+view_bundle_deployWizard_getDestStep = 新しい宛先
+view_bundle_deployWizard_getDest_deployDir = ルートデプロイディレクトリ (宛先プラットフォーム上での)
+view_bundle_deployWizard_getDest_deployDir_help =
そのバンドルがデプロイされるディレクトリ。このディレクトリはすべてのリソースに関するすべてのデプロイ用として同じものが使われますが、宛先の基本ディレクトリの場所に対する相対ディレクトリになります。このことは、異なるターゲットリソースについて基本ディレクトリの配置がどこにあるかということに依存して、その絶対ディレクトリは異なるターゲットリソースによって異なるパスになる可能性があることを意味しています。
+view_bundle_deployWizard_getDest_desc = 宛先の説明
+view_bundle_deployWizard_getDest_destBaseDirName = 基本の配置
+view_bundle_deployWizard_getDest_group_help =
メンバーがすべてのバンドルデプロイのための宛先ターゲットとなるようなグループ。バンドルデプロイをサポートするリソースを含む互換グループのみが選択可能です。
+view_bundle_deployWizard_getDest_name = 宛先名
+view_bundle_deployWizard_getDest_name_help =
宛先名。それはリソースの特定のグループと特定のバンドルのリソースに関する宛先ディレクトリを識別します。
+view_bundle_deployWizard_getInfoStep = デプロイ情報の提供
+view_bundle_deployWizard_getInfo_clean = クリーンデプロイですか? (宛先プラットフォーム上でのデプロイディレクトリを掃除する)
view_bundle_deployWizard_getInfo_deploymentDesc = デプロイの説明
view_bundle_deployWizard_getInfo_deploymentName = デプロイ名
view_bundle_deployWizard_getOptionsStep = デプロイオプション
@@ -971,6 +1063,7 @@ view_bundle_deployWizard_selectVersion_live = 動作バージョン [{0}]
view_bundle_deployWizard_selectVersion_select = リストからバージョンを選択してください:
view_bundle_deployWizard_title = バンドルデプロイのウィザード
view_bundle_deploy_action = アクション
+view_bundle_deploy_backButton = 宛先に戻る
view_bundle_deploy_clickForError = エラーメッセージのアイコンをクリックしてください
view_bundle_deploy_deleteConfirm = このバンドルデプロイを削除してもよろしいですか?
view_bundle_deploy_deleteFailure = バンドルデプロイ [{0}] の削除に失敗しました
@@ -990,14 +1083,25 @@ view_bundle_deploy_time = デプロイ名
view_bundle_deployed = デプロイ
view_bundle_deployments = デプロイ
view_bundle_dest_backToBundle = バンドルへ戻る
+view_bundle_dest_baseDirName = 基本の配置
view_bundle_dest_created = 作成された
+view_bundle_dest_deleteConfirm = このバンドル宛先を削除してもよろしいですか?
これはデータベースから削除するだけです。つまり、リモートマシンのこの宛先にデプロイされたすべてのバンドルの内容は残り続けます
+view_bundle_dest_deleteFailure = バンドル宛先 [{0}] の削除に失敗しました
+view_bundle_dest_deleteSuccessful = バンドル宛先 [{0}] の削除に成功しました
view_bundle_dest_deployDir = デプロイディレクトリ
view_bundle_dest_group = グループ
view_bundle_dest_lastDeployedVersion = 最後にデプロイされたバージョン
view_bundle_dest_lastDeploymentDate = 最後のデプロイされたい日付
view_bundle_dest_lastDeploymentStatus = 最後にデプロイされたステータス
+view_bundle_dest_loadFailure = バンドルの宛先をロードするのに失敗しました
+view_bundle_dest_loadFailureVersionInfo = デプロイされたバージョン情報のロードに失敗しました
view_bundle_dest_purgeConfirm = この操作はすべてのリモートマシンからバンドルコンテントを除去します。よろしいですか?
+view_bundle_dest_purgeFailure = リモートマシンの一部あるいはすべてからのバンドル宛先 [{0}] の除去に失敗しました
+view_bundle_dest_purgeSuccessful = リモートマシンの一部あるいはすべてからのバンドル宛先 [{0}] の除去に成功しました
view_bundle_dest_revertConfirm = これはすべてのリモートマシンを以前のバンドルデプロイメントへ戻します。これをしてもよろしいですか?
+view_bundle_dest_tagUpdateFailure = バンドル宛先タグの更新に失敗しました
+view_bundle_dest_tagUpdateSuccessful = バンドル宛先タグの更新に成功しました
+view_bundle_destinations = 宛先
view_bundle_fileListView_fileSize = ファイルサイズ
view_bundle_fileListView_loadFailure = バンドルファイルデータをロードするのに失敗しました
view_bundle_fileListView_md5 = MD5
@@ -1010,6 +1114,7 @@ view_bundle_list_deleteFailure = バンドル [{0}] の削除に失敗しまし
view_bundle_list_deleteSuccessful = バンドル [{0}] の削除に成功しました
view_bundle_list_deletesFailure = バンドルの削除に失敗しました
view_bundle_list_deletesSuccessful = バンドルの削除に成功しました
+view_bundle_list_destinationsCount = 宛先数
view_bundle_list_error1 = [{0}] をデプロイするためのバンドルのロードに失敗しました
view_bundle_list_error2 = [{0}] をデプロイするための単一バンドルの取得に失敗しました
view_bundle_list_error3 = バンドルのロードに失敗しました
@@ -1027,14 +1132,18 @@ view_bundle_revertWizard_confirmStep_confirmation = 動作中のデプロイを
view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment =
動作中のデプロイが見つかりません。取り消しができません。
view_bundle_revertWizard_confirmStep_liveDeployment = 動作中のデプロイ
view_bundle_revertWizard_confirmStep_name = 取り消しデプロイ確認
+view_bundle_revertWizard_confirmStep_noLiveDeployment = その宛先 [{0}] 用の動作中のデプロイは見つかりませんでした
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise =
その宛先用の動作中のデプロイは見つかりませんでした
view_bundle_revertWizard_confirmStep_noPriorDeployment = 以前のデプロイ [{1}] が存在しないので動作中のデプロイ
[{0}] は取り消すことができませんでした
view_bundle_revertWizard_confirmStep_noPriorDeployment_concise =
以前のデプロイが存在しないので動作中のデプロイは取り消すことができませんでした
view_bundle_revertWizard_confirmStep_prevDeployment = 以前のデプロイ
view_bundle_revertWizard_getInfoStep_cleanDeploy = デプロイを削除しますか?
(これは古い、既存のデプロイディレクトリを取り消しデプロイを開始する前に削除します)
view_bundle_revertWizard_getInfoStep_getNameFailure = 取り消しデプロイ名の取得に失敗しました
+view_bundle_revertWizard_getInfoStep_name = 取り消し情報の提供
view_bundle_revertWizard_getInfoStep_revertDeployDesc = デプロイ記述の取り消し
view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [取り消し 前] {0} [取り消し 後] {1}
view_bundle_revertWizard_getInfoStep_revertDeployName = デプロイ名の取り消し
+view_bundle_revertWizard_revertStep_name = 宛先プラットフォームへバンドルをデプロイ
view_bundle_revertWizard_revertStep_reverting = 取り消し中...
view_bundle_revertWizard_revertStep_scheduled = デプロイの取り消しのスケジュールに成功しました。
view_bundle_revertWizard_revertStep_scheduledDetails = リソースグループ [{1}] からバンドルデプロイ [{0}]
の取り消しのスケジュールに成功しました
@@ -1052,11 +1161,13 @@ view_bundle_version_loadFailure = バンドルバージョンのロードに失
view_bundle_versions = バージョン
view_configCompare_comparingConfigs = 構成の比較
view_configCompare_configCompare = 構成の比較
+view_configEdit_addItem = リストに項目を追加
view_configEdit_confirm_1 = その集まりから選択されたプロパティを削除してもよろしいですか?
view_configEdit_confirm_2 = この行を削除してもよろしいですか?
view_configEdit_confirm_3 = [{1}] が選択された [{0}] を削除してもよろしいですか?
##view_configEdit_description = Description
view_configEdit_editRow = 行の編集
+view_configEdit_enterPropName = 追加するプロパティの名前を入力してください
view_configEdit_error_1 = 構成はこのリソースでサポートされていません
view_configEdit_error_2 = 接続設定はこのリソースでサポートされていません
view_configEdit_error_3 = [{0}] という名前のプロパティを追加できません。プロパティ名はその集まりですでに使われています。
@@ -1115,6 +1226,7 @@ view_dashboardManager_saved = ダッシュボード {0} をサーバーへ保存
view_dashboardManager_success = ダッシュボードを保存しました
view_dashboard_favorites_error1 = 好みのリソースをロードするのに失敗しました
view_dashboardsManager_error1 = 新しいダッシュボードを追加するのに失敗しました
+view_dashboardsManager_message_title_details =
<h1>{0}へようこそ</h1>\n<p>RHQプロジェクトは一連のコア機能を抽象化するプラグインベースのシステム管理スイートで、複数のプロダクトやプラットフォームのための統合化されたシステム管理機能を提供します。このプロジェクトはレイヤ化されたモジュールによって設計されていて、デプロイのための柔軟なアーキテクチャを提供します。それは企業全体に対する監査と履歴の管理を提供するコアとなるユーザーインタフェースを導入します。サーバー/エージェントアーキテクチャはリモートでの管理と特定プロダクトのサポートを実現するプラグインを提供します。
</p>\n <p>このデフォルトのダッシュボードは上の「編集モード」ボタンをすることで編集可能です。</p>
view_dashboards_confirm1 = 削除してもよろしいですか
view_dashboards_portlets_refresh_fail1 = 自動リフレッシュするポートレットのリフレッシュ間隔の更新に失敗しました
view_dashboards_portlets_refresh_fail2 = 自動リフレッシュするポートレットのリロードの無効化に失敗しました
@@ -1175,6 +1287,7 @@ view_drift_wizard_addDef_templatePrompt = ドリフト定義テンプレート
view_drift_wizard_addDef_title = タイプのリソース [{0}] のためのドリフト検出定義を追加してください
view_drift_wizard_addDef_windowTitle = ドリフト検出定義ウィザードの追加
view_drift_wizard_addTemplate_failure = 新規ドリフト検出テンプレート [{0}] の追加に失敗しました
+view_drift_wizard_addTemplate_infoStepHelp =
各ドリフトテンプレートは既存のテンプレートから派生して作成できます。これは既存テンプレートに類似したものや、プラグインが定義したテンプレートから新規テンプレートを構築する素早い方法を提供します。ドリフト定義のように、そのテンプレートはドリフトを監視を実行する一式のファイルを記述します。状況によっては、そのテンプレートから導出された定義はそのファイルセットの変更や、他の設定の変更を許したり、許さなかったりします。テンプレート名は一つのリソースタイプ内でユニークでなければなりません。
view_drift_wizard_addTemplate_infoStepName = 開始テンプレートの選択
view_drift_wizard_addTemplate_success = 新規ドリフトテンプレート [{0}] の追加に成功しました
view_drift_wizard_addTemplate_title = タイプ [{0}] のドリフト定義テンプレートを追加してください
@@ -1183,6 +1296,7 @@ view_drift_wizard_pinTemplate_confirmNotPinned = そのテンプレートのた
view_drift_wizard_pinTemplate_confirmPinned = 警告!
このテンプレートはすでにピン留めされています。そのテンプレートはこの新規スナップショットに再度ピン留めすることが可能です。そのテンプレートのための現在と将来の各ドリフト定義がいったんピン留めされると、そのテンプレートは初期スナップショットがそのテンプレートが持つピン留めされたスナップショットとして設定されるようにします。このテンプレートの既存定義は新規初期スナップショットへリセットされ、すべての既存スナップショットは削除されます。この新規スナップショットを持つテンプレートのピン留めを続けますか?
view_drift_wizard_pinTemplate_failure = ドリフトテンプレート [{0}] へのスナップショットをピン留めするのに失敗しました
view_drift_wizard_pinTemplate_infoStepExistingTemplate = 現在のテンプレートへのピン留め
+view_drift_wizard_pinTemplate_infoStepHelp =
ピン留めをするテンプレートを選択してください。そのテンプレートのための現在と将来の各ドリフト定義がいったんピン留めされると、そのテンプレートは初期スナップショットがそのテンプレートが持つピン留めされたスナップショットとして設定された持つようになりまするようにします。そしてその定義自身はピン留めされたものとしてマークされます。これは期待されるファイルセットからドリフトを検出するのに使われます。このテンプレートのための既存定義は新規の初期スナップショットにリセットされ、すべての既存スナップショットは削除されることに注意してください。
view_drift_wizard_pinTemplate_infoStepName = ピン留めされるテンプレートの選択
view_drift_wizard_pinTemplate_infoStepNewTemplate = 新規テンプレートへのピン留め
(スナップショットのドリフト定義から導出されたもの)
view_drift_wizard_pinTemplate_infoStepRadioHelp =
そのスナップショットは新規または既存のドリフトテンプレートにピン留めすることが可能です。その''新規テンプレート''オプションは、ユーザーの手によって信頼する定義やスナップショットを、リソースレベルやタイプレベルで、テンプレート化できるようにします。その新規テンプレートは、次に、そのタイプのメンバーに対して適用できます。その新規テンプレートは初期時はスナップショットのドリフト定義のコピーですが、次のステップで編集することができます。その名前は変更すべきで、そのタイプのユニークなドリフトテンプレート名でなければなりません。''既存テンプレート''オプションは、ユーザーが選択したスナップショットを持つ既存テンプレートに対して、ピン留めまたは再度ピン留めができるようにします。正しく設定するには、その既存テンプレートは同じディレクトリをそのスナップショット定義として監視できなければなりません。セレクションボックスは正当な既存のテンプレートだけを表示します。もし正当でない既存テンプレートが存在したとしてもこのオプションでは選択されません。
@@ -1219,7 +1333,9 @@ view_dynagroup_exprBuilder_expressionType_resourceConfig = リソース構成
view_dynagroup_exprBuilder_expressionType_resourceType = リソースタイプ
view_dynagroup_exprBuilder_expressionType_tooltip = この式のプロパティは以下のものに切り替わります。<br/>
<b>リソース</b>: 名前やバージョンといったリソースプロパティ<br/> <b>リソースタイプ</b>:
特定タイプのリソースの検索<br/> <b>リソースカテゴリ</b>:
プラットフォーム、サーバー、サービスといったカテゴリによるリソース検索<br/> <b>トレイト</b>:
モニタされたトレイトのために選択された値を持つリソース<br/> <b>プラグイン構成</b>:
コンポーネントのプラグインコンポーネント構成設定による検索<br/> <b>リソース構成</b>: 管理リソースの構成設定による検索
view_dynagroup_exprBuilder_expressionType_trait = トレイト
+view_dynagroup_exprBuilder_expression_tooltip =
これは以下のフォーム内の選択によって表現される完全な式です。このテキストは、"式の追加"ボタンをクリックすると、グループ定義式のテキストに追加されます。
view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip =
GroupByはシステムが入力式からの値についてピボット解析ができるようにします。例えば、クラスター名によるGroupByによって、すべてのクラスターメンバーをその中に含むようなクラスタのグループを作成します。
view_dynagroup_exprBuilder_noPlugins = --プラグインなし--
view_dynagroup_exprBuilder_noProperties = --プラグインなし--
view_dynagroup_exprBuilder_noResourceTypes = --リソースタイプなし--
@@ -1241,6 +1357,7 @@ view_dynagroup_exprBuilder_resource_tooltip = リソースのレベルを望み
view_dynagroup_exprBuilder_savedExpression = 保存された式
view_dynagroup_exprBuilder_title = 式ビルダー
view_dynagroup_exprBuilder_unset = 設定解除
+view_dynagroup_exprBuilder_unset_tooltip =
設定解除はデータベース内のnull値を持つ値をのすべてを発見します。これはデータベースストアと問い合わせデータの理由により"="オペレータを使うことは可能ではありません。
view_dynagroup_exprBuilder_value_tooltip = 問い合わせ式のための文字列値
view_dynagroup_expression = 式
view_dynagroup_expressionBuilderIconTooltip = 式ビルダー...
@@ -1271,6 +1388,8 @@ view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - ホスティングし
view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - セキュアでないすべて
view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - ユニークバージョン
view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - クラスタ
+view_dynagroup_template_platforms = インベントリ内のプラットフォームリソース
+view_dynagroup_template_uniqueResourceTypes = インベントリ内のユニークリソースタイプ
view_groupConfigEdit_member = メンバー
view_groupConfigEdit_noListProps = グループ構成に現在サポートされていないプロパティのリスト
view_groupConfigEdit_saveReminder = 設定が変更されています - これらの変更を保存するのを忘れないでください。さもないと失われます。
@@ -1305,6 +1424,7 @@ view_group_operationScheduleDetails_memberResource = メンバーリソース
view_group_operationScheduleDetails_value_parallel = 並行実行
view_group_operationScheduleDetails_value_sequential = 以下に示した順で
(メンバーリソースをドラッグ&ドロップして順番を変更)
view_group_pluginConfig_edit_currentGroupProperties = 現在のグループプロパティ
+view_group_pluginConfig_edit_invalid =
次のコネクション設定プロパティには不正な値が設定されていますので、コネクション設定が保存されるまえに修正される必要があります: [{0}]
view_group_pluginConfig_edit_noperm = このグループコネクション設定を編集する権限がありません
view_group_pluginConfig_edit_saveFailure = グループ名 [{1}] と互換性のある [{0}]
のためのグループ設定更新の開始に失敗しました
view_group_pluginConfig_edit_saveInitiated_concise = グループコネクション設定の更新が開始されました
@@ -1313,6 +1433,7 @@ view_group_pluginConfig_edit_saveTooltip = すべてのグループメンバー
view_group_pluginConfig_edit_valid = すべてのコネクション設定プロパティには正しい値が設定されていますので、コネクション設定は保存できます
view_group_pluginConfig_members_fetchFailure = グループ [{0}] のメンバーのためのプラグイン構成更新履歴の取得に失敗しました
view_group_pluginConfig_members_fetchFailureConn = [{0}] のためのメンバーコネクション設定の取り出しに失敗しました
+view_group_pluginConfig_members_fetchFailureConnInProgress =
グループプラグイン構成の更新は現在進行中です。グループ設定を閲覧する前に更新が完了するまで待ってください。
view_group_pluginConfig_members_statusDetails = ステータスの詳細
view_group_pluginConfig_members_statusFailure = この構成の更新は未知の理由により失敗しました
view_group_pluginConfig_members_statusInprogress = この構成の更新はまだ進行中です
@@ -1323,6 +1444,7 @@ view_group_pluginConfig_table_clickStatusIcon = 詳細はステータスアイ
view_group_pluginConfig_table_deleteFailure = グループプラグイン構成履歴の削除に失敗しました
view_group_pluginConfig_table_deleteSuccessful = [{0}] の履歴を削除しました
view_group_pluginConfig_table_failFetch = グループプラグイン履歴の取得に失敗しました
+view_group_pluginConfig_table_msg1 = 個々のリソースのステータスのためのメンバー履歴を見てください
view_group_pluginConfig_table_statusDetails = ステータスの詳細
view_group_pluginConfig_table_statusFailure = このグループ構成の更新は失敗しました
view_group_pluginConfig_table_statusInprogress = このグループ構成の更新は進行中です
@@ -1343,6 +1465,7 @@ view_group_resConfig_edit_saveTooltip = すべてのグループメンバーの
view_group_resConfig_edit_valid = すべての構成プロパティは正しい値ですので、その構成は保存可能です
view_group_resConfig_members_fetchFailure = グループ [{0}] のメンバーのためのリソース構成更新履歴の取得に失敗しました
view_group_resConfig_members_fetchFailureConfig = [{0}] のためのメンバーリソース構成設定の取り出しに失敗しました
+view_group_resConfig_members_fetchFailureConfigInProgress =
グループリソース構成の更新が現在進行中です。グループ設定を閲覧する前に更新が終了するのをお待ちください
view_group_resConfig_members_statusDetails = ステータスの詳細
view_group_resConfig_members_statusFailure = この構成の更新は未知の理由で失敗しました。
view_group_resConfig_members_statusInprogress = この構成の更新はまだ進行中です
@@ -1353,6 +1476,7 @@ view_group_resConfig_table_clickStatusIcon = 詳細はステータスアイコ
view_group_resConfig_table_deleteFailure = グループリソース構成履歴の削除に失敗しました
view_group_resConfig_table_deleteSuccessful = [{0}] の履歴の削除をしました
view_group_resConfig_table_failFetch = グループ構成履歴の取得に失敗しました
+view_group_resConfig_table_msg1 = 個々のリソースのステータスはメンバー履歴を閲覧してください
view_group_resConfig_table_statusDetails = スタータスの詳細
view_group_resConfig_table_statusFailure = このグループ構成の更新が失敗しました
view_group_resConfig_table_statusInprogress = このグループ構成の更新はまだ進行中です
@@ -1375,6 +1499,7 @@ view_group_summary_mixed = 混在
view_group_summary_nameUpdateFailure = ID [{0}] を持つリソースグループ名の変更に失敗しました - [{1}] から [{2}]
への変更ができませんでした
view_group_summary_nameUpdateSuccessful = ID [{0}] を持つリソースグループを [{1}] から [{2}] への変更しました
view_group_summary_recursive = 再帰
+view_helpTop_description = このセクションはドキュメンテーション、チュートリアル、バージョン、その他のヘルプ情報を提供します。
view_help_section_product = プロダクト
view_help_section_product_about = RHQについて
view_inventory_adq = ディスカバリキュー
@@ -1409,6 +1534,7 @@ view_inventory_resource_loadFailed = ID [{0}] を持つリソースは存在し
view_inventory_resources_deleteConfirm = 選択されたリソースを削除したいですか?
view_inventory_resources_deleteFailed = 選択されたリソースの削除に失敗しました
view_inventory_resources_deleteSuccessful = そのリソースを削除するリクエストは(複数の)エージェントに正しく送信されました。
+view_inventory_resources_disableConfirm = 本当に選択したリソースを無効にしたいですか?
無効な間にエージェントから報告されたアベイラビリティは無視されます。無効化は通常操作や保守の一部として停止することが期待されているリソースに対して役に立ちます。
view_inventory_resources_disableFailed = 選択されたリソースを無効化するのに失敗しました。
view_inventory_resources_disableSuccessful = 選択されたリソースとその子となる [{0}] リソースを無効化するのに成功しました。
view_inventory_resources_enableConfirm = 本当に選択されたリソースを有効したいですか?
有効の間はエージェントがリソースのアベイラビリティを報告するまでアベイラビリティはUNKNOWNに設定されます。エージェントは直近の都合の良いときに現在のアベイラビリティを報告するように要求されます。
@@ -1437,10 +1563,13 @@ view_login_invalidEmail = 不正なE-メールアドレス
view_login_login = ログイン
view_login_logout = ログアウト
view_login_noBackend = バックエンドデータソースは利用できません
+view_login_noLdap = 注意:LDAP詳細の任意の取り出しは成功しませんでした。手動での入力が要求されます
+view_login_noUser = 入力されたユーザー名またはパスワードは記録されたものと一致しません
view_login_prompt = ログインしてください
view_login_registerLater = (キャンセル - 登録を後で完成させてください)
view_login_registerLdapSuccess = 新しいLDAPユーザーの登録に成功しました
view_login_registerUser = ユーザの登録
+view_login_welcomeMsg = {0}へようこそ! <br/><br/>
登録を完成させるために次のフィールドを入力/更新してください。<br/>
"OK"をクリックしたら、ログインします。<br/><br/>
view_measureRange_last = 時間の範囲 - 直前
view_measureRange_simple = シンプル...
view_measureRange_start = 時間の範囲 - 開始
@@ -1470,12 +1599,14 @@ view_operationHistoryDetails_error_fetchFailure = オペレーション履歴の
view_operationHistoryDetails_noResults = このオペレーションは値を返しません
view_operationHistoryDetails_operation = オペレーション
view_operationHistoryDetails_parameters = パラメーター
+view_operationHistoryDetails_requestor = 要求者
view_operationHistoryDetails_results = 結果
view_operationHistoryDetails_status = ステータス
view_operationHistoryList_button_forceDelete = 強制削除
view_operationHistoryList_button_runOperation = オペレーションの実行
view_operationHistoryList_notYetStarted = まだ開始していません
view_operationHistoryList_title = オペレーション履歴
+view_operationScheduleDetails_enterParametersBelow = 以下にパラメーターを入力してください...
view_operationScheduleDetails_fieldDefault_description = 説明を見るとためオペレーションを選択してください
view_operationScheduleDetails_fieldDefault_parameters = パラメーターを見るためにオペレーションを選択してください
view_operationScheduleDetails_fieldHelp_description = このスケジュールされたオペレーションのための任意の説明
(例、夜間保守のためのアプリサーバー再起動)
@@ -1489,7 +1620,9 @@ view_portlet_autodiscovery_setting_platforms = 発見されたプラットフォ
view_portlet_configure_definitionDesc = ポートレットのための構成設定
view_portlet_configure_definitionTitle = ポートレット構成
view_portlet_configure_needed = 設定ボタンを押してこのポートレットを構成してください
+view_portlet_configure_notNeeded = 構成はこのポートレットには必要ありません
view_portlet_defaultName_autodiscovery = ディスカバリキュー
+view_portlet_defaultName_favoriteResources = お気に入りリソース
view_portlet_defaultName_groupMetric = リソースグループメトリックグラフ
view_portlet_defaultName_group_alerts = グループ: アラート
view_portlet_defaultName_group_bundles = グループ: バンドルデプロイ
@@ -1523,8 +1656,11 @@ view_portlet_help_autodiscovery = このポートレットは新規に発見さ
view_portlet_help_bundle_deps = このポートレットは構成されたディスプレイクライテリアをベースにした関連するバンドルデプロイを表示します
view_portlet_help_config_updates = このポートレットは構成設定と一致した最近の構成変更を表示します
view_portlet_help_eventcounts = このポートレットは構成されたディスプレイクライテリアに一致するイベント数を表示します
+view_portlet_help_favoriteResources = このポートレットは現在ユーザーのお気に入りリソースを表示します
view_portlet_help_graph = このポートレットはリソースメトリックグラフを表示します
view_portlet_help_inventorySummary = このポートレットは現在ユーザーの閲覧可能なインベントリとメトリック収集率のショートサマリーを表示します
+view_portlet_help_mashup = このポートレットは(iframeを介して)リモートHTTPリクエストが返した内容を表示します
+view_portlet_help_message = このポートレットは静的なHTMLメッセージを表示します。 <i>message</i>
プロパティの構成が必要です。
view_portlet_help_metrics = このポートレットは構成されたディスプレイクライテリアをベースにして関連するメトリックデータのグラフを描きます
view_portlet_help_none = このポートレット用のヘルプは利用できません
view_portlet_help_oobs = このポートレットは 範囲外メトリック条件を表示します
@@ -1556,6 +1692,8 @@ view_portlet_problemResources_config_display_range = ここから数時間遡っ
view_portlet_problemResources_config_display_range2 = {0} から {1} まで
view_portlet_problemResources_maxDisplaySetting = 最大リソース
view_portlet_recentAlerts_config_members = メンバーの選択
+view_portlet_recentAlerts_config_priority_label = 優先アラート
+view_portlet_recentAlerts_config_when = 次の時間以内で
view_portlet_recentAlerts_fail_msg = アラートフィルタリングのために割り当てられたリソースをロードするのに失敗しました
view_portlet_recentlyAdded_error1 = 最近追加されたリソースをロードするのに失敗しました
view_portlet_recentlyAdded_setting_addedPlatforms = 最近追加されたプラットフォーム
@@ -1563,15 +1701,19 @@ view_portlet_results_empty = 指定されたクライテリアの結果は見つ
view_remoteAgentInstall_agentStatus = エージェントのステータス
view_remoteAgentInstall_agentStatusDefault = -ステータスの更新ボタンをクリックしてください-
view_remoteAgentInstall_buttonFindAgent = エージェントの発見
+view_remoteAgentInstall_connInfo = 接続情報
view_remoteAgentInstall_error_1 = エージェントのインストールパスを探している間にエラーが発生しました
+view_remoteAgentInstall_error_2 = 共通の場所で探しているときにエージェントを見つけることができませんでした
view_remoteAgentInstall_error_3 = [{0}] 以下にインストールされたエージェント見つけることができませんでした
view_remoteAgentInstall_error_4 = エージェントのインストールに失敗しました
view_remoteAgentInstall_error_5 = エージェントの開始に失敗しました
view_remoteAgentInstall_error_6 = エージェントの停止に失敗しました
view_remoteAgentInstall_installAgent = エージェントのインストール
+view_remoteAgentInstall_installInfo = エージェントのインストール情報
view_remoteAgentInstall_installPath = エージェントのインストールパス
view_remoteAgentInstall_owner = オーナー
view_remoteAgentInstall_promptHost = エージェントがインストールされている、あるいはこれからインストールされるホスト
+view_remoteAgentInstall_promptInstallPath =
エージェントがインストールされている、あるいはこれからインストールされる場所。どこにインストールされるか確信がないなら、親ディレクトリを入力して、''エージェントの発見''ボタンをクリックしそのディレクトリ以下をスキャンしてください。空のパスを入力したなら、エージェントをインストールするホスト上の共通の場所が探索されます。
view_remoteAgentInstall_promptPassword = SSHを介してホスト上のユーザーを認証するために使われるクレデンシャル
view_remoteAgentInstall_promptPort = SSHサーバーがリスンするポート。指定されなければ、デフォルトは22です。
view_remoteAgentInstall_promptUser = SSHを介してホストに渡されるクレデンシャルを保持するユーザーの名前
@@ -1596,10 +1738,12 @@ view_reports_subsystems = サブシステム
view_resourceResourceGroupList_error_fetchFailure = リソースのグループの取り出しに失敗しました
view_resourceResourceGroupList_error_updateFailure = 割り当てられたリソースグループの更新に失敗しました
view_resourceResourceGroupList_message_updateSuccess = [{0}] のために更新されたグループメンバーシップ.
+view_resource_inventory_activity_changed_by = 更新者
view_resource_inventory_activity_criteria_no_recent_events = 表示クライテリアに基づくイベントはありません
view_resource_inventory_activity_no_recent_alerts = 最近のアラートはありません
view_resource_inventory_activity_no_recent_bundle_deploy = 最近のバンドルデプロイメントはありません
view_resource_inventory_activity_no_recent_config_history = 構成変更履歴はありません
+view_resource_inventory_activity_no_recent_events = 直近24時間以内にイベントはありません
view_resource_inventory_activity_no_recent_metrics = このリソースには最近のメトリックはありません
view_resource_inventory_activity_no_recent_oob = 範囲外の条件はみつかりません
view_resource_inventory_activity_no_recent_operations = 最近のオペレーション履歴はありません
@@ -1613,21 +1757,31 @@ view_resource_monitor_availability_availability = アベイラビリティ
view_resource_monitor_availability_availability_tooltip =
リソースが起動していた時間を停止や無効の時間と比較したパーセンテージ
view_resource_monitor_availability_currentAsOf = このデータは {0} の現在のものです。
view_resource_monitor_availability_currentStatus = 現在のステータス
+view_resource_monitor_availability_currentStatus_value = このリソースは {1} から {0} の状態のままです
view_resource_monitor_availability_disabled = 無効化
view_resource_monitor_availability_disabledTime = 無効化された時間
+view_resource_monitor_availability_disabledTime_tooltip = リソースがDISABLED状態でいた累積時間
view_resource_monitor_availability_disabled_tooltip =
リソースがDISABLEDでいた時間を起動や停止の時間と比較したパーセンテージ
view_resource_monitor_availability_down = 停止
view_resource_monitor_availability_down_tooltip = リソースがDOWNしていた時間を起動や無効化の時間と比較したパーセンテージ
view_resource_monitor_availability_downtime = 停止時間
+view_resource_monitor_availability_downtime_tooltip = リソースがDOWN状態でいた累積時間
view_resource_monitor_availability_loadFailed = アベイラビリティ履歴のロードに失敗しました
view_resource_monitor_availability_mtbf = MTBF
+view_resource_monitor_availability_mtbf_tooltip = 平均故障間隔(Mean Time Before Failure) -
つまり、これはDOWNする前にUP状態で費やされた平均時間を意味します
view_resource_monitor_availability_mttr = MTTR
+view_resource_monitor_availability_mttr_tooltip = 平均復旧時間 (Mean Time To Recovery) -
つまり、これは再度UPする前にDOWN状態で費やされた平均時間を意味します
view_resource_monitor_availability_numDisabled = 無効化回数
+view_resource_monitor_availability_numDisabled_tooltip = リソースがDISABLED状態に入った回数の合計
view_resource_monitor_availability_numFailures = 障害数
+view_resource_monitor_availability_numFailures_tooltip = リソースがDOWN状態に入った回数の合計
view_resource_monitor_availability_summaryError = リソースアベイラビリティのサマリをロードするのに失敗しました
+view_resource_monitor_availability_unknown = このリソースは {0} の間は未知の状態でした。
view_resource_monitor_availability_uptime = 起動時間
+view_resource_monitor_availability_uptime_tooltip = リソースがUP状態でいた累積時間
view_resource_monitor_calltime_average = 平均
view_resource_monitor_calltime_count = 数
+view_resource_monitor_calltime_destination = 呼び出しの宛先
view_resource_monitor_calltime_editFailed = 呼び出し時間データは編集できません
view_resource_monitor_calltime_loadFailed = 呼び出し時間データをロードできません
view_resource_monitor_calltime_lookupFailed = 呼び出し時間のためのリソースをロードできません
@@ -1645,10 +1799,12 @@ view_resource_monitor_table_avg = 平均
view_resource_monitor_table_last = 最新
view_resource_monitor_table_max = 最大
view_resource_monitor_table_min = 最小
+view_resource_title_component_errors_cleanup =
問題に取り組んだ後は、以下のメッセージを削除して全画面の'管理コンポーネントエラー'をクリアする必要があります。
view_resource_title_component_errors_tooltip = 管理コンポーネントエラーの表示。詳細はクリックしてください
view_resource_title_tagUpdateFailed = リソースタグの更新に失敗しました
view_searchBar_defaultPattern = パターンを名前を付けてください
view_searchBar_instructional_failSuggest = サジェッションの作成に失敗しました。可能性のあるエラーをサーバーログから調べてください。
+view_searchBar_instructional_noSuggest = 一件も一致しませんでした。異なるパターンを入力してください。
view_searchBar_instructional_refresh = 保存済みの検索の取り出しに失敗しました。ページをリフレッシュしてください。
view_searchBar_savedSearch_delete = 保存済みの検索 [{0}] を削除するのに失敗しました
view_searchBar_savedSearch_failDelete = [{0}]という名前の保存済み検索を削除するのに失敗しました
@@ -1657,6 +1813,7 @@ view_searchBar_savedSearch_failRename = [{0}]という名前の保存済みの
view_searchBar_savedSearch_failSave = [{0}]という名前の保存済みの検索を作成するのに失敗しました
view_searchBar_savedSearch_rename = 保存済み検索の名前を [{0}] へ変更するのに成功しました
view_searchBar_savedSearch_save = [{0}] という名前の保存済み検索を作成するのに成功しました
+view_searchGUI_loginStatus = ログインステータスが確定できません。サーバーの状態を調べてください
view_selector_assigned = 割り当てられた {0}
view_selector_available = 利用可能な {0}
view_subTab_error_disabled = 無効になったサブタブ [{0}] を選択できません
@@ -1726,11 +1883,20 @@ view_tags_error_1 = タグをロードするのに失敗しました
view_tags_tags = タグ
view_tags_tooltip_1 = クリックするとこのタグを削除します
view_tags_tooltip_2 = クリックするとタグを編集します
+view_tags_tooltip_3 = 次のフォーマットでタグを入力してください: (namespace:)(semantic=)tagname (例 it:env=QA,
or owner=John)
view_testTop_description = このセクションはさまざまなGUIコンポーネントをテストするためのページを含んでいます
view_testTop_title = テスト
+view_titleBar_common_addedFav = [{0}] をお気に入りとして追加しました
+view_titleBar_common_addedFavFailure = [{0}] をお気に入りとして追加するのに失敗しました
+view_titleBar_common_clickToAddFav = クリックするとこれをお気に入りとして追加します
+view_titleBar_common_clickToRemoveFav = クリックするとこれをお気に入りから削除します
view_titleBar_common_loadTagsFailure = [{0}] のためのタグをロードするのに失敗しました
+view_titleBar_common_removedFav = お気に入りから [{0}] を削除しました
+view_titleBar_common_removedFavFailure = お気に入りから [{0}] を削除するのに失敗しました
view_titleBar_common_updateTagsFailure = [{0}] のタグの更新に失敗しました
view_titleBar_common_updateTagsSuccessful = [{0}] のタグが更新されました
+view_titleBar_group_failInfo = ID [{1}] を持つグループ [{0}] に関する一般情報を取得するのに失敗しました
+view_titleBar_group_summary_collapsedTooltip = クリックするとこのグループの詳細情報を表示します
view_titleBar_group_summary_expandedTooltip = クリックするとこのグループの詳細を隠します
view_tree_common_contextMenu_addChartToDashboard = ダッシュボード [{0}] へチャートを追加します
view_tree_common_contextMenu_editPluginConfiguration = [{0}] プラグイン構成を編集します
@@ -1765,6 +1931,7 @@ view_type_resourceTypes = リソースタイプ
view_type_typeTreeLoadFailure = リソースタイプのツリーデータをロードするのに失敗しました
view_upload_alreadyUploaded = ファイルはすでに更新されていました
view_upload_bundleDistFile = 分散ファイル
+view_upload_error_bundleDistFile = バンドル配布ファイルのアップロードエラー
view_upload_error_file = ファイルアップロードエラー
view_upload_error_fileName = ファイルアップロードエラー [{0}]
view_upload_error_fileName_2 = [{0}] のアップロードエラーです。不正なファイルパスを調べてください。
@@ -1780,6 +1947,7 @@ view_upload_tooltip_2 = ファイルアップロードは以前失敗してい
view_upload_upload = アップロード
view_upload_uploadFile = アップロードファイル
widget_colorPicker_tooltip = 新規カラーを選択するためにクリックしてください
+widget_durationItem_inputUnitLessThanTargetUnit = 入力単位はターゲット単位よりも小さいです
widget_durationItem_unitTypeNotSupported = 単位のタイプ [{0}] はこの DurationItem によりサポートされません
widget_jobTriggerEditor_fieldHelp_repeatDuration =
このオペレーションを何回も実行するか、または指定された時間が終了するまで実行し続けます
widget_jobTriggerEditor_fieldHelp_repeatInterval = オペレーションが実行される頻度
@@ -1806,8 +1974,11 @@ widget_jobTriggerEditor_value_nowAndRepeat = 現在 & 繰り返す
widget_jobTriggerEditor_value_on = on
widget_jobTriggerEditor_value_until = Until
widget_recordEditor_error_invalidViewPath = 無効なビューパス: [{0}]
+widget_recordEditor_error_multipleRecords = 複数レコードが見つかりました - 1つだけが期待されています
+widget_recordEditor_error_noRecords = レコードが一つも見つかりませんでした - 1つだけが期待されています
widget_recordEditor_error_operation = オペレーションが失敗しました。エラーが発生しました。
widget_recordEditor_error_operationInvalidValues = オペレーションが失敗しました。 -
一つ以上のフィールドが無効な値を持っています
+widget_recordEditor_error_permissionCreate = [{0}] を新規作成するために必要な権限を持っていません
widget_recordEditor_error_unsupportedOperationType = サポート外のオペレーション タイプ: [{0}]
widget_recordEditor_info_recordCreatedConcise = {0} が作成されました。
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] が作成されました。
@@ -1827,6 +1998,7 @@ widget_resourceFactoryWizard_contentTemplatePrompt = デプロイ時間構成テ
widget_resourceFactoryWizard_createWizardTitle = タイプ [{0}] の新規リソースの作成
widget_resourceFactoryWizard_createWizardWindowTitle = リソース作成ウィザード
widget_resourceFactoryWizard_editConfigStepName = 編集の構成
+widget_resourceFactoryWizard_editConfigStep_nothingToDo = このリソースのために定義が必要な構成は存在しません
widget_resourceFactoryWizard_execute1 = 新規リソースの作成に失敗しました - パッケージバージョンが存在しません
#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion = リソース作成のキャンセル中にパッケージバージョンの削除に失敗しました
@@ -1836,6 +2008,7 @@ widget_resourceFactoryWizard_importFailure = 手動でのリソースのイン
widget_resourceFactoryWizard_importSubmitted = 新規リソースタイプ [{0}] のインポートリクエストが送信されました
widget_resourceFactoryWizard_importWizardTitle = リソースタイプ [{0}] をインポート
widget_resourceFactoryWizard_importWizardWindowTitle = リソースインポートウィザード
+widget_resourceFactoryWizard_infoStepName = リソース情報
widget_resourceFactoryWizard_infoStep_loadFail = アーキテクチャーを利用可能にするのに失敗しました
widget_resourceFactoryWizard_namePrompt = 新規リソース名
widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプレート
@@ -1843,6 +2016,7 @@ widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプ
##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = ファイルアップロードの失敗
widget_resourceFactoryWizard_uploadFileStepName = リソースコンテントファイルのアップロード
+widget_resourceFactoryWizard_uploadInProgress = アップロードは処理中です...
大きなファイルを配布するには数分かかることもあります。
widget_resourceFactoryWizard_versionPrompt = パッケージバージョン
widget_resourceSelector_groupCategory = グループカテゴリ
widget_resourceSelector_pleaseSelectMultipleResource = 一つ以上のリソースを選択してください
commit 3958738a0585044d9491b9787d6b73402d867d82
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 8 09:19:53 2012 -0400
a couple small fixes the server's help section
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index 32e1754..15a55d2 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -1213,17 +1213,16 @@
Restart operations start the server by executing the server start script, typically
run.sh on UNIX or
run.bat on Windows. The following connection settings can be used to configure the
start script execution:
<ul>
-<li>Start Script - the absolute path of the start script (e.g.
"/opt/jboss-eap-5.0/bin/run.sh")</li>
-<li>Start Script Prefix - a prefix command line to be prepended to the start script
command line (e.g. "nohup sudo -u jboss -g jboss")</li>
+<li>Start Script - the absolute path of the start script (e.g.
"/opt/jboss-eap-5.0/jboss-as/bin/run.sh")</li>
+<li>Script Prefix - a prefix command line to be prepended to the start script
command line (e.g. "nohup sudo -u jboss -g jboss")
+ the prefix is also prepsended to the stop script command line if the
Stop operation is configured to
+ stop the app server via script.</li>
<li>Start Script Arguments - arguments to be passed to the start script (e.g.
"--configuration=production")</li>
<li>Start Script Environment - environment variables to be set in the start
script's environment (e.g. "JAVA_HOME=/usr/java/jdk1.6.0_30")</li>
</ul>
These settings are automatically initialized by the JBossAS5 plugin discovery code
to match the currently running
server process' command line and environment.
<p/>
- The settings are not used by the Stop operation, since it stops the server via the
management interface, not via
- a script.
- <p/>
For more detailed descriptions of the settings, see the Connection Settings section
below.
]]>
commit 148d57bd1fd34187115ed93cdecfde046acbaa74
Merge: 756e193 56ca126
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Fri Jun 8 14:41:50 2012 +0200
Merge branch 'master' of
git://git.fedorahosted.org/git/rhq/rhq
commit 756e1932814fa802422d4c06d8ddb0cf3c50f1af
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Fri Jun 8 14:41:42 2012 +0200
[BZ 818174 - Config editor: description of a simple property in list is not show on
add] description added; i18n
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index 71b5abe..71bf7fb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.google.gwt.i18n.client.LocalizableResource.Description;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.AutoFitWidthApproach;
@@ -43,6 +44,7 @@ import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.util.ValueCallback;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
@@ -560,27 +562,26 @@ public class ConfigurationEditor extends LocatableVLayout {
private void addHeaderItems(List<FormItem> fields) {
final String CELL_STYLE = "configurationEditorHeaderCell";
- // TODO: i18n
StaticTextItem nameHeader = new StaticTextItem();
- nameHeader.setValue("Property");
+ nameHeader.setValue(MSG.view_configEdit_property());
nameHeader.setShowTitle(false);
nameHeader.setCellStyle(CELL_STYLE);
fields.add(nameHeader);
StaticTextItem unsetHeader = new StaticTextItem();
- unsetHeader.setValue("Unset?");
+ unsetHeader.setValue(MSG.view_configEdit_unset());
unsetHeader.setShowTitle(false);
unsetHeader.setCellStyle(CELL_STYLE);
fields.add(unsetHeader);
StaticTextItem valueHeader = new StaticTextItem();
- valueHeader.setValue("Value");
+ valueHeader.setValue(MSG.view_configEdit_value());
valueHeader.setShowTitle(false);
valueHeader.setCellStyle(CELL_STYLE);
fields.add(valueHeader);
StaticTextItem descriptionHeader = new StaticTextItem();
- descriptionHeader.setValue("Description");
+ descriptionHeader.setValue(MSG.view_configEdit_description());
descriptionHeader.setShowTitle(false);
descriptionHeader.setCellStyle(CELL_STYLE);
fields.add(descriptionHeader);
@@ -932,6 +933,8 @@ public class ConfigurationEditor extends LocatableVLayout {
final LocatableListGrid summaryTable = new LocatableListGrid(locatorId);
summaryTable.setAlternateRecordStyles(true);
summaryTable.setShowAllRecords(true);
+ // [BZ 822173 - Table layout problem on configuration page.]
+ // setBodyOverflow(Overflow.VISIBLE) && setAutoFitFieldWidths(true)
issue
summaryTable.setBodyOverflow(Overflow.VISIBLE);
summaryTable.setOverflow(Overflow.VISIBLE);
summaryTable.setWidth100();
@@ -1180,7 +1183,7 @@ public class ConfigurationEditor extends LocatableVLayout {
final Window popup = new Window();
popup.setTitle(MSG.view_configEdit_addItem());
popup.setWidth(300);
- popup.setHeight(110);
+ popup.setHeight(140);
popup.setIsModal(true);
popup.setShowModalMask(true);
popup.setShowCloseButton(false);
@@ -1188,6 +1191,9 @@ public class ConfigurationEditor extends LocatableVLayout {
VLayout vLayout = new VLayout();
vLayout.setMargin(10);
+
+ HTMLFlow description = new
HTMLFlow(propertyDefinitionList.getDescription());
+ vLayout.addMember(description);
final DynamicForm form = new DynamicForm();
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 03584c9..792f1b5 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1169,6 +1169,7 @@ view_configEdit_addItem = Add Item to List
view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
view_configEdit_confirm_2 = Are you sure you want to delete this row?
view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+view_configEdit_description = Description
view_configEdit_editRow = Edit Row
view_configEdit_enterPropName = Enter the name of the property to be added.
view_configEdit_error_1 = Configuration is not supported by this Resource.
@@ -1182,8 +1183,11 @@ view_configEdit_msg_2 = Removed properties from the set.
view_configEdit_msg_3 = [{0} {1}] deleted from list.
view_configEdit_msg_4 = Item added to list.
view_configEdit_properties = Properties
+view_configEdit_property = Property
view_configEdit_tooltip_1 = Delete the selected items from the list.
view_configEdit_tooltip_2 = Add an item to the list.
+view_configEdit_unset = Unset?
+view_configEdit_value = Value
view_configEdit_viewRow = View Row
view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 91abd98..ed85095 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1187,6 +1187,7 @@ view_configEdit_addItem = Přidat položku do seznamu
view_configEdit_confirm_1 = Jste si jisti, že chcete smazat vybrané vlastnosti z
množiny?
view_configEdit_confirm_2 = Jste si jisti, že chcete smazat tento řádek?
view_configEdit_confirm_3 = Jste si jisti, že chcete smazat [{0}] vybrané [{1}]?
+view_configEdit_description = Popis
view_configEdit_editRow = Editovat řádek
view_configEdit_enterPropName = Vložte platné jméno vlastnosti, která má být přidána.
view_configEdit_error_1 = Konfigurace pro tento zdroj není podporována.
@@ -1200,8 +1201,11 @@ view_configEdit_msg_2 = Vlastnost odebrána z množiny.
view_configEdit_msg_3 = [{0} {1}] smazáno ze seznamu.
view_configEdit_msg_4 = Položka přidána do seznamu.
view_configEdit_properties = Vlastnosti
+view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 = Smazat vybrané položky ze seznamu.
view_configEdit_tooltip_2 = Přidat položku do seznamu.
+view_configEdit_unset = Nenastaveno?
+view_configEdit_value = Hodnota
view_configEdit_viewRow = Zobrazit řádek
view_configurationDetails_allPropertiesValid = Všechny vlastnosti konfigurace mají platné
hodnoty, takže konfigurace bude uložena.
view_configurationDetails_configNotUpdatedDueToNoChange = Konfigurace nebyla změněna,
protože nová konfigurace je ekvivalentní té stávající.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 16c7629..1712664 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1033,6 +1033,7 @@ view_configEdit_addItem = Eintrag zur Liste hinzufügen
##view_configEdit_confirm_1 = Are you sure you want to delete the selected properties
from the set?
view_configEdit_confirm_2 = Sind Sie sicher dass sie diese Zeile löschen wollen?
##view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+##view_configEdit_description = Description
##view_configEdit_editRow = Edit Configuration Row
##view_configEdit_enterPropName = Enter the name of the property to be added.
##view_configEdit_error_1 = Configuration is not supported by this Resource.
@@ -1046,8 +1047,11 @@ view_configEdit_msg_1 = Eigentschaft [{0}] zur Menge hinzugefügt
view_configEdit_msg_3 = [{0} {1}] aus der Liste gelöscht.
view_configEdit_msg_4 = Eintrag zur Liste hinzugefügt.
view_configEdit_properties = Eigenschaften
+##view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 = Die ausgewählten Einträge aus der Liste löschen.
view_configEdit_tooltip_2 = Einen Eintrag zur Liste hinzufügen.
+##view_configEdit_unset = Unset?
+##view_configEdit_value = Value
##view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
view_configurationDetails_error_updateFailure = Konnte die Konfiguration nicht
aktualisieren
view_configurationDetails_messageConcise = Konfiguration aktualisiert - aktuelle Version
is {0}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 6ee43cb..182f2a7 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -25,12 +25,10 @@ common_button_create_child = 子を作成
common_button_delete = 削除
common_button_delete_all = すべてを削除
common_button_disable = 無効
-common_button_dump_sysInfo_to_log = ダンプシステム情報
common_button_edit = 編集
common_button_enable = 有効
common_button_execute = 実行
common_button_finish = 完了
-common_button_fixedWidth = 固定幅
common_button_import = インポート
common_button_new = 新規
common_button_next = 次へ
@@ -67,8 +65,6 @@ common_label_day = 日
common_label_error = エラー
common_label_filters = フィルター
common_label_hour = 時間
-common_label_item = 項目
-common_label_items = 項目
common_label_month = 月
common_label_none = なし
common_label_none2 = なし
@@ -87,14 +83,11 @@ common_msg_changeAutoDetected = 変更が自動検出されました
common_msg_deleteConfirm = 選択された {0} を削除してもよろしいですか
common_msg_emphasizedNotePrefix = 注意:
common_msg_loading = ロード中...
-common_msg_noItemsToShow = 表示する項目はありません
-common_msg_notYetImplemented = 実装されていません
common_msg_see_more = 詳細...
common_msg_step_x_of_y = ステップ {1} 中 {0} 番め
common_severity_debug = デバッグ
common_severity_error = エラー
common_severity_fatal = 致命的
-common_severity_info = 情報
common_severity_warn = 警告
common_status_canceled = キャンセル
common_status_deferred = 延期
@@ -112,7 +105,6 @@ common_title_add_portlet = ポートレット追加
common_title_address = アドレス
common_title_alerts = アラート
common_title_alerts_range = アラートの範囲
-common_title_ancestry = 先祖
common_title_availability = アベイラビリティ
common_title_available_resources = 利用可能リソース
common_title_average_metrics = 毎分の平均メトリックス
@@ -126,7 +118,6 @@ common_title_compare_metrics = メトリックスの比較
common_title_compatibleGroups = 互換グループ
common_title_compatibleGroups_total = 互換グループの合計
common_title_component_errors = コンポーネントエラー
-common_title_config_update_status = 更新状態
common_title_configuration = 構成
common_title_count = 数
common_title_createTime = 作成時刻
@@ -149,7 +140,6 @@ common_title_end = 終了
common_title_generalProp = 一般プロパティ
common_title_group = グループ
common_title_group_def_total = グループ定義の合計
-common_title_group_member_health = グループメンバーの状態
common_title_groups = グループ
common_title_help = ヘルプ
common_title_host = ホスト
@@ -175,7 +165,6 @@ common_title_new_dashboard = 新規ダッシュボード
common_title_numeric_metrics = 数値メトリックス
common_title_numeric_type = 数値型
common_title_operation = オペレーション
-common_title_operation_status = オペレーションの状態
common_title_operations = オペレーション
common_title_operations_range = オペレーションの範囲
##common_title_over = Over
@@ -298,7 +287,6 @@ dataSource_configurationHistory_updateType = 更新タイプ
dataSource_configurationHistory_updateType_group = グループ
dataSource_configurationHistory_updateType_individual = 個人
dataSource_definitions_loadFailed = メトリック定義のロードに失敗しました
-dataSource_measurementOob_error_fetchFailure = 範囲外情報の測定のロードに失敗しました
dataSource_measurementOob_field_factor = 範囲外係数 (%)
dataSource_measurementOob_field_formattedBaseband = バンド
dataSource_measurementOob_field_formattedOutlier = アウトライナー
@@ -309,7 +297,6 @@ dataSource_operationHistory_error_fetchFailure = オペレーション履歴の
dataSource_operationHistory_field_createdTime = 作成時刻
dataSource_operationHistory_field_operationName = オペレーション名
dataSource_operationHistory_field_startedTime = 開始時刻
-dataSource_operationHistory_field_subject = 要求者
dataSource_operationSchedule_field_description = ノート
dataSource_operationSchedule_field_id = スケジュールID
dataSource_operationSchedule_field_nextFireTime = 次回の実行
@@ -339,10 +326,8 @@ dataSource_resources_field_discoveryTime = 発見時刻
dataSource_resources_field_importTime = インポート時刻
dataSource_resources_field_key = キー
dataSource_resources_field_lastModifiedTime = 最終更新時刻
-dataSource_resources_field_lastModifier = 最終更新者
dataSource_resources_field_location = 場所
dataSource_rpc_error_transformRequestFailure = {0} リクエストの処理中にデータソースで失敗しました
-dataSource_rpc_error_unsupportedArrayFilterType = タイプ {0} の配列フィルタの引き渡しはサポートしていません
dataSource_rpc_error_unsupportedEnumType = RPCDataSource.getEnumArray(Class)へ enum {0}
のための適切なコードブロックを追加してください
dataSource_rpc_no = いいえ
dataSource_rpc_yes = はい
@@ -400,18 +385,13 @@ datasource_templateSchedules_enabled_failed = ID [{2}] を持つリソースタ
datasource_templateSchedules_updated = 選択されたメトリック [{0}] の収集間隔を更新しました
datasource_templateSchedules_updated_detail = ID [{2}] を持つリソースタイプのためにデフォルトでメトリック [{0}]
[{1}] の収集間隔が [{3}] 秒に設定されました
datasource_templateSchedules_updated_failed = ID [{2}] を持つリソースタイプのためにデフォルトでメトリック [{0}]
[{1}] の収集間隔が [{3}] 秒に設定するのに失敗しました
-favorites = お気に入り
-favorites_groups = お気に入りグループ
favorites_recentlyViewed = 最近閲覧した
-favorites_resources = お気に入りリソース
filter_from_date = 開始
filter_to_date = 終了
##group_tree_groupOfResourceType = Group of [{0}]
group_tree_partialClusterTooltip = {1} の中の {0} グループメンバーが ''{2}''
リソースを持っています
-util_ancestry_parentAncestry = 親の先祖 :
util_disambiguationReportDecorator_pluginSuffix = ({0} プラグイン)
util_errorHandler_nullException = 例外は null でした
-util_monitoringRequestCallback_error_checkServerStatusFailure = ログインの状態を決定できません -
サーバーの状態を調べてください
util_rpcManager_activeRequests = {0} アクティブリクエスト
util_userPerm_loadFailGlobal = グローバルな権限をロードするのに失敗しました - 何も許可されません
util_userPerm_loadFailGroup = ID [{0}] のリソースグループに対する権限をロードするのに失敗しました - 何も許可されません
@@ -421,7 +401,6 @@ util_userSession_logoutFail = ログアウトに失敗しました
util_widgetsField_unlimited = 無制限
view_aboutBox_allRightsReserved = All Rights Reserved.
view_aboutBox_buildNumber = ビルド番号:
-view_aboutBox_failedToLoad = プロダクト情報のロードに失敗しました
view_aboutBox_homepage = ホームページ
view_aboutBox_jbossByRedHat = JBoss by Red Hat
view_aboutBox_title = {0}について
@@ -535,29 +514,21 @@ view_admin_downloads_agent_buildNumber = エージェントビルド
view_admin_downloads_agent_help = <p> これは {0}
Agentの更新バイナリJARファイルです。このJARファイルの目的はユーザーがエージェントがまだ存在しないマシン上に新しいエージェントをインストールできるようにすることと、すでにインストール済みのエージェントを更新できるようにするためです。詳細は、このエージェントダウンロードJARで次のように--helpコマンドラインオプションをつけて実行してください。<br/>
<b>java -jar <agent-download.jar> --help</b> </p>
<h3>エージェントのインストール</h3> <p> <b>java -jar
<agent-download.jar>
--install[=<新しいエージェントディレクトリ>]</b><br/>
このコマンドは新しいエージェントをインストールします。もし新しいディレクトリを指定しなければ、デフォルトは"."となります。</p>
<h3>エージェントの更新</h3> <p> <b>java -jar
<agent-download.jar>
--update[=<古いエージェントディレクトリ>]</b><br/>
これはすでにインストールされた既存のエージェントを更新します。もし古い、既存のエージェントがインストールされたディレクトリを指定しなかったなら、"rhq-agent"が仮定されます。</p>
view_admin_downloads_agent_link_label = リンク
view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
-view_admin_downloads_agent_loadError = エージェントバージョン情報が取得できません
view_admin_downloads_agent_md5 = エージェント MD5
view_admin_downloads_agent_version = エージェントバージョン
view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
-view_admin_downloads_bundle_help = <p>
これはバンドルデプロイヤツールで、{0}バンドルの開発者とパッケージ開発者によって使われます。このスタンドアロンツールを使うとバンドルやコンソールからのレシピをテストできるようにします。</p>
view_admin_downloads_bundle_link_label = リンク
view_admin_downloads_bundle_link_value = バンドルデプロイヤー {0} をダウンロード
-view_admin_downloads_bundle_loadError = バンドルデプロイヤー情報が取得できません
view_admin_downloads_cliAlertScriptsDownload = CLIアラートスクリプトのダウンロード
-view_admin_downloads_cliAlertScripts_help =
CLIアラートスクリプトはスクリプト化されたアラート通知を作成するために使うことができる作成済みのスクリプトです。通常、そのスクリプトは特定のアラート定義についての通知として使うためには前もって微調整をする必要があります。
view_admin_downloads_cliAlertScripts_loadError =
ダウンロードするために利用可能なCLIアラートスクリプトにアクセスすることができません
view_admin_downloads_cliAlertScripts_none = ダウンロードするために利用可能なCLIスクリプトが一つも存在しません
view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
view_admin_downloads_cli_buildNumber = CLIビルド
-view_admin_downloads_cli_help = <p>
これはコマンドラインツールで、CLIとして知られているものです。コンソールから実行するスタンドアロンツールで、{0}サーバーに対してコマンドラインインタフェースを提供します。自動化されたタスクを実行するためにCLIやrunスクリプトを介してコマンドを呼び出すことが可能です。CLIのインストール方法と使い方についての詳細情報はドキュメントをご覧ください。</p>
view_admin_downloads_cli_link_label = リンク
view_admin_downloads_cli_link_value = CLI {0} ({1}) をダウンロード
-view_admin_downloads_cli_loadError = CLIバージョン情報が取得できません
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = CLIバージョン
view_admin_downloads_connectorsDownload = コネクタのダウンロード
-view_admin_downloads_connectors_help =
コネクターは製品が{0}によって管理可能であるために必要となるソフトウェアです。RHQエージェントが通信できるように、管理製品にコネクターをインストールします。詳細はドキュメントをご覧ください。
-view_admin_downloads_connectors_loadError = コネクター情報を取得できません
view_admin_downloads_connectors_none = ダウンロードのためのコネクターが見つかりません
view_admin_landing =
このセクションにおいて、{0}グローバル設定が管理されます。これはセキュリティ構成、プラグイン設定、RHQサーバーとエージェントの管理を含みます。
view_admin_measTemplates_updateExisting_title = 既存スケジュールの更新
@@ -579,7 +550,6 @@ view_admin_plugins_enabledServerPluginsFailure = サーバープラグインの
view_admin_plugins_hideDeleted = 削除済みを隠す
view_admin_plugins_hideUndeployed = アンデプロイを隠す
view_admin_plugins_loadFailure = プラグインデータをロードするのに失敗しました
-view_admin_plugins_purgedAgentPlugins = エージェントプラグイン {0}
をパージするための準備をしています。これは数分かかるかもしれません。なぜなら、そのプラグインからのすべてのタイプ定義は最初にシステムからパージされなければならないからです。それらのプラグインはパージされるまでの間このページで見え続けます。パージが実行中はそのプラグインを再インストールしてはいけないことに留意してください。さもなければ、失敗することでしょう。したがって、このパージが完了するまでシステムへプラグインの再インストールをお待ちください。
view_admin_plugins_purgedAgentPluginsFailure = エージェントプラグインのパージに失敗しました
view_admin_plugins_purgedServerPlugins = パージされたサーバープラグイン: {0}.
view_admin_plugins_purgedServerPluginsFailure = サーバープラグインのパージに失敗しました
@@ -592,11 +562,9 @@ view_admin_plugins_scanComplete = 更新されたプラグインのためのス
view_admin_plugins_scanFailure = 更新されたプラグインのためのスキャンが失敗しました
view_admin_plugins_server = サーバー
view_admin_plugins_serverConfig = プラグイン構成
-view_admin_plugins_serverConfig_badSettings = 正しい設定を入力してください
view_admin_plugins_serverConfig_saveFailed = 設定の保存に失敗しました
view_admin_plugins_serverConfig_settingsSaved = 設定が保存されました
view_admin_plugins_serverControls = コントロール
-view_admin_plugins_serverControls_badParams = 正しいパラメーターを入力してください
view_admin_plugins_serverControls_clickForError = エラーメッセージをクリックしてください
view_admin_plugins_serverControls_invokeFailure = コントロールの呼び出しに失敗しました
view_admin_plugins_serverControls_name = コントロール
@@ -634,7 +602,6 @@ view_admin_systemSettings_DriftFilePurge_desc = バックエンドからパー
view_admin_systemSettings_DriftFilePurge_name = 未使用ドリフトファイルの削除
view_admin_systemSettings_EnableAgentAutoUpdate_desc =
サーバーがエージェントが自動更新することを許すかどうかを決定します。もしこれが無効にされているのであれば、サーバーからエージェントのディストリビューションをダウンロードすることはできません。
view_admin_systemSettings_EnableAgentAutoUpdate_name = エージェントの自動更新を有効にする
-view_admin_systemSettings_EnableDebugMode_desc = 有効であれば、サーバーはデバッグモードに入ります
view_admin_systemSettings_EnableDebugMode_name = デバッグモードを有効にする
view_admin_systemSettings_EnableExperimentalFeatures_desc =
有効であれば、現在の製品に含まれる任意の実験的機能が利用可能になります
view_admin_systemSettings_EnableExperimentalFeatures_name = 実験的機能を有効にする
@@ -644,7 +611,6 @@ view_admin_systemSettings_JAASProvider_desc = ユーザーIDを決定するの
view_admin_systemSettings_JAASProvider_name = LDAPの有効化
view_admin_systemSettings_LDAPBaseDN_desc = ユーザ認証の間にユーザー名とパスワードを検索するディレクトリツリーのベース。例:
ou=People,dc=redhat,dc=com
view_admin_systemSettings_LDAPBaseDN_name = サーチベース
-view_admin_systemSettings_LDAPBindDN_desc =
LDAPユーザーデータベースの問い合わせ時にLDAPサーバーに接続するためのユーザー名。これは普通はマネージャーユーザーの完全なLDAP識別名 (DN) になる。例:
cn=Manager,dc=redhat,dc=com
view_admin_systemSettings_LDAPBindDN_name = ユーザー名
view_admin_systemSettings_LDAPBindPW_desc =
LDAPユーザーデータベースの問い合わせ時にLDAPサーバーに接続するためのユーザーのクレデンシャル
view_admin_systemSettings_LDAPBindPW_name = パスワード
@@ -670,7 +636,6 @@ view_admin_systemSettings_fixBeforeSaving = 保存前に無効な値を修正し
view_admin_systemSettings_group_baseline = 自動ベースライン構成プロパティ
view_admin_systemSettings_group_dataMgr = データマネージャー構成プロパティ
view_admin_systemSettings_group_drift = ドリフトサーバー構成設定
-view_admin_systemSettings_group_general = 全体構成プロパティ
view_admin_systemSettings_group_ldap = LDAP構成プロパティ
view_admin_systemSettings_saveFailure = システム設定の保存に失敗しました
view_admin_systemSettings_savedSettings = システムプロパティの保存に成功しました
@@ -689,7 +654,6 @@ view_admin_systemSettings_serverDetails_tz = サーバータイムゾーン
view_admin_topology = トポロジー
view_alert_common_tab_conditions = 条件
view_alert_common_tab_conditions_expression = アラート発火
-view_alert_common_tab_conditions_expression_tooltip =
全体の条件がtrueであると認められるために、条件の一部またはすべてがtrueと評価されなければならないかどうか決定します
view_alert_common_tab_conditions_modal_title = 条件追加
view_alert_common_tab_conditions_recovery_disabled = このアラートはそのアラート定義が無効化される原因となりました
view_alert_common_tab_conditions_recovery_enabled = トリガー ''{0}''
が再び有効化される
@@ -710,7 +674,6 @@ view_alert_common_tab_conditions_type_metric_calltime_change_verb =
少なくと
view_alert_common_tab_conditions_type_metric_calltime_delta_grows = 上昇
view_alert_common_tab_conditions_type_metric_calltime_delta_other = 変化
view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = 縮小
-view_alert_common_tab_conditions_type_metric_calltime_destination = 呼び出しの宛先が一致
view_alert_common_tab_conditions_type_metric_calltime_threshold = 呼び出し時間の閾値
view_alert_common_tab_conditions_type_metric_change = メトリック値の変換
view_alert_common_tab_conditions_type_metric_range_inside_exclusive = メトリック値の範囲 [{0}] :
[{1}] と [{2}] の間 (境界値を含まない)
@@ -726,7 +689,6 @@ view_alert_common_tab_dampening = 減衰
view_alert_common_tab_dampening_category_consecutive_count = 連続
view_alert_common_tab_dampening_category_consecutive_count_tooltip =
条件設定がX回連続してtrueであればアラートが引き起こされます。
view_alert_common_tab_dampening_category_duration_count = 時間間隔
-view_alert_common_tab_dampening_category_duration_count_tooltip =
アラートは与えられた時間内で条件設定がtrueであることがX回発生するたびに引き起こされます
view_alert_common_tab_dampening_category_none = なし
view_alert_common_tab_dampening_category_none_tooltip =
減衰は無効化されています。その条件がtrueになるたびに、アラートが引き起こされます。
view_alert_common_tab_dampening_category_partial_count = 直近のN個の評価
@@ -734,7 +696,6 @@ view_alert_common_tab_dampening_category_partial_count_tooltip =
アラートは
view_alert_common_tab_dampening_consecutive_occurrences_label = 発生
view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip =
アラートが引き起こされる前に条件設定が連続してtrueでなけらればならない回数
view_alert_common_tab_dampening_duration_occurrences_label = 発生
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip =
アラートが引き起こされる前に与えられた時間内で条件設定が連続してtrueでなけらればならない回数
view_alert_common_tab_dampening_duration_period_label = 時間間隔
view_alert_common_tab_dampening_duration_period_label_tooltip =
与えられた発生回数がtrueであるかどうかを調べるために条件設定がテストされるタイムスパン
view_alert_common_tab_dampening_partial_evalatuions_label = 評価
@@ -751,9 +712,6 @@ view_alert_common_tab_notifications_sender = センダー
view_alert_common_tab_notifications_status = ステータス
view_alert_common_tab_recovery = リカバリ
view_alert_definition_condition_editor_availabilityDuration = アベイラビリティ間隔
-view_alert_definition_condition_editor_availabilityDuration_tooltip =
アベイラビリティの条件をトリガーするために保存されていなければならないアベイラビリティ状態の変化と間隔を指定します。その間隔は分単位で指定されます。エージェントがアベイラビリティ状態の変更を検出して問題を修正できるようにするためには、エージェントに指定する時間としては、数分という長さで十分です。
-view_alert_definition_condition_editor_availabilityDuration_tooltip_duration =
アベイラビリティの条件を満たすためにリソースが指定されたアベイラビリティになる必要がある時間の長さ(分)です。
-view_alert_definition_condition_editor_availability_tooltip =
条件のトリガーとなるアベイラビリティ状態の変化を指定します
view_alert_definition_condition_editor_availability_value = アベイラビリティ
view_alert_definition_condition_editor_common_avg = 平均
view_alert_definition_condition_editor_common_max = 最大
@@ -767,14 +725,11 @@ view_alert_definition_condition_editor_drift_tooltip = この条件はドリフ
view_alert_definition_condition_editor_event_regex = 正規表現
view_alert_definition_condition_editor_event_regex_tooltip =
もし指定されたなら、これは正規表現であり、この条件を引き起こすために収集されたイベントメッセージに一致しなければなりません。
view_alert_definition_condition_editor_event_severity = イベント重大度
-view_alert_definition_condition_editor_event_tooltip =
この条件を引き起こすためにイベントメッセージが報告される必要があるイベント重大度を指定します。もしオプションとなる正規表現を指定したなら、イベントメッセージはその条件が引き起こされるためにイベントメッセージも正規表現に一致しなければなりません。
view_alert_definition_condition_editor_metric_baseline_percentage = ベースラインパーセンテージ
view_alert_definition_condition_editor_metric_baseline_percentage_tooltip =
選択された比較演算子を使用して選択されたベースライン値のパーセンテージを比較するときに収集されたメトリック値はこの条件を引き起こします。
-view_alert_definition_condition_editor_metric_baseline_tooltip =
条件を引き起こすために違反されることが必要となるベースライン値を指定します。指定する値は、与えられたベースライン値のパーセンテージになります。
view_alert_definition_condition_editor_metric_baseline_value = ベースライン
view_alert_definition_condition_editor_metric_calltime_change_percentage = パーセンテージの変化
view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip =
少なくとも選択された呼び出し時間リミット値のパーセンテージと異なるとき、収集された呼び出し時間はこの条件を引き起こします
-view_alert_definition_condition_editor_metric_calltime_change_tooltip =
条件を引き起こす、少なくとも指定された量の変化が起こったときの、呼び出し値を指定します。(最小、最大、平均の呼び出し時間の値)をチェックするための呼び出し時間のリミットの種別と発生に必要な変化のパーセンテージを指定しなければなりません。
view_alert_definition_condition_editor_metric_calltime_common_comparator = コンパレータ
view_alert_definition_condition_editor_metric_calltime_common_comparator_changes = 変化
view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = 増大
@@ -784,19 +739,14 @@ view_alert_definition_condition_editor_metric_calltime_common_limit
= 呼び出
view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip =
与えられた値と比較されるべき呼び出し時間リミットの値
view_alert_definition_condition_editor_metric_calltime_common_name = 呼び出し時間メトリック
view_alert_definition_condition_editor_metric_calltime_common_regex = 正規表現
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip =
もし指定されるなら、これは正規表現であり、条件を引き起こすために呼び出しの宛先と一致する必要があります
view_alert_definition_condition_editor_metric_calltime_threshold_tooltip =
違反したときに条件を引き起こす呼び出し時間の閾値を指定します。指定する値はオプションの単位を伴う絶対値になります。(最小、最大、平均の呼び出し時間の値)と値を比較するため呼び出し時間のリミットの種別を指定しなければなりません。
view_alert_definition_condition_editor_metric_calltime_threshold_value = 呼び出し時間の値
view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip =
選択された比較子(comparator)を使って比較するとき条件が引き起こされるメトリックの閾値
view_alert_definition_condition_editor_metric_change_tooltip =
条件を引き起こすために変更しなければならない値を持つメトリックを指定します
view_alert_definition_condition_editor_metric_common_definition_not_found =
メトリック定義が見つかるべきです - 何かがおかしいです
-view_alert_definition_condition_editor_metric_nometrics =
すべてを連結して使うとき、複数条件内に同じメトリックを使うことはできません。この警告は現在の条件内でのすべての利用可能なメトリックスを使います。
view_alert_definition_condition_editor_metric_range_comparator = 比較演算子
-view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive =
内部で、境界値を含まない
-view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive =
内部で、境界値を含む
view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive = 外部で、
境界値を含まない
view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive = 外部で、
境界値を含む
-view_alert_definition_condition_editor_metric_range_comparator_tooltip =
メトリック値が、範囲内か範囲外のとき、この条件のトリガーになるかどうかを決定します。
view_alert_definition_condition_editor_metric_range_hivalue = 高値
view_alert_definition_condition_editor_metric_range_hivalue_tooltip = 範囲での高値の閾値
view_alert_definition_condition_editor_metric_range_lovalue = 低値
@@ -816,12 +766,9 @@ view_alert_definition_condition_editor_metric_trait_change_value =
トレイト
view_alert_definition_condition_editor_metricswarning =
すべての連結を使うときは同じメトリックを使う複数の条件を指定することはできません。この警告定義はそのメトリック [{0}] を使う複数の条件を持ちます。
view_alert_definition_condition_editor_operation_status = オペレーションステータス
view_alert_definition_condition_editor_operation_tooltip =
条件を引き起こすために選択されたが実行されるとき発生しなければならない結果を指定します
-view_alert_definition_condition_editor_operator_availability_durationDown = 停止中の状態
-view_alert_definition_condition_editor_operator_availability_durationNotUp = 起動しない状態
view_alert_definition_condition_editor_operator_availability_goesDisabled = 無効化になる
view_alert_definition_condition_editor_operator_availability_goesDown = 停止する
view_alert_definition_condition_editor_operator_availability_goesNotUp = 起動しない
-view_alert_definition_condition_editor_operator_availability_goesUnknown = 不明な状態になる
view_alert_definition_condition_editor_operator_availability_goesUp = 起動する
view_alert_definition_condition_editor_option_availability = アベイラビリティの変化
view_alert_definition_condition_editor_option_drift = ドリフトの検出
@@ -855,12 +802,7 @@ view_alert_definition_notification_editor_delete_confirm = 選択されたアラ
view_alert_definition_notification_editor_field_configuration = 構成
view_alert_definition_notification_editor_field_configuration_loadFailed =
通知構成プレビューの取得に失敗しました
view_alert_definition_notification_editor_field_configuration_not_loaded = 未知
-view_alert_definition_notification_editor_field_sender = 送信者
-view_alert_definition_notification_editor_loadFailed = アラート送信者を取得できません
-view_alert_definition_notification_editor_loadFailed_single = アラート送信者構成定義を取得できません
-view_alert_definition_notification_editor_none_available = アラート送信者が利用できません
view_alert_definition_notification_editor_saveFailed = 通知の構成を保存できません
-view_alert_definition_notification_editor_sender = 通知送信者
view_alert_definition_notification_editor_title_add = 通知の追加
view_alert_definition_notification_editor_title_edit = 通知の編集
view_alert_definition_notification_operation_editor_common_operation = オペレーション
@@ -872,11 +814,7 @@ view_alert_definition_notification_operation_editor_mode_unknown =
未知のオ
view_alert_definition_notification_operation_editor_operations_loadFailed =
利用可能なオペレーションのリストをロードするのに失敗しました
view_alert_definition_notification_operation_editor_operations_no_parameters =
この操作は一つもパラメーターを取りません
view_alert_definition_notification_operation_editor_relative_ancestor = 検索を開始
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
タイプの祖先を取得できません
-view_alert_definition_notification_operation_editor_relative_ancestor_root = ルートの祖先タイプ
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip =
タイプ階層のトップを選択します。それはタイプによるフィルターのために子孫のツリーを検索する元となります
view_alert_definition_notification_operation_editor_relative_descendant = 次によるフィルター
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
選択したタイプに対応する複数のリソースが存在するときリソースをユニークに識別する具体的な名前。これは選択したタイプ階層においてそのリソースタイプの唯一のリソースしか存在しない場合はオプションです。
view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
タイプの子孫を取得できません
view_alert_definition_notification_operation_editor_relative_descendant_tooltip =
検索の開始セクションで定義されるルートタイプの下で検索するリソースタイプ
view_alert_definition_notification_operation_editor_specific_pick_button = 選択
@@ -915,7 +853,6 @@ view_alert_definitions_update_failure = アラート定義の更新に失敗し
view_alert_definitions_update_success = アラート定義の更新に成功しました
view_alert_details_field_ack_at = 次の場所で確認済みです
view_alert_details_field_ack_by = 次の人によって確認済みです
-view_alert_details_field_recovery_info = リカバリ情報
##view_alert_details_field_resource_ancestry = Resource Ancestry
##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = アラートの詳細を取り出すのに失敗しました
@@ -945,11 +882,9 @@ view_alerts_field_enabled = 有効
view_alerts_field_modified_time = 修正時刻
view_alerts_field_name = 名前
view_alerts_field_parent = 親
-view_alerts_field_priority = 優先度
view_alerts_field_protected = 保護されている
view_alerts_field_protected_tooltip =
もしtrueなら、この定義は親定義による変更から保護されています。他の言葉で言えば、その親定義設定はこの定義を上書きしません。
view_alerts_loadFailed = アラートデータを取り出すのにしました
-view_alerts_table_filter_priority = 優先度フィルター
view_alerts_table_title_group = グループアラート履歴
view_alerts_table_title_resource = リソースアラート履歴
view_autoDiscoveryQ_committed = コミット済み
@@ -982,27 +917,19 @@ view_bundleVersion_loadFailure = バンドルバージョンデータをロー
view_bundle_bundle = バンドル
view_bundle_bundleDeployment = バンドルデプロイメント
view_bundle_bundleDeployments = バンドルデプロイメント
-view_bundle_bundleDestinations = バンドル宛先
view_bundle_bundleFiles = バンドルファイル
view_bundle_bundleType = バンドルタイプ
view_bundle_bundleVersion = バンドルバージョン
view_bundle_bundleVersions = バンドルバージョン
view_bundle_bundles = バンドル
-view_bundle_createWizard_bundleDistro = バンドル配布
-view_bundle_createWizard_cancelFailure = バンドル [{0}], バージョン = [{1}] の作成の完全なキャンセルに失敗しました -
バンドルはデータベースにまだ残っているかもしれません
view_bundle_createWizard_cancelSuccessful = バンドル [{0}], バージョン = [{1}] の作成をキャンセルしました
view_bundle_createWizard_clickToUploadRecipe = レシピファイルのロードするためにクリックしてください
view_bundle_createWizard_createFailure = バンドルを作成するのに失敗しました
view_bundle_createWizard_createSuccessful = バージョン [{1}] の [{0}] という名前のバンドルの作成に成功しました
view_bundle_createWizard_enterRecipe = 正しいレシピを提供してください
-view_bundle_createWizard_enterUrl = バンドル配布ファイルをダウンロードできる正しいURLを入力してください
-view_bundle_createWizard_failedToUploadDistroFile = バンドル配布ファイルのアップロードに失敗しました
view_bundle_createWizard_failedToUploadFile = バンドルファイルのアップロードに失敗しました
-view_bundle_createWizard_loadBundleFileFailure = サーバーからバンドルファイル情報の取得ができません
-view_bundle_createWizard_noAdditionalFilesNeeded = このバンドルのためにアップロードされる必要がある追加ファイルはありません
view_bundle_createWizard_noBundleTypesAvail = バンドルタイプが利用できません
view_bundle_createWizard_noBundleTypesSupported = バンドルタイプは一つもサポートされていません -
バンドルデプロイメントをサポートする正しいプラグインをデプロイしなければなりません
-view_bundle_createWizard_provideBundleDistro = バンドル配布の提供
view_bundle_createWizard_recipeOption = レシピ
view_bundle_createWizard_title = バンドル作成
view_bundle_createWizard_uploadInProgress = アップロード中です... この操作は大きいファイルの場合には数分かかることもあります
@@ -1011,44 +938,25 @@ view_bundle_createWizard_uploadStepName = バンドルファイルのアップ
view_bundle_createWizard_urlOption = URL
view_bundle_createWizard_windowTitle = バンドル作成ウィザード
view_bundle_createWizard_youMustChooseOne = バンドルを作成するためのオプションを選択しなければなりません
-view_bundle_deleteConfirm = このバンドルを削除してもよろしいですか? このバンドルのすべてのバージョン、宛先、デプロイも削除されます。
view_bundle_deploy = デプロイ
view_bundle_deployDir = デプロイディレクトリ
-view_bundle_deployWizard_deployStep = 宛先プラットフォームへのバンドルのデプロイ
view_bundle_deployWizard_deploying = デプロイ中...
view_bundle_deployWizard_deploymentCreated = 作成されたデプロイメント...
view_bundle_deployWizard_deploymentCreatedDetail = ディスクリプション [{1}] の付いたデプロイメント [{0}]
を作成しました
view_bundle_deployWizard_deploymentCreatedDetail_concise = デプロイメント [{0}] を作成しました
view_bundle_deployWizard_deploymentScheduled = バンドルデプロイがスケジュールされました!
-view_bundle_deployWizard_deploymentScheduledDetail = バンドルデプロイメント [{0}] を宛先グループ [{1}]
にスケジュールしました
view_bundle_deployWizard_deploymentScheduledDetail_concise = バンドルデプロイメントがスケジュールされました
view_bundle_deployWizard_destinationCreatedDetail = ディスクリプション [{1}] の付いたデプロイメント [{0}]
を作成しました
-view_bundle_deployWizard_destinationCreatedDetail_concise = 宛先 [{0}] を作成しました
view_bundle_deployWizard_error_1 = キャンセルについての新しいデプロイメントの削除に失敗しました
-view_bundle_deployWizard_error_10 = 宛先の作成に失敗しました。それはすでに存在するかもしれません。
(注意:宛先ビューから既存の宛先デプロイのため)
view_bundle_deployWizard_error_11 = 定義済みデプロイメントの検索に失敗しました
view_bundle_deployWizard_error_12 = 定義済みバンドルの検索に失敗しました
-view_bundle_deployWizard_error_2 = キャンセルについての新しい宛先の削除に失敗しました
view_bundle_deployWizard_error_3 = デプロイメントのスケジュールに失敗しました!
view_bundle_deployWizard_error_4 = デプロイメントのスケジュールに失敗しました: {0}
view_bundle_deployWizard_error_5 = デプロイメントの作成に失敗しました!
view_bundle_deployWizard_error_6 = デプロイメントの作成に失敗しました: {0}
view_bundle_deployWizard_error_7 = デプロイメント名の取得に失敗しました
view_bundle_deployWizard_error_8 = ドロップダウンから正しいリソースグループを選択しなければなりません
-view_bundle_deployWizard_error_9 = 次ページでの新しい宛先の削除に失敗しました
-view_bundle_deployWizard_error_noBundleConfig =
バンドルターゲット情報の取得に失敗しました。選択したグループはバンドルデプロイメントのターゲットに成り得る正当な互換グループですか?
-view_bundle_deployWizard_getConfigSkip = このバンドルバージョンには構成は必要ありません
view_bundle_deployWizard_getConfigStep = デプロイメント構成の設定
-view_bundle_deployWizard_getDestStep = 新しい宛先
-view_bundle_deployWizard_getDest_deployDir = ルートデプロイディレクトリ (宛先プラットフォーム上での)
-view_bundle_deployWizard_getDest_deployDir_help =
そのバンドルがデプロイされるディレクトリ。このディレクトリはすべてのリソースに関するすべてのデプロイ用として同じものが使われますが、宛先の基本ディレクトリの場所に対する相対ディレクトリになります。このことは、異なるターゲットリソースについて基本ディレクトリの配置がどこにあるかということに依存して、その絶対ディレクトリは異なるターゲットリソースによって異なるパスになる可能性があることを意味しています。
-view_bundle_deployWizard_getDest_desc = 宛先の説明
-view_bundle_deployWizard_getDest_destBaseDirName = 基本の配置
-view_bundle_deployWizard_getDest_group_help =
メンバーがすべてのバンドルデプロイのための宛先ターゲットとなるようなグループ。バンドルデプロイをサポートするリソースを含む互換グループのみが選択可能です。
-view_bundle_deployWizard_getDest_name = 宛先名
-view_bundle_deployWizard_getDest_name_help =
宛先名。それはリソースの特定のグループと特定のバンドルのリソースに関する宛先ディレクトリを識別します。
-view_bundle_deployWizard_getInfoStep = デプロイ情報の提供
-view_bundle_deployWizard_getInfo_clean = クリーンデプロイですか? (宛先プラットフォーム上でのデプロイディレクトリを掃除する)
view_bundle_deployWizard_getInfo_deploymentDesc = デプロイの説明
view_bundle_deployWizard_getInfo_deploymentName = デプロイ名
view_bundle_deployWizard_getOptionsStep = デプロイオプション
@@ -1063,7 +971,6 @@ view_bundle_deployWizard_selectVersion_live = 動作バージョン [{0}]
view_bundle_deployWizard_selectVersion_select = リストからバージョンを選択してください:
view_bundle_deployWizard_title = バンドルデプロイのウィザード
view_bundle_deploy_action = アクション
-view_bundle_deploy_backButton = 宛先に戻る
view_bundle_deploy_clickForError = エラーメッセージのアイコンをクリックしてください
view_bundle_deploy_deleteConfirm = このバンドルデプロイを削除してもよろしいですか?
view_bundle_deploy_deleteFailure = バンドルデプロイ [{0}] の削除に失敗しました
@@ -1083,25 +990,14 @@ view_bundle_deploy_time = デプロイ名
view_bundle_deployed = デプロイ
view_bundle_deployments = デプロイ
view_bundle_dest_backToBundle = バンドルへ戻る
-view_bundle_dest_baseDirName = 基本の配置
view_bundle_dest_created = 作成された
-view_bundle_dest_deleteConfirm = このバンドル宛先を削除してもよろしいですか?
これはデータベースから削除するだけです。つまり、リモートマシンのこの宛先にデプロイされたすべてのバンドルの内容は残り続けます
-view_bundle_dest_deleteFailure = バンドル宛先 [{0}] の削除に失敗しました
-view_bundle_dest_deleteSuccessful = バンドル宛先 [{0}] の削除に成功しました
view_bundle_dest_deployDir = デプロイディレクトリ
view_bundle_dest_group = グループ
view_bundle_dest_lastDeployedVersion = 最後にデプロイされたバージョン
view_bundle_dest_lastDeploymentDate = 最後のデプロイされたい日付
view_bundle_dest_lastDeploymentStatus = 最後にデプロイされたステータス
-view_bundle_dest_loadFailure = バンドルの宛先をロードするのに失敗しました
-view_bundle_dest_loadFailureVersionInfo = デプロイされたバージョン情報のロードに失敗しました
view_bundle_dest_purgeConfirm = この操作はすべてのリモートマシンからバンドルコンテントを除去します。よろしいですか?
-view_bundle_dest_purgeFailure = リモートマシンの一部あるいはすべてからのバンドル宛先 [{0}] の除去に失敗しました
-view_bundle_dest_purgeSuccessful = リモートマシンの一部あるいはすべてからのバンドル宛先 [{0}] の除去に成功しました
view_bundle_dest_revertConfirm = これはすべてのリモートマシンを以前のバンドルデプロイメントへ戻します。これをしてもよろしいですか?
-view_bundle_dest_tagUpdateFailure = バンドル宛先タグの更新に失敗しました
-view_bundle_dest_tagUpdateSuccessful = バンドル宛先タグの更新に成功しました
-view_bundle_destinations = 宛先
view_bundle_fileListView_fileSize = ファイルサイズ
view_bundle_fileListView_loadFailure = バンドルファイルデータをロードするのに失敗しました
view_bundle_fileListView_md5 = MD5
@@ -1114,7 +1010,6 @@ view_bundle_list_deleteFailure = バンドル [{0}] の削除に失敗しまし
view_bundle_list_deleteSuccessful = バンドル [{0}] の削除に成功しました
view_bundle_list_deletesFailure = バンドルの削除に失敗しました
view_bundle_list_deletesSuccessful = バンドルの削除に成功しました
-view_bundle_list_destinationsCount = 宛先数
view_bundle_list_error1 = [{0}] をデプロイするためのバンドルのロードに失敗しました
view_bundle_list_error2 = [{0}] をデプロイするための単一バンドルの取得に失敗しました
view_bundle_list_error3 = バンドルのロードに失敗しました
@@ -1132,18 +1027,14 @@ view_bundle_revertWizard_confirmStep_confirmation = 動作中のデプロイを
view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment =
動作中のデプロイが見つかりません。取り消しができません。
view_bundle_revertWizard_confirmStep_liveDeployment = 動作中のデプロイ
view_bundle_revertWizard_confirmStep_name = 取り消しデプロイ確認
-view_bundle_revertWizard_confirmStep_noLiveDeployment = その宛先 [{0}] 用の動作中のデプロイは見つかりませんでした
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise =
その宛先用の動作中のデプロイは見つかりませんでした
view_bundle_revertWizard_confirmStep_noPriorDeployment = 以前のデプロイ [{1}] が存在しないので動作中のデプロイ
[{0}] は取り消すことができませんでした
view_bundle_revertWizard_confirmStep_noPriorDeployment_concise =
以前のデプロイが存在しないので動作中のデプロイは取り消すことができませんでした
view_bundle_revertWizard_confirmStep_prevDeployment = 以前のデプロイ
view_bundle_revertWizard_getInfoStep_cleanDeploy = デプロイを削除しますか?
(これは古い、既存のデプロイディレクトリを取り消しデプロイを開始する前に削除します)
view_bundle_revertWizard_getInfoStep_getNameFailure = 取り消しデプロイ名の取得に失敗しました
-view_bundle_revertWizard_getInfoStep_name = 取り消し情報の提供
view_bundle_revertWizard_getInfoStep_revertDeployDesc = デプロイ記述の取り消し
view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [取り消し 前] {0} [取り消し 後] {1}
view_bundle_revertWizard_getInfoStep_revertDeployName = デプロイ名の取り消し
-view_bundle_revertWizard_revertStep_name = 宛先プラットフォームへバンドルをデプロイ
view_bundle_revertWizard_revertStep_reverting = 取り消し中...
view_bundle_revertWizard_revertStep_scheduled = デプロイの取り消しのスケジュールに成功しました。
view_bundle_revertWizard_revertStep_scheduledDetails = リソースグループ [{1}] からバンドルデプロイ [{0}]
の取り消しのスケジュールに成功しました
@@ -1161,12 +1052,11 @@ view_bundle_version_loadFailure = バンドルバージョンのロードに失
view_bundle_versions = バージョン
view_configCompare_comparingConfigs = 構成の比較
view_configCompare_configCompare = 構成の比較
-view_configEdit_addItem = リストに項目を追加
view_configEdit_confirm_1 = その集まりから選択されたプロパティを削除してもよろしいですか?
view_configEdit_confirm_2 = この行を削除してもよろしいですか?
view_configEdit_confirm_3 = [{1}] が選択された [{0}] を削除してもよろしいですか?
+##view_configEdit_description = Description
view_configEdit_editRow = 行の編集
-view_configEdit_enterPropName = 追加するプロパティの名前を入力してください
view_configEdit_error_1 = 構成はこのリソースでサポートされていません
view_configEdit_error_2 = 接続設定はこのリソースでサポートされていません
view_configEdit_error_3 = [{0}] という名前のプロパティを追加できません。プロパティ名はその集まりですでに使われています。
@@ -1178,8 +1068,11 @@ view_configEdit_msg_2 = セットからプロパティを取り除きました
view_configEdit_msg_3 = [{0} {1}] がリストから削除されました
view_configEdit_msg_4 = リストに追加されたアイテム
view_configEdit_properties = プロパティ
+##view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 = リストから選択されたアイテムが削除します
view_configEdit_tooltip_2 = リストにアイテムを追加します
+##view_configEdit_unset = Unset?
+##view_configEdit_value = Value
view_configEdit_viewRow = 行の閲覧
view_configurationDetails_allPropertiesValid = すべての構成プロパティは正しい値なので、この構成は保存可能です
view_configurationDetails_configNotUpdatedDueToNoChange =
構成は更新されませんでした。なぜなら新しい構成は現在の構成と同一だからです
@@ -1222,7 +1115,6 @@ view_dashboardManager_saved = ダッシュボード {0} をサーバーへ保存
view_dashboardManager_success = ダッシュボードを保存しました
view_dashboard_favorites_error1 = 好みのリソースをロードするのに失敗しました
view_dashboardsManager_error1 = 新しいダッシュボードを追加するのに失敗しました
-view_dashboardsManager_message_title_details =
<h1>{0}へようこそ</h1>\n<p>RHQプロジェクトは一連のコア機能を抽象化するプラグインベースのシステム管理スイートで、複数のプロダクトやプラットフォームのための統合化されたシステム管理機能を提供します。このプロジェクトはレイヤ化されたモジュールによって設計されていて、デプロイのための柔軟なアーキテクチャを提供します。それは企業全体に対する監査と履歴の管理を提供するコアとなるユーザーインタフェースを導入します。サーバー/エージェントアーキテクチャはリモートでの管理と特定プロダクトのサポートを実現するプラグインを提供します。
</p>\n <p>このデフォルトのダッシュボードは上の「編集モード」ボタンをすることで編集可能です。</p>
view_dashboards_confirm1 = 削除してもよろしいですか
view_dashboards_portlets_refresh_fail1 = 自動リフレッシュするポートレットのリフレッシュ間隔の更新に失敗しました
view_dashboards_portlets_refresh_fail2 = 自動リフレッシュするポートレットのリロードの無効化に失敗しました
@@ -1283,7 +1175,6 @@ view_drift_wizard_addDef_templatePrompt = ドリフト定義テンプレート
view_drift_wizard_addDef_title = タイプのリソース [{0}] のためのドリフト検出定義を追加してください
view_drift_wizard_addDef_windowTitle = ドリフト検出定義ウィザードの追加
view_drift_wizard_addTemplate_failure = 新規ドリフト検出テンプレート [{0}] の追加に失敗しました
-view_drift_wizard_addTemplate_infoStepHelp =
各ドリフトテンプレートは既存のテンプレートから派生して作成できます。これは既存テンプレートに類似したものや、プラグインが定義したテンプレートから新規テンプレートを構築する素早い方法を提供します。ドリフト定義のように、そのテンプレートはドリフトを監視を実行する一式のファイルを記述します。状況によっては、そのテンプレートから導出された定義はそのファイルセットの変更や、他の設定の変更を許したり、許さなかったりします。テンプレート名は一つのリソースタイプ内でユニークでなければなりません。
view_drift_wizard_addTemplate_infoStepName = 開始テンプレートの選択
view_drift_wizard_addTemplate_success = 新規ドリフトテンプレート [{0}] の追加に成功しました
view_drift_wizard_addTemplate_title = タイプ [{0}] のドリフト定義テンプレートを追加してください
@@ -1292,7 +1183,6 @@ view_drift_wizard_pinTemplate_confirmNotPinned = そのテンプレートのた
view_drift_wizard_pinTemplate_confirmPinned = 警告!
このテンプレートはすでにピン留めされています。そのテンプレートはこの新規スナップショットに再度ピン留めすることが可能です。そのテンプレートのための現在と将来の各ドリフト定義がいったんピン留めされると、そのテンプレートは初期スナップショットがそのテンプレートが持つピン留めされたスナップショットとして設定されるようにします。このテンプレートの既存定義は新規初期スナップショットへリセットされ、すべての既存スナップショットは削除されます。この新規スナップショットを持つテンプレートのピン留めを続けますか?
view_drift_wizard_pinTemplate_failure = ドリフトテンプレート [{0}] へのスナップショットをピン留めするのに失敗しました
view_drift_wizard_pinTemplate_infoStepExistingTemplate = 現在のテンプレートへのピン留め
-view_drift_wizard_pinTemplate_infoStepHelp =
ピン留めをするテンプレートを選択してください。そのテンプレートのための現在と将来の各ドリフト定義がいったんピン留めされると、そのテンプレートは初期スナップショットがそのテンプレートが持つピン留めされたスナップショットとして設定された持つようになりまするようにします。そしてその定義自身はピン留めされたものとしてマークされます。これは期待されるファイルセットからドリフトを検出するのに使われます。このテンプレートのための既存定義は新規の初期スナップショットにリセットされ、すべての既存スナップショットは削除されることに注意してください。
view_drift_wizard_pinTemplate_infoStepName = ピン留めされるテンプレートの選択
view_drift_wizard_pinTemplate_infoStepNewTemplate = 新規テンプレートへのピン留め
(スナップショットのドリフト定義から導出されたもの)
view_drift_wizard_pinTemplate_infoStepRadioHelp =
そのスナップショットは新規または既存のドリフトテンプレートにピン留めすることが可能です。その''新規テンプレート''オプションは、ユーザーの手によって信頼する定義やスナップショットを、リソースレベルやタイプレベルで、テンプレート化できるようにします。その新規テンプレートは、次に、そのタイプのメンバーに対して適用できます。その新規テンプレートは初期時はスナップショットのドリフト定義のコピーですが、次のステップで編集することができます。その名前は変更すべきで、そのタイプのユニークなドリフトテンプレート名でなければなりません。''既存テンプレート''オプションは、ユーザーが選択したスナップショットを持つ既存テンプレートに対して、ピン留めまたは再度ピン留めができるようにします。正しく設定するには、その既存テンプレートは同じディレクトリをそのスナップショット定義として監視できなければなりません。セレクションボックスは正当な既存のテンプレートだけを表示します。もし正当でない既存テンプレートが存在したとしてもこのオプションでは選択されません。
@@ -1329,9 +1219,7 @@ view_dynagroup_exprBuilder_expressionType_resourceConfig = リソース構成
view_dynagroup_exprBuilder_expressionType_resourceType = リソースタイプ
view_dynagroup_exprBuilder_expressionType_tooltip = この式のプロパティは以下のものに切り替わります。<br/>
<b>リソース</b>: 名前やバージョンといったリソースプロパティ<br/> <b>リソースタイプ</b>:
特定タイプのリソースの検索<br/> <b>リソースカテゴリ</b>:
プラットフォーム、サーバー、サービスといったカテゴリによるリソース検索<br/> <b>トレイト</b>:
モニタされたトレイトのために選択された値を持つリソース<br/> <b>プラグイン構成</b>:
コンポーネントのプラグインコンポーネント構成設定による検索<br/> <b>リソース構成</b>: 管理リソースの構成設定による検索
view_dynagroup_exprBuilder_expressionType_trait = トレイト
-view_dynagroup_exprBuilder_expression_tooltip =
これは以下のフォーム内の選択によって表現される完全な式です。このテキストは、"式の追加"ボタンをクリックすると、グループ定義式のテキストに追加されます。
view_dynagroup_exprBuilder_groupBy = Group by
-view_dynagroup_exprBuilder_groupBy_tooltip =
GroupByはシステムが入力式からの値についてピボット解析ができるようにします。例えば、クラスター名によるGroupByによって、すべてのクラスターメンバーをその中に含むようなクラスタのグループを作成します。
view_dynagroup_exprBuilder_noPlugins = --プラグインなし--
view_dynagroup_exprBuilder_noProperties = --プラグインなし--
view_dynagroup_exprBuilder_noResourceTypes = --リソースタイプなし--
@@ -1353,7 +1241,6 @@ view_dynagroup_exprBuilder_resource_tooltip = リソースのレベルを望み
view_dynagroup_exprBuilder_savedExpression = 保存された式
view_dynagroup_exprBuilder_title = 式ビルダー
view_dynagroup_exprBuilder_unset = 設定解除
-view_dynagroup_exprBuilder_unset_tooltip =
設定解除はデータベース内のnull値を持つ値をのすべてを発見します。これはデータベースストアと問い合わせデータの理由により"="オペレータを使うことは可能ではありません。
view_dynagroup_exprBuilder_value_tooltip = 問い合わせ式のための文字列値
view_dynagroup_expression = 式
view_dynagroup_expressionBuilderIconTooltip = 式ビルダー...
@@ -1384,8 +1271,6 @@ view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - ホスティングし
view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - セキュアでないすべて
view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - ユニークバージョン
view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - クラスタ
-view_dynagroup_template_platforms = インベントリ内のプラットフォームリソース
-view_dynagroup_template_uniqueResourceTypes = インベントリ内のユニークリソースタイプ
view_groupConfigEdit_member = メンバー
view_groupConfigEdit_noListProps = グループ構成に現在サポートされていないプロパティのリスト
view_groupConfigEdit_saveReminder = 設定が変更されています - これらの変更を保存するのを忘れないでください。さもないと失われます。
@@ -1420,7 +1305,6 @@ view_group_operationScheduleDetails_memberResource = メンバーリソース
view_group_operationScheduleDetails_value_parallel = 並行実行
view_group_operationScheduleDetails_value_sequential = 以下に示した順で
(メンバーリソースをドラッグ&ドロップして順番を変更)
view_group_pluginConfig_edit_currentGroupProperties = 現在のグループプロパティ
-view_group_pluginConfig_edit_invalid =
次のコネクション設定プロパティには不正な値が設定されていますので、コネクション設定が保存されるまえに修正される必要があります: [{0}]
view_group_pluginConfig_edit_noperm = このグループコネクション設定を編集する権限がありません
view_group_pluginConfig_edit_saveFailure = グループ名 [{1}] と互換性のある [{0}]
のためのグループ設定更新の開始に失敗しました
view_group_pluginConfig_edit_saveInitiated_concise = グループコネクション設定の更新が開始されました
@@ -1429,7 +1313,6 @@ view_group_pluginConfig_edit_saveTooltip = すべてのグループメンバー
view_group_pluginConfig_edit_valid = すべてのコネクション設定プロパティには正しい値が設定されていますので、コネクション設定は保存できます
view_group_pluginConfig_members_fetchFailure = グループ [{0}] のメンバーのためのプラグイン構成更新履歴の取得に失敗しました
view_group_pluginConfig_members_fetchFailureConn = [{0}] のためのメンバーコネクション設定の取り出しに失敗しました
-view_group_pluginConfig_members_fetchFailureConnInProgress =
グループプラグイン構成の更新は現在進行中です。グループ設定を閲覧する前に更新が完了するまで待ってください。
view_group_pluginConfig_members_statusDetails = ステータスの詳細
view_group_pluginConfig_members_statusFailure = この構成の更新は未知の理由により失敗しました
view_group_pluginConfig_members_statusInprogress = この構成の更新はまだ進行中です
@@ -1440,7 +1323,6 @@ view_group_pluginConfig_table_clickStatusIcon = 詳細はステータスアイ
view_group_pluginConfig_table_deleteFailure = グループプラグイン構成履歴の削除に失敗しました
view_group_pluginConfig_table_deleteSuccessful = [{0}] の履歴を削除しました
view_group_pluginConfig_table_failFetch = グループプラグイン履歴の取得に失敗しました
-view_group_pluginConfig_table_msg1 = 個々のリソースのステータスのためのメンバー履歴を見てください
view_group_pluginConfig_table_statusDetails = ステータスの詳細
view_group_pluginConfig_table_statusFailure = このグループ構成の更新は失敗しました
view_group_pluginConfig_table_statusInprogress = このグループ構成の更新は進行中です
@@ -1461,7 +1343,6 @@ view_group_resConfig_edit_saveTooltip = すべてのグループメンバーの
view_group_resConfig_edit_valid = すべての構成プロパティは正しい値ですので、その構成は保存可能です
view_group_resConfig_members_fetchFailure = グループ [{0}] のメンバーのためのリソース構成更新履歴の取得に失敗しました
view_group_resConfig_members_fetchFailureConfig = [{0}] のためのメンバーリソース構成設定の取り出しに失敗しました
-view_group_resConfig_members_fetchFailureConfigInProgress =
グループリソース構成の更新が現在進行中です。グループ設定を閲覧する前に更新が終了するのをお待ちください
view_group_resConfig_members_statusDetails = ステータスの詳細
view_group_resConfig_members_statusFailure = この構成の更新は未知の理由で失敗しました。
view_group_resConfig_members_statusInprogress = この構成の更新はまだ進行中です
@@ -1472,7 +1353,6 @@ view_group_resConfig_table_clickStatusIcon = 詳細はステータスアイコ
view_group_resConfig_table_deleteFailure = グループリソース構成履歴の削除に失敗しました
view_group_resConfig_table_deleteSuccessful = [{0}] の履歴の削除をしました
view_group_resConfig_table_failFetch = グループ構成履歴の取得に失敗しました
-view_group_resConfig_table_msg1 = 個々のリソースのステータスはメンバー履歴を閲覧してください
view_group_resConfig_table_statusDetails = スタータスの詳細
view_group_resConfig_table_statusFailure = このグループ構成の更新が失敗しました
view_group_resConfig_table_statusInprogress = このグループ構成の更新はまだ進行中です
@@ -1495,7 +1375,6 @@ view_group_summary_mixed = 混在
view_group_summary_nameUpdateFailure = ID [{0}] を持つリソースグループ名の変更に失敗しました - [{1}] から [{2}]
への変更ができませんでした
view_group_summary_nameUpdateSuccessful = ID [{0}] を持つリソースグループを [{1}] から [{2}] への変更しました
view_group_summary_recursive = 再帰
-view_helpTop_description = このセクションはドキュメンテーション、チュートリアル、バージョン、その他のヘルプ情報を提供します。
view_help_section_product = プロダクト
view_help_section_product_about = RHQについて
view_inventory_adq = ディスカバリキュー
@@ -1530,7 +1409,6 @@ view_inventory_resource_loadFailed = ID [{0}] を持つリソースは存在し
view_inventory_resources_deleteConfirm = 選択されたリソースを削除したいですか?
view_inventory_resources_deleteFailed = 選択されたリソースの削除に失敗しました
view_inventory_resources_deleteSuccessful = そのリソースを削除するリクエストは(複数の)エージェントに正しく送信されました。
-view_inventory_resources_disableConfirm = 本当に選択したリソースを無効にしたいですか?
無効な間にエージェントから報告されたアベイラビリティは無視されます。無効化は通常操作や保守の一部として停止することが期待されているリソースに対して役に立ちます。
view_inventory_resources_disableFailed = 選択されたリソースを無効化するのに失敗しました。
view_inventory_resources_disableSuccessful = 選択されたリソースとその子となる [{0}] リソースを無効化するのに成功しました。
view_inventory_resources_enableConfirm = 本当に選択されたリソースを有効したいですか?
有効の間はエージェントがリソースのアベイラビリティを報告するまでアベイラビリティはUNKNOWNに設定されます。エージェントは直近の都合の良いときに現在のアベイラビリティを報告するように要求されます。
@@ -1559,13 +1437,10 @@ view_login_invalidEmail = 不正なE-メールアドレス
view_login_login = ログイン
view_login_logout = ログアウト
view_login_noBackend = バックエンドデータソースは利用できません
-view_login_noLdap = 注意:LDAP詳細の任意の取り出しは成功しませんでした。手動での入力が要求されます
-view_login_noUser = 入力されたユーザー名またはパスワードは記録されたものと一致しません
view_login_prompt = ログインしてください
view_login_registerLater = (キャンセル - 登録を後で完成させてください)
view_login_registerLdapSuccess = 新しいLDAPユーザーの登録に成功しました
view_login_registerUser = ユーザの登録
-view_login_welcomeMsg = {0}へようこそ! <br/><br/>
登録を完成させるために次のフィールドを入力/更新してください。<br/>
"OK"をクリックしたら、ログインします。<br/><br/>
view_measureRange_last = 時間の範囲 - 直前
view_measureRange_simple = シンプル...
view_measureRange_start = 時間の範囲 - 開始
@@ -1595,14 +1470,12 @@ view_operationHistoryDetails_error_fetchFailure = オペレーション履歴の
view_operationHistoryDetails_noResults = このオペレーションは値を返しません
view_operationHistoryDetails_operation = オペレーション
view_operationHistoryDetails_parameters = パラメーター
-view_operationHistoryDetails_requestor = 要求者
view_operationHistoryDetails_results = 結果
view_operationHistoryDetails_status = ステータス
view_operationHistoryList_button_forceDelete = 強制削除
view_operationHistoryList_button_runOperation = オペレーションの実行
view_operationHistoryList_notYetStarted = まだ開始していません
view_operationHistoryList_title = オペレーション履歴
-view_operationScheduleDetails_enterParametersBelow = 以下にパラメーターを入力してください...
view_operationScheduleDetails_fieldDefault_description = 説明を見るとためオペレーションを選択してください
view_operationScheduleDetails_fieldDefault_parameters = パラメーターを見るためにオペレーションを選択してください
view_operationScheduleDetails_fieldHelp_description = このスケジュールされたオペレーションのための任意の説明
(例、夜間保守のためのアプリサーバー再起動)
@@ -1616,9 +1489,7 @@ view_portlet_autodiscovery_setting_platforms = 発見されたプラットフォ
view_portlet_configure_definitionDesc = ポートレットのための構成設定
view_portlet_configure_definitionTitle = ポートレット構成
view_portlet_configure_needed = 設定ボタンを押してこのポートレットを構成してください
-view_portlet_configure_notNeeded = 構成はこのポートレットには必要ありません
view_portlet_defaultName_autodiscovery = ディスカバリキュー
-view_portlet_defaultName_favoriteResources = お気に入りリソース
view_portlet_defaultName_groupMetric = リソースグループメトリックグラフ
view_portlet_defaultName_group_alerts = グループ: アラート
view_portlet_defaultName_group_bundles = グループ: バンドルデプロイ
@@ -1652,11 +1523,8 @@ view_portlet_help_autodiscovery = このポートレットは新規に発見さ
view_portlet_help_bundle_deps = このポートレットは構成されたディスプレイクライテリアをベースにした関連するバンドルデプロイを表示します
view_portlet_help_config_updates = このポートレットは構成設定と一致した最近の構成変更を表示します
view_portlet_help_eventcounts = このポートレットは構成されたディスプレイクライテリアに一致するイベント数を表示します
-view_portlet_help_favoriteResources = このポートレットは現在ユーザーのお気に入りリソースを表示します
view_portlet_help_graph = このポートレットはリソースメトリックグラフを表示します
view_portlet_help_inventorySummary = このポートレットは現在ユーザーの閲覧可能なインベントリとメトリック収集率のショートサマリーを表示します
-view_portlet_help_mashup = このポートレットは(iframeを介して)リモートHTTPリクエストが返した内容を表示します
-view_portlet_help_message = このポートレットは静的なHTMLメッセージを表示します。 <i>message</i>
プロパティの構成が必要です。
view_portlet_help_metrics = このポートレットは構成されたディスプレイクライテリアをベースにして関連するメトリックデータのグラフを描きます
view_portlet_help_none = このポートレット用のヘルプは利用できません
view_portlet_help_oobs = このポートレットは 範囲外メトリック条件を表示します
@@ -1688,8 +1556,6 @@ view_portlet_problemResources_config_display_range = ここから数時間遡っ
view_portlet_problemResources_config_display_range2 = {0} から {1} まで
view_portlet_problemResources_maxDisplaySetting = 最大リソース
view_portlet_recentAlerts_config_members = メンバーの選択
-view_portlet_recentAlerts_config_priority_label = 優先アラート
-view_portlet_recentAlerts_config_when = 次の時間以内で
view_portlet_recentAlerts_fail_msg = アラートフィルタリングのために割り当てられたリソースをロードするのに失敗しました
view_portlet_recentlyAdded_error1 = 最近追加されたリソースをロードするのに失敗しました
view_portlet_recentlyAdded_setting_addedPlatforms = 最近追加されたプラットフォーム
@@ -1697,19 +1563,15 @@ view_portlet_results_empty = 指定されたクライテリアの結果は見つ
view_remoteAgentInstall_agentStatus = エージェントのステータス
view_remoteAgentInstall_agentStatusDefault = -ステータスの更新ボタンをクリックしてください-
view_remoteAgentInstall_buttonFindAgent = エージェントの発見
-view_remoteAgentInstall_connInfo = 接続情報
view_remoteAgentInstall_error_1 = エージェントのインストールパスを探している間にエラーが発生しました
-view_remoteAgentInstall_error_2 = 共通の場所で探しているときにエージェントを見つけることができませんでした
view_remoteAgentInstall_error_3 = [{0}] 以下にインストールされたエージェント見つけることができませんでした
view_remoteAgentInstall_error_4 = エージェントのインストールに失敗しました
view_remoteAgentInstall_error_5 = エージェントの開始に失敗しました
view_remoteAgentInstall_error_6 = エージェントの停止に失敗しました
view_remoteAgentInstall_installAgent = エージェントのインストール
-view_remoteAgentInstall_installInfo = エージェントのインストール情報
view_remoteAgentInstall_installPath = エージェントのインストールパス
view_remoteAgentInstall_owner = オーナー
view_remoteAgentInstall_promptHost = エージェントがインストールされている、あるいはこれからインストールされるホスト
-view_remoteAgentInstall_promptInstallPath =
エージェントがインストールされている、あるいはこれからインストールされる場所。どこにインストールされるか確信がないなら、親ディレクトリを入力して、''エージェントの発見''ボタンをクリックしそのディレクトリ以下をスキャンしてください。空のパスを入力したなら、エージェントをインストールするホスト上の共通の場所が探索されます。
view_remoteAgentInstall_promptPassword = SSHを介してホスト上のユーザーを認証するために使われるクレデンシャル
view_remoteAgentInstall_promptPort = SSHサーバーがリスンするポート。指定されなければ、デフォルトは22です。
view_remoteAgentInstall_promptUser = SSHを介してホストに渡されるクレデンシャルを保持するユーザーの名前
@@ -1734,12 +1596,10 @@ view_reports_subsystems = サブシステム
view_resourceResourceGroupList_error_fetchFailure = リソースのグループの取り出しに失敗しました
view_resourceResourceGroupList_error_updateFailure = 割り当てられたリソースグループの更新に失敗しました
view_resourceResourceGroupList_message_updateSuccess = [{0}] のために更新されたグループメンバーシップ.
-view_resource_inventory_activity_changed_by = 更新者
view_resource_inventory_activity_criteria_no_recent_events = 表示クライテリアに基づくイベントはありません
view_resource_inventory_activity_no_recent_alerts = 最近のアラートはありません
view_resource_inventory_activity_no_recent_bundle_deploy = 最近のバンドルデプロイメントはありません
view_resource_inventory_activity_no_recent_config_history = 構成変更履歴はありません
-view_resource_inventory_activity_no_recent_events = 直近24時間以内にイベントはありません
view_resource_inventory_activity_no_recent_metrics = このリソースには最近のメトリックはありません
view_resource_inventory_activity_no_recent_oob = 範囲外の条件はみつかりません
view_resource_inventory_activity_no_recent_operations = 最近のオペレーション履歴はありません
@@ -1753,31 +1613,21 @@ view_resource_monitor_availability_availability = アベイラビリティ
view_resource_monitor_availability_availability_tooltip =
リソースが起動していた時間を停止や無効の時間と比較したパーセンテージ
view_resource_monitor_availability_currentAsOf = このデータは {0} の現在のものです。
view_resource_monitor_availability_currentStatus = 現在のステータス
-view_resource_monitor_availability_currentStatus_value = このリソースは {1} から {0} の状態のままです
view_resource_monitor_availability_disabled = 無効化
view_resource_monitor_availability_disabledTime = 無効化された時間
-view_resource_monitor_availability_disabledTime_tooltip = リソースがDISABLED状態でいた累積時間
view_resource_monitor_availability_disabled_tooltip =
リソースがDISABLEDでいた時間を起動や停止の時間と比較したパーセンテージ
view_resource_monitor_availability_down = 停止
view_resource_monitor_availability_down_tooltip = リソースがDOWNしていた時間を起動や無効化の時間と比較したパーセンテージ
view_resource_monitor_availability_downtime = 停止時間
-view_resource_monitor_availability_downtime_tooltip = リソースがDOWN状態でいた累積時間
view_resource_monitor_availability_loadFailed = アベイラビリティ履歴のロードに失敗しました
view_resource_monitor_availability_mtbf = MTBF
-view_resource_monitor_availability_mtbf_tooltip = 平均故障間隔(Mean Time Before Failure) -
つまり、これはDOWNする前にUP状態で費やされた平均時間を意味します
view_resource_monitor_availability_mttr = MTTR
-view_resource_monitor_availability_mttr_tooltip = 平均復旧時間 (Mean Time To Recovery) -
つまり、これは再度UPする前にDOWN状態で費やされた平均時間を意味します
view_resource_monitor_availability_numDisabled = 無効化回数
-view_resource_monitor_availability_numDisabled_tooltip = リソースがDISABLED状態に入った回数の合計
view_resource_monitor_availability_numFailures = 障害数
-view_resource_monitor_availability_numFailures_tooltip = リソースがDOWN状態に入った回数の合計
view_resource_monitor_availability_summaryError = リソースアベイラビリティのサマリをロードするのに失敗しました
-view_resource_monitor_availability_unknown = このリソースは {0} の間は未知の状態でした。
view_resource_monitor_availability_uptime = 起動時間
-view_resource_monitor_availability_uptime_tooltip = リソースがUP状態でいた累積時間
view_resource_monitor_calltime_average = 平均
view_resource_monitor_calltime_count = 数
-view_resource_monitor_calltime_destination = 呼び出しの宛先
view_resource_monitor_calltime_editFailed = 呼び出し時間データは編集できません
view_resource_monitor_calltime_loadFailed = 呼び出し時間データをロードできません
view_resource_monitor_calltime_lookupFailed = 呼び出し時間のためのリソースをロードできません
@@ -1795,12 +1645,10 @@ view_resource_monitor_table_avg = 平均
view_resource_monitor_table_last = 最新
view_resource_monitor_table_max = 最大
view_resource_monitor_table_min = 最小
-view_resource_title_component_errors_cleanup =
問題に取り組んだ後は、以下のメッセージを削除して全画面の'管理コンポーネントエラー'をクリアする必要があります。
view_resource_title_component_errors_tooltip = 管理コンポーネントエラーの表示。詳細はクリックしてください
view_resource_title_tagUpdateFailed = リソースタグの更新に失敗しました
view_searchBar_defaultPattern = パターンを名前を付けてください
view_searchBar_instructional_failSuggest = サジェッションの作成に失敗しました。可能性のあるエラーをサーバーログから調べてください。
-view_searchBar_instructional_noSuggest = 一件も一致しませんでした。異なるパターンを入力してください。
view_searchBar_instructional_refresh = 保存済みの検索の取り出しに失敗しました。ページをリフレッシュしてください。
view_searchBar_savedSearch_delete = 保存済みの検索 [{0}] を削除するのに失敗しました
view_searchBar_savedSearch_failDelete = [{0}]という名前の保存済み検索を削除するのに失敗しました
@@ -1809,7 +1657,6 @@ view_searchBar_savedSearch_failRename = [{0}]という名前の保存済みの
view_searchBar_savedSearch_failSave = [{0}]という名前の保存済みの検索を作成するのに失敗しました
view_searchBar_savedSearch_rename = 保存済み検索の名前を [{0}] へ変更するのに成功しました
view_searchBar_savedSearch_save = [{0}] という名前の保存済み検索を作成するのに成功しました
-view_searchGUI_loginStatus = ログインステータスが確定できません。サーバーの状態を調べてください
view_selector_assigned = 割り当てられた {0}
view_selector_available = 利用可能な {0}
view_subTab_error_disabled = 無効になったサブタブ [{0}] を選択できません
@@ -1879,20 +1726,11 @@ view_tags_error_1 = タグをロードするのに失敗しました
view_tags_tags = タグ
view_tags_tooltip_1 = クリックするとこのタグを削除します
view_tags_tooltip_2 = クリックするとタグを編集します
-view_tags_tooltip_3 = 次のフォーマットでタグを入力してください: (namespace:)(semantic=)tagname (例 it:env=QA,
or owner=John)
view_testTop_description = このセクションはさまざまなGUIコンポーネントをテストするためのページを含んでいます
view_testTop_title = テスト
-view_titleBar_common_addedFav = [{0}] をお気に入りとして追加しました
-view_titleBar_common_addedFavFailure = [{0}] をお気に入りとして追加するのに失敗しました
-view_titleBar_common_clickToAddFav = クリックするとこれをお気に入りとして追加します
-view_titleBar_common_clickToRemoveFav = クリックするとこれをお気に入りから削除します
view_titleBar_common_loadTagsFailure = [{0}] のためのタグをロードするのに失敗しました
-view_titleBar_common_removedFav = お気に入りから [{0}] を削除しました
-view_titleBar_common_removedFavFailure = お気に入りから [{0}] を削除するのに失敗しました
view_titleBar_common_updateTagsFailure = [{0}] のタグの更新に失敗しました
view_titleBar_common_updateTagsSuccessful = [{0}] のタグが更新されました
-view_titleBar_group_failInfo = ID [{1}] を持つグループ [{0}] に関する一般情報を取得するのに失敗しました
-view_titleBar_group_summary_collapsedTooltip = クリックするとこのグループの詳細情報を表示します
view_titleBar_group_summary_expandedTooltip = クリックするとこのグループの詳細を隠します
view_tree_common_contextMenu_addChartToDashboard = ダッシュボード [{0}] へチャートを追加します
view_tree_common_contextMenu_editPluginConfiguration = [{0}] プラグイン構成を編集します
@@ -1927,7 +1765,6 @@ view_type_resourceTypes = リソースタイプ
view_type_typeTreeLoadFailure = リソースタイプのツリーデータをロードするのに失敗しました
view_upload_alreadyUploaded = ファイルはすでに更新されていました
view_upload_bundleDistFile = 分散ファイル
-view_upload_error_bundleDistFile = バンドル配布ファイルのアップロードエラー
view_upload_error_file = ファイルアップロードエラー
view_upload_error_fileName = ファイルアップロードエラー [{0}]
view_upload_error_fileName_2 = [{0}] のアップロードエラーです。不正なファイルパスを調べてください。
@@ -1943,7 +1780,6 @@ view_upload_tooltip_2 = ファイルアップロードは以前失敗してい
view_upload_upload = アップロード
view_upload_uploadFile = アップロードファイル
widget_colorPicker_tooltip = 新規カラーを選択するためにクリックしてください
-widget_durationItem_inputUnitLessThanTargetUnit = 入力単位はターゲット単位よりも小さいです
widget_durationItem_unitTypeNotSupported = 単位のタイプ [{0}] はこの DurationItem によりサポートされません
widget_jobTriggerEditor_fieldHelp_repeatDuration =
このオペレーションを何回も実行するか、または指定された時間が終了するまで実行し続けます
widget_jobTriggerEditor_fieldHelp_repeatInterval = オペレーションが実行される頻度
@@ -1970,11 +1806,8 @@ widget_jobTriggerEditor_value_nowAndRepeat = 現在 & 繰り返す
widget_jobTriggerEditor_value_on = on
widget_jobTriggerEditor_value_until = Until
widget_recordEditor_error_invalidViewPath = 無効なビューパス: [{0}]
-widget_recordEditor_error_multipleRecords = 複数レコードが見つかりました - 1つだけが期待されています
-widget_recordEditor_error_noRecords = レコードが一つも見つかりませんでした - 1つだけが期待されています
widget_recordEditor_error_operation = オペレーションが失敗しました。エラーが発生しました。
widget_recordEditor_error_operationInvalidValues = オペレーションが失敗しました。 -
一つ以上のフィールドが無効な値を持っています
-widget_recordEditor_error_permissionCreate = [{0}] を新規作成するために必要な権限を持っていません
widget_recordEditor_error_unsupportedOperationType = サポート外のオペレーション タイプ: [{0}]
widget_recordEditor_info_recordCreatedConcise = {0} が作成されました。
widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] が作成されました。
@@ -1994,7 +1827,6 @@ widget_resourceFactoryWizard_contentTemplatePrompt = デプロイ時間構成テ
widget_resourceFactoryWizard_createWizardTitle = タイプ [{0}] の新規リソースの作成
widget_resourceFactoryWizard_createWizardWindowTitle = リソース作成ウィザード
widget_resourceFactoryWizard_editConfigStepName = 編集の構成
-widget_resourceFactoryWizard_editConfigStep_nothingToDo = このリソースのために定義が必要な構成は存在しません
widget_resourceFactoryWizard_execute1 = 新規リソースの作成に失敗しました - パッケージバージョンが存在しません
#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion = リソース作成のキャンセル中にパッケージバージョンの削除に失敗しました
@@ -2004,7 +1836,6 @@ widget_resourceFactoryWizard_importFailure = 手動でのリソースのイン
widget_resourceFactoryWizard_importSubmitted = 新規リソースタイプ [{0}] のインポートリクエストが送信されました
widget_resourceFactoryWizard_importWizardTitle = リソースタイプ [{0}] をインポート
widget_resourceFactoryWizard_importWizardWindowTitle = リソースインポートウィザード
-widget_resourceFactoryWizard_infoStepName = リソース情報
widget_resourceFactoryWizard_infoStep_loadFail = アーキテクチャーを利用可能にするのに失敗しました
widget_resourceFactoryWizard_namePrompt = 新規リソース名
widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプレート
@@ -2012,7 +1843,6 @@ widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプ
##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = ファイルアップロードの失敗
widget_resourceFactoryWizard_uploadFileStepName = リソースコンテントファイルのアップロード
-widget_resourceFactoryWizard_uploadInProgress = アップロードは処理中です...
大きなファイルを配布するには数分かかることもあります。
widget_resourceFactoryWizard_versionPrompt = パッケージバージョン
widget_resourceSelector_groupCategory = グループカテゴリ
widget_resourceSelector_pleaseSelectMultipleResource = 一つ以上のリソースを選択してください
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 4c91090..76ad864 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -1173,6 +1173,7 @@ view_configEdit_addItem = Adicionar Item \u00E0 Lista
view_configEdit_confirm_1 = Tem certeza de que deseja excluir as propriedades
selecionadas?
view_configEdit_confirm_2 = Tem certeza de que deseja excluir esta linha?
view_configEdit_confirm_3 = Tem certeza de que deseja excluir [{0}] selecionado [{1}]?
+##view_configEdit_description = Description
view_configEdit_editRow = Editar Linha de Configura\u00E7\u00E3o
view_configEdit_enterPropName = Informe o nome da propriedade a ser adicionada.
view_configEdit_error_1 = Este recurso n\u00E3o suporta Configura\u00E7\u00E3o.
@@ -1186,8 +1187,11 @@ view_configEdit_msg_2 = Propriedades removidas do conjunto.
view_configEdit_msg_3 = [{0} {1}] removido da lista.
view_configEdit_msg_4 = Item adicionado \u00E0 lista.
view_configEdit_properties = Propriedades
+##view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 = Remove os itens selecionados da lista.
view_configEdit_tooltip_2 = Adiciona um item \u00E0 lista.
+##view_configEdit_unset = Unset?
+##view_configEdit_value = Value
view_configEdit_viewRow = Visualizar linha
view_configurationDetails_allPropertiesValid = Todas as propriedades de
configura\u00E7\u00E3o s\u00E3o v\u00E1lidas, portanto a configura\u00E7\u00E3o pode ser
salva.
view_configurationDetails_configNotUpdatedDueToNoChange = A configura��o n�o foi
atualizada, pois a nova configura��o � equivalente � atual.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index f707492..2a53522 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2449,4 +2449,8 @@ view_admin_downloads_cli_version = Версия CLI
##view_alert_details_field_resource_ancestry = Resource Ancestry
##view_alert_details_field_watched_resource = Watched Resource
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
+##view_configEdit_description = Description
+##view_configEdit_property = Vlastnost
+##view_configEdit_unset = Unset?
+##view_configEdit_value = Value
##view_messageCenter_messageRootCause = Root Cause
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 6f893da..3a0ccbc 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1159,6 +1159,7 @@ view_configEdit_addItem =
\u6dfb\u52a0\u6761\u76ee\u81f3\u5217\u8868.
view_configEdit_confirm_1 =
\u786e\u5b9a\u8981\u4ece\u96c6\u5408\u4e2d\u5220\u9664\u6307\u5b9a\u7684\u5c5e\u6027?
view_configEdit_confirm_2 = \u786e\u5b9a\u8981\u5220\u9664\u8be5\u884c?
view_configEdit_confirm_3 = \u786e\u5b9a\u8981\u5220\u9664 [{0}]\u9879\u9009\u4e2d\u7684
[{1}]?
+##view_configEdit_description = Description
view_configEdit_editRow = \u7f16\u8f91\u884c
view_configEdit_enterPropName =
\u8f93\u5165\u8981\u6dfb\u52a0\u7684\u5c5e\u6027\u540d\u79f0.
view_configEdit_error_1 = \u6b64\u8d44\u6e90\u65e0\u6cd5\u914d\u7f6e.
@@ -1172,8 +1173,11 @@ view_configEdit_msg_2 =
\u79fb\u9664\u96c6\u5408\u5185\u6240\u6709\u7684\u5c5e\u
view_configEdit_msg_3 = \u4ece\u5217\u8868\u4e2d\u5220\u9664[{0} {1}]\u6210\u529f.
view_configEdit_msg_4 = \u6dfb\u52a0\u6761\u76ee\u81f3\u5217\u8868.
view_configEdit_properties = \u5c5e\u6027
+##view_configEdit_property = Vlastnost
view_configEdit_tooltip_1 =
\u4ece\u5217\u8868\u4e2d\u5220\u9664\u9009\u4e2d\u7684\u6761\u76ee.
view_configEdit_tooltip_2 = \u6dfb\u52a0\u4e00\u9879\u6761\u76ee\u5230\u5217\u8868.
+##view_configEdit_unset = Unset?
+##view_configEdit_value = Value
view_configEdit_viewRow = \u67e5\u770b\u884c
view_configurationDetails_allPropertiesValid =
\u6240\u6709\u7684\u914d\u7f6e\u4fe1\u606f\u5df2\u7ecf\u586b\u5199\u4e86\u6709\u6548\u7684\u503c,
\u73b0\u5728\u4fdd\u5b58\u914d\u7f6e.
view_configurationDetails_configNotUpdatedDueToNoChange =
\u7531\u4e8e\u65b0\u65e7\u914d\u7f6e\u4e00\u81f4\uff0c\u6240\u4ee5\u914d\u7f6e\u6ca1\u6709\u66f4\u65b0.
commit 56ca126c2ac33de202510a88f31c87bcd4d3aa58
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 8 13:35:57 2012 +0200
Many improvements around the rest api docs. NaN-metrics are now shown as NaN in the
html view
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
index 2f65ed3..396cbd8 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerBean.java
@@ -36,6 +36,8 @@ import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.criteria.AlertCriteria;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
+import org.rhq.core.domain.criteria.Criteria;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.alert.AlertDefinitionManagerLocal;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
@@ -77,6 +79,21 @@ public class AlertHandlerBean extends AbstractRestBean implements
AlertHandlerLo
}
@Override
+ public int countAlerts() {
+ AlertCriteria criteria = new AlertCriteria();
+ criteria.setPageControl(PageControl.getUnlimitedInstance());
+ criteria.fetchAlertDefinition(false);
+ criteria.fetchConditionLogs(false);
+ criteria.fetchRecoveryAlertDefinition(false);
+ criteria.fetchNotificationLogs(false);
+ criteria.setRestriction(Criteria.Restriction.COUNT_ONLY);
+ PageList<Alert> alerts =
alertManager.findAlertsByCriteria(caller,criteria);
+ int count = alerts.getTotalSize();
+
+ return count;
+ }
+
+ @Override
public AlertRest getAlert(@PathParam("id") int id) {
Alert al = findAlertWithId(id);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
index cd17aa6..2299ab6 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
@@ -61,6 +61,11 @@ public interface AlertHandlerLocal {
@ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status);
@GET
+ @Path("count")
+ @ApiOperation("Return a count of alerts in the system depending on
criteria")
+ int countAlerts(); // TODO add some limiting to new / old / ....
+
+ @GET
@Path("/{id}")
@AddLinks
@LinkResource(value = AlertRest.class)
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
index e8b5321..a485664 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
@@ -60,6 +60,8 @@ import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
+import com.arjuna.ats.internal.jdbc.drivers.modifiers.list;
+
import org.jboss.cache.Fqn;
import org.rhq.core.domain.common.EntityContext;
@@ -123,6 +125,9 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
startTime = endTime - EIGHT_HOURS;
}
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ boolean isHtml = mediaType.equals(MediaType.TEXT_HTML_TYPE);
+
MeasurementSchedule schedule = obtainSchedule(scheduleId, false,
DataType.MEASUREMENT);
MeasurementAggregate aggr = dataManager.getAggregate(caller, scheduleId,
startTime, endTime);
@@ -134,7 +139,7 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
if (!listList.isEmpty()) {
List<MeasurementDataNumericHighLowComposite> list = listList.get(0);
- fill(res, list,scheduleId,hideEmpty);
+ fill(res, list,scheduleId,hideEmpty, isHtml);
}
CacheControl cc = new CacheControl();
@@ -144,8 +149,7 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
cc.setNoCache(false);
Response.ResponseBuilder builder;
- MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
- if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ if (isHtml) {
String htmlString = renderTemplate("metricData", res);
builder = Response.ok(htmlString,mediaType);
}
@@ -183,17 +187,35 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
return schedule;
}
private MetricAggregate fill(MetricAggregate res,
List<MeasurementDataNumericHighLowComposite> list, int scheduleId,
- boolean hideEmpty) {
+ boolean hideEmpty, boolean isHtmlOutput) {
long minTime=Long.MAX_VALUE;
long maxTime=0;
res.setScheduleId(scheduleId);
for (MeasurementDataNumericHighLowComposite c : list) {
long timestamp = c.getTimestamp();
- if (!Double.isNaN(c.getValue()) || !hideEmpty) {
- MetricAggregate.DataPoint dp = new
MetricAggregate.DataPoint(timestamp,c.getValue(),c.getHighValue(),c.getLowValue());
- res.addDataPoint(dp);
+ if (Double.isNaN(c.getValue()) && hideEmpty)
+ continue;
+
+ MetricAggregate.DataPoint dp;
+ if (isHtmlOutput) {
+ dp = new MetricAggregate.DataPoint(timestamp);
+
+ Double v = c.getLowValue();
+ v= nullifyIfNaN(v);
+ dp.setLow(v);
+ v = c.getHighValue();
+ v =nullifyIfNaN(v);
+ dp.setHigh(v);
+ v = c.getValue();
+ v= nullifyIfNaN(v);
+ dp.setValue(v);
+
+ } else {
+ dp = new
MetricAggregate.DataPoint(timestamp,c.getValue(),c.getHighValue(),c.getLowValue());
}
+ res.addDataPoint(dp);
+
if (timestamp <minTime)
minTime= timestamp;
if (timestamp >maxTime)
@@ -206,6 +228,12 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
return res;
}
+ private Double nullifyIfNaN(Double v) {
+ if (Double.isNaN(v))
+ v =null;
+ return v;
+ }
+
@GET
@Path("data")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_HTML})
@@ -246,7 +274,8 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
if (!listList.isEmpty()) {
List<MeasurementDataNumericHighLowComposite> list =
listList.get(0);
MetricAggregate res = new MetricAggregate();
- fill(res, list,scheduleId,hideEmpty);
+ boolean isHtml = mediaType.equals(MediaType.TEXT_HTML_TYPE);
+ fill(res, list,scheduleId,hideEmpty, isHtml);
resList.add(res);
}
else
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
index 0c316a9..cceb213 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
@@ -39,7 +39,8 @@ import com.wordnik.swagger.annotations.ApiOperation;
@Produces({"application/json","application/xml","text/html"})
public interface StatusHandlerLocal {
- @ApiOperation("Retrieve the current configured state of the server along with
some runtime information")
+ @ApiOperation(value="Retrieve the current configured state of the server along
with some runtime information",
+ responseClass = "Map 'values' with map of key-value pairs describing the
status")
@GET
@Path("/")
Response getStatus(@Context HttpHeaders httpHeaders);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
index b644cd6..a980f17 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerBean.java
@@ -32,14 +32,24 @@ import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.core.CacheControl;
+import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.ApiParam;
+
+import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.resource.Resource;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.rest.domain.ResourceWithType;
+import org.rhq.enterprise.server.rest.domain.UserRest;
/**
* Class that deals with user specific stuff
@@ -112,6 +122,30 @@ public class UserHandlerBean extends AbstractRestBean implements
UserHandlerLoca
}
+ public Response getUserDetails(String loginName, Request request, HttpHeaders
headers) {
+
+ Subject subject = subjectManager.getSubjectByName(loginName);
+ if (subject == null)
+ throw new StuffNotFoundException("User with login " + loginName);
+
+ EntityTag eTag = new EntityTag(Long.toOctalString(subject.hashCode()));
+ Response.ResponseBuilder builder = request.evaluatePreconditions(eTag);
+
+ if (builder == null) {
+ UserRest user = new UserRest(subject.getId(), subject.getName());
+ user.setFirstName(subject.getFirstName());
+ user.setLastName(subject.getLastName());
+ user.setEmail(subject.getEmailAddress());
+ user.setTel(subject.getPhoneNumber());
+
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ builder = Response.ok(user, mediaType);
+ builder.tag(eTag);
+
+ }
+ return builder.build();
+ }
+
private void updateFavorites(Set<Integer> favIds) {
Configuration conf = caller.getUserConfiguration();
StringBuilder builder = new StringBuilder();
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
index 5093414..8c5abae 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
@@ -29,13 +29,19 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiParam;
+import org.jboss.resteasy.annotations.cache.Cache;
+
import org.rhq.enterprise.server.rest.domain.ResourceWithType;
+import org.rhq.enterprise.server.rest.domain.UserRest;
/**
* Bean that deals with user specific stuff
@@ -65,4 +71,12 @@ public interface UserHandlerLocal {
public void removeResourceFromFavorites(
@ApiParam(name="id", value = "Id of the resource")
@PathParam("id") int id);
+
+
+ @GET
+ @Cache(maxAge = 600)
+ @Path("{id}")
+ @ApiOperation(value = "Get info about a user", responseClass =
"UserRest")
+ public Response getUserDetails(@ApiParam(value="Login of the user")
@PathParam("id")String loginName,
+ @Context Request request,@Context HttpHeaders
headers);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/MetricAggregate.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/MetricAggregate.java
index 16b6d40..4f17e61 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/MetricAggregate.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/MetricAggregate.java
@@ -32,9 +32,9 @@ import javax.xml.bind.annotation.XmlRootElement;
public class MetricAggregate {
Integer scheduleId;
- double min;
- double avg;
- double max;
+ Double min;
+ Double avg;
+ Double max;
int numDataPoints;
List<DataPoint> dataPoints;
long minTimeStamp;
@@ -44,7 +44,7 @@ public class MetricAggregate {
dataPoints = new ArrayList<DataPoint>();
}
- public MetricAggregate(Integer scheduleId, double min, double avg, double max) {
+ public MetricAggregate(Integer scheduleId, Double min, Double avg, Double max) {
this();
this.scheduleId = scheduleId;
@@ -68,29 +68,29 @@ public class MetricAggregate {
}
@XmlElement
- public double getMin() {
+ public Double getMin() {
return min;
}
@XmlElement
- public double getAvg() {
+ public Double getAvg() {
return avg;
}
@XmlElement
- public double getMax() {
+ public Double getMax() {
return max;
}
- public void setMin(double min) {
+ public void setMin(Double min) {
this.min = min;
}
- public void setAvg(double avg) {
+ public void setAvg(Double avg) {
this.avg = avg;
}
- public void setMax(double max) {
+ public void setMax(Double max) {
this.max = max;
}
@@ -129,15 +129,19 @@ public class MetricAggregate {
public static class DataPoint {
long timeStamp;
- double value;
- double high;
- double low;
+ Double value;
+ Double high;
+ Double low;
public DataPoint() {
}
- public DataPoint(long timeStamp, double value, double high, double low) {
+ public DataPoint(long timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public DataPoint(long timeStamp, Double value, Double high, Double low) {
this.timeStamp = timeStamp;
this.value = value;
this.high = high;
@@ -148,7 +152,7 @@ public class MetricAggregate {
return timeStamp;
}
- public double getValue() {
+ public Double getValue() {
return value;
}
@@ -156,23 +160,23 @@ public class MetricAggregate {
this.timeStamp = timeStamp;
}
- public void setValue(double value) {
+ public void setValue(Double value) {
this.value = value;
}
- public double getHigh() {
+ public Double getHigh() {
return high;
}
- public void setHigh(double high) {
+ public void setHigh(Double high) {
this.high = high;
}
- public double getLow() {
+ public Double getLow() {
return low;
}
- public void setLow(double low) {
+ public void setLow(Double low) {
this.low = low;
}
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
new file mode 100644
index 0000000..cf5da69
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/UserRest.java
@@ -0,0 +1,93 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.rest.domain;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * A user
+ * @author Heiko W. Rupp
+ */
+@XmlRootElement
+public class UserRest {
+
+ int id;
+ String login;
+ String firstName;
+ String lastName;
+ String tel;
+ String email;
+
+ public UserRest() {
+ }
+
+ public UserRest(int id, String login) {
+ this.id = id;
+ this.login = login;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getTel() {
+ return tel;
+ }
+
+ public void setTel(String tel) {
+ this.tel = tel;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/ConfigurationHistoryLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/ConfigurationHistoryLocal.java
index 6193363..1eb4d38 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/ConfigurationHistoryLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/ConfigurationHistoryLocal.java
@@ -8,8 +8,11 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/configurationHistory")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The
configuration history report")
public interface ConfigurationHistoryLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
index 40cda4f..f9dbed3 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
@@ -27,8 +27,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/driftCompliance")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The drift
compliance report")
public interface DriftComplianceLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
index c9f9be2..4f09b7e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
@@ -27,8 +27,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/inventorySummary")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The
inventory summary report")
public interface InventorySummaryLocal {
/**
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/PlatformUtilizationLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/PlatformUtilizationLocal.java
index 097676f..cfda23a 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/PlatformUtilizationLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/PlatformUtilizationLocal.java
@@ -29,8 +29,11 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/platformUtilization")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The
platform utilization report")
public interface PlatformUtilizationLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentAlertLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentAlertLocal.java
index 9c8bc8b..6efe5b2 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentAlertLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentAlertLocal.java
@@ -10,8 +10,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/recentAlerts")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The recent
alerts report")
public interface RecentAlertLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentDriftLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentDriftLocal.java
index e3b7070..fe2fd8b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentDriftLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentDriftLocal.java
@@ -9,8 +9,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/recentDrift")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The recent
drift report")
public interface RecentDriftLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentOperationsLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentOperationsLocal.java
index ebbc0b4..ec161b0 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentOperationsLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/RecentOperationsLocal.java
@@ -10,8 +10,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/recentOperations")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The recent
operations report")
public interface RecentOperationsLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/SuspectMetricLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/SuspectMetricLocal.java
index 455fbca..78ab8a1 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/SuspectMetricLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/SuspectMetricLocal.java
@@ -8,8 +8,11 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.StreamingOutput;
+import com.wordnik.swagger.annotations.Api;
+
@Path("/suspectMetrics")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The
suspect metrics report")
public interface SuspectMetricLocal {
@GET
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricData.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricData.ftl
index 58af399..fdf2f88 100644
--- a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricData.ftl
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricData.ftl
@@ -35,13 +35,33 @@
<#assign sched=var.scheduleId/>
<td>ScheduleId</td><td><a
href="/rest/1/metric/schedule/${sched?c}.html">${sched?c}</a></td>
</tr>
<tr>
- <td>Min</td><td>${var.min}</td>
+ <td>Min</td><td>
+ <#if var.min?has_content>
+ ${var.min}
+ <#else>
+ NaN
+ </#if>
+ </td>
</tr>
<tr>
- <td>Avg</td><td>${var.avg}</td>
+ <td>Avg</td>
+ <td>
+ <#if var.avg?has_content>
+ ${var.avg}
+ <#else>
+ NaN
+ </#if>
+ </td>
</tr>
<tr>
- <td>Max</td><td>${var.max}</td>
+ <td>Max</td>
+ <td>
+ <#if var.max?has_content>
+ ${var.max}
+ <#else>
+ NaN
+ </#if>
+ </td>
</tr>
<tr>
<td><a align="top"
href="javascript:rhq.whisker(${sched?c},'one',400,200)">DataPoints</a></td><td>
@@ -54,7 +74,28 @@
<#list var.dataPoints as item>
<tr>
-
<td>${item.timeStamp?number_to_time}</td><td>${item.low}</td><td>${item.value}</td><td>${item.high}</td>
+ <td>${item.timeStamp?number_to_time}</td>
+ <td>
+ <#if item.low?has_content>
+ ${item.low}
+ <#else>
+ NaN
+ </#if>
+ </td>
+ <td>
+ <#if item.value?has_content>
+ ${item.value}
+ <#else>
+ NaN
+ </#if>
+ </td>
+ <td>
+ <#if item.high?has_content>
+ ${item.high}
+ <#else>
+ NaN
+ </#if>
+ </td>
</tr>
</#list>
</table>
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
index 7c7078a..41e4f1e 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
@@ -63,7 +63,8 @@
<xsl:value-of select="@path"/>
</xsl:attribute>
<title>
- <xsl:value-of select="@path"/>
+ <!--/<xsl:value-of select="@path"/>-->
+ <xsl:call-template name="class-level-path"/>
<xsl:if test="@shortDesc">
: <xsl:value-of select="@shortDesc"/>
</xsl:if>
@@ -88,8 +89,8 @@
<xsl:template match="method">
<listitem>
<simpara>
- <emphasis role="bold"><xsl:value-of
select="@method"/><xsl:text xml:space="preserve">
</xsl:text><xsl:value-of
- select="../@path"/><xsl:if test="@path !=
'/'"><xsl:value-of select="@path"/></xsl:if>
+ <emphasis role="bold"><xsl:value-of
select="@method"/><xsl:text xml:space="preserve">
/</xsl:text><xsl:value-of
+ select="../@path"/><xsl:if test="not(@path =
'')">/</xsl:if><xsl:value-of select="@path"/>
</emphasis>
</simpara>
<simpara><xsl:value-of
select="@description"/></simpara>
@@ -189,4 +190,19 @@
</tr>
</xsl:template>
+ <xsl:template name="class-level-path">
+ <xsl:choose>
+ <xsl:when test="@basePath">
+ <xsl:value-of select="@basePath"/>
+ <xsl:if
test="not(substring(@basePath,string-length(@basePath)-1)='/')">/</xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$basePath"/>
+ <xsl:if
test="not(substring($basePath,string-length($basePath)-1)='/')">/</xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="@path"/>
+ </xsl:template>
+
+
</xsl:stylesheet>
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
index 9c569f8..bd8ac06 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
@@ -28,9 +28,8 @@
<li>
<xsl:element name="a">
<xsl:attribute name="href">#<xsl:value-of
select="@path"/></xsl:attribute>
- <xsl:if test="@basePath">
- <xsl:value-of select="@basePath"/>
- </xsl:if><xsl:value-of select="@path"/>
+ <xsl:call-template name="class-level-path"/>
+
</xsl:element>
</li>
</xsl:for-each>
@@ -43,10 +42,25 @@
</html>
</xsl:template>
+ <xsl:template name="class-level-path">
+ <xsl:choose>
+ <xsl:when test="@basePath">
+ <xsl:value-of select="@basePath"/>
+ <xsl:if
test="not(substring(@basePath,string-length(@basePath)-1)='/')">/</xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$basePath"/>
+ <xsl:if
test="not(substring($basePath,string-length($basePath)-1)='/')">/</xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="@path"/>
+ </xsl:template>
+
<xsl:template match="class">
<xsl:element name="h2">
<xsl:attribute name="id"><xsl:value-of
select="@path"/></xsl:attribute>
- <xsl:value-of select="@path"/>
+ <!--/<xsl:value-of select="@path"/>-->
+ <xsl:call-template name="class-level-path"/>
<xsl:if test="@shortDesc">
: <xsl:value-of select="@shortDesc"/>
</xsl:if>
@@ -65,8 +79,8 @@
</xsl:template>
<xsl:template match="method">
- <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>
- <xsl:if test="@path != '/'"><xsl:value-of
select="@path"/></xsl:if>
+ <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> /</xsl:text><xsl:value-of
select="../@path"/>
+ <xsl:if test="not(@path =
'')">/</xsl:if><xsl:value-of select="@path"/>
</h3>
<em><xsl:value-of select="@description"/></em>
<br/>
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
index 0a5cb8c..73b6f61 100644
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -166,7 +166,9 @@ public class ClassLevelProcessor extends AbstractProcessor {
Element classElement = doc.createElement("class");
String className = classElementIn.toString();
classElement.setAttribute("name",className);
- classElement.setAttribute("path",basePath.value());
+ String value = basePath.value();
+ value = cleanOutPath(value);
+ classElement.setAttribute("path", value);
Api api = classElementIn.getAnnotation(Api.class);
if (api!=null) {
String shortDescription = api.value();
@@ -195,6 +197,7 @@ public class ClassLevelProcessor extends AbstractProcessor {
return;
}
String path = pathAnnotation.value();
+ path = cleanOutPath(path);
Element methodElement = doc.createElement("method");
methodElement.setAttribute("path",path);
@@ -384,4 +387,17 @@ public class ClassLevelProcessor extends AbstractProcessor {
}
}
+
+ private String cleanOutPath(String in) {
+ if (in.equals("/"))
+ return "";
+
+ if (in.startsWith("/"))
+ in = in.substring(1);
+ if (in.endsWith("/"))
+ in = in.substring(0,in.length()-1);
+
+ return in;
+ }
+
}
commit 4996afe778d0718cc03ba65bf8c752d52c8cab03
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 6 21:46:54 2012 +0200
Remove forgotten print statements.
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
index 6f02b57..0a5cb8c 100644
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -20,7 +20,6 @@ import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Name;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.ElementFilter;
import javax.ws.rs.DefaultValue;
@@ -326,7 +325,6 @@ public class ClassLevelProcessor extends AbstractProcessor {
*/
private boolean skipParamType(TypeMirror t) {
String name = t.toString();
- System.out.print("skipParamType: " + name + "... ");
boolean skip=false;
for (String toSkip : PARAM_SKIP_ANNOTATIONS) {
if (toSkip.equals(name)) {
@@ -334,38 +332,10 @@ public class ClassLevelProcessor extends AbstractProcessor {
break;
}
}
- System.out.println(skip);
return skip;
}
/**
- * Check if a certain annotation is present or not
- * @param declaration Declaration to look at
- * @param annotationName Name of the annotation
- * @return true if found, false otherwise
- */
- private boolean hasAnnotation(javax.lang.model.element.Element declaration, String
annotationName) {
-
- boolean found = false;
-
- Collection<? extends AnnotationMirror> mirrors =
declaration.getAnnotationMirrors();
-
- for (AnnotationMirror am : mirrors) {
- DeclaredType annotationType = am.getAnnotationType();
- javax.lang.model.element.Element annotationTypeDeclaration =
annotationType.asElement();
- String qName = annotationTypeDeclaration.getSimpleName().toString();
- log.debug("AM: " + am + " , " + qName);
- if (qName.equals(annotationName)) {
- found = true;
- break;
- }
- }
- return found;
-
- }
-
-
- /**
* Determine the http method (@GET, @PUT etc.) from the list of annotations on the
method
* @param annotationMirrors mirrors for the method
* @return The http method string or null if it can not be determined
commit a48f5cda6610222c37b42fb80d29fa589a864ab5
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri Jun 8 12:51:28 2012 +0200
[BZ 829944] - make the resource type fingerprint robust against ordering
of different kinds of definitions in the resource type.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ResourceTypeFingerprint.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ResourceTypeFingerprint.java
index 14ccabf..eaaba89 100644
---
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ResourceTypeFingerprint.java
+++
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/util/ResourceTypeFingerprint.java
@@ -19,7 +19,11 @@
package org.rhq.bindings.util;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
import java.util.Map;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
@@ -43,6 +47,36 @@ public class ResourceTypeFingerprint {
private String digest;
+ private static final Comparator<MeasurementDefinition>
MEASUREMENT_DEFINITION_COMPARATOR = new Comparator<MeasurementDefinition>() {
+ @Override
+ public int compare(MeasurementDefinition o1, MeasurementDefinition o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ };
+
+ private static final Comparator<OperationDefinition>
OPERATION_DEFINITION_COMPARATOR = new Comparator<OperationDefinition>() {
+ @Override
+ public int compare(OperationDefinition o1, OperationDefinition o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ };
+
+ private static final Comparator<PackageType> PACKAGE_TYPE_COMPARATOR = new
Comparator<PackageType>() {
+ @Override
+ public int compare(PackageType o1, PackageType o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ };
+
+ private static final Comparator<PropertyDefinition>
PROPERTY_DEFINITION_COMPARATOR = new Comparator<PropertyDefinition>() {
+
+ @Override
+ public int compare(PropertyDefinition o1, PropertyDefinition o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+
+ };
+
public ResourceTypeFingerprint(ResourceType rt,
Collection<MeasurementDefinition> measurements,
Collection<OperationDefinition> operations, Collection<PackageType>
packageTypes,
ConfigurationDefinition pluginConfigurationDefinition, ConfigurationDefinition
resourceConfigurationDefinition) {
@@ -101,7 +135,9 @@ public class ResourceTypeFingerprint {
if (defs == null) {
bld.append("null");
} else {
- for (MeasurementDefinition d : defs) {
+ List<MeasurementDefinition> adefs = new
ArrayList<MeasurementDefinition>(defs);
+ Collections.sort(adefs, MEASUREMENT_DEFINITION_COMPARATOR);
+ for (MeasurementDefinition d : adefs) {
addRepresentation(d, bld);
}
}
@@ -111,7 +147,9 @@ public class ResourceTypeFingerprint {
if (defs == null) {
bld.append("null");
} else {
- for (OperationDefinition d : defs) {
+ List<OperationDefinition> odefs = new
ArrayList<OperationDefinition>(defs);
+ Collections.sort(odefs, OPERATION_DEFINITION_COMPARATOR);
+ for (OperationDefinition d : odefs) {
addRepresentation(d, bld);
}
}
@@ -121,7 +159,9 @@ public class ResourceTypeFingerprint {
if (defs == null) {
bld.append("null");
} else {
- for (PackageType d : defs) {
+ List<PackageType> pdefs = new ArrayList<PackageType>(defs);
+ Collections.sort(pdefs, PACKAGE_TYPE_COMPARATOR);
+ for (PackageType d : pdefs) {
addRepresentation(d, bld);
}
}
@@ -150,8 +190,9 @@ public class ResourceTypeFingerprint {
}
private static void addRepresentation(Map<String, PropertyDefinition> defs,
StringBuilder bld) {
- for (Map.Entry<String, PropertyDefinition> entry : defs.entrySet()) {
- PropertyDefinition def = entry.getValue();
+ List<PropertyDefinition> pdefs = new
ArrayList<PropertyDefinition>(defs.values());
+ Collections.sort(pdefs, PROPERTY_DEFINITION_COMPARATOR);
+ for (PropertyDefinition def : pdefs) {
addRepresentation(def, bld);
}
}
commit e03cd902cb0c2043feafdf3c0a2555f13e9d4128
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Jun 7 17:03:27 2012 -0500
[BZ 826066] Created unit tests and integration for the generic components that support
templated resources.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
index ed07a8a..12eb883 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
@@ -48,7 +48,7 @@ public class TemplatedComponent extends
BaseComponent<ResourceComponent<?>> {
//manually load type based on the resource path
PropertySimple pathProperty = (PropertySimple)
context.getPluginConfiguration().get("path");
String type = pathProperty.getStringValue();
- type = type.substring(path.lastIndexOf(',') + 1,
type.lastIndexOf('='));
+ type = type.substring(type.lastIndexOf(',') + 1,
type.lastIndexOf('='));
configuration.put(new PropertySimple(TYPE_CONFIGURATION, type));
return configuration;
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedComponentTest.java
new file mode 100644
index 0000000..061390c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedComponentTest.java
@@ -0,0 +1,310 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Map;
+
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.testng.PowerMockObjectFactory;
+import org.testng.Assert;
+import org.testng.IObjectFactory;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
+import org.rhq.core.domain.configuration.definition.PropertyDefinition;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.modules.plugins.jbossas7.json.Address;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+@PrepareForTest({ TemplatedComponent.class })
+public class TemplatedComponentTest {
+
+ @ObjectFactory
+ public IObjectFactory getObjectFactory() {
+ return new PowerMockObjectFactory();
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Test
+ public void loadResourceConfigurationWithType() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceContext mockResourceContext = mock(ResourceContext.class);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockResourceContext.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ ConfigurationTemplate mockConfigurationTemplate =
mock(ConfigurationTemplate.class);
+
when(mockConfigurationDefinition.getDefaultTemplate()).thenReturn(mockConfigurationTemplate);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+
when(mockConfigurationTemplate.getConfiguration()).thenReturn(mockConfiguration);
+
+ Property mockProperty = mock(Property.class);
+ when(mockConfiguration.get(eq("__type"))).thenReturn(mockProperty);
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ ConfigurationLoadDelegate mockConfigurationLoadDelegate =
mock(ConfigurationLoadDelegate.class);
+ PowerMockito.whenNew(ConfigurationLoadDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockConfigurationLoadDelegate);
+
+
when(mockConfigurationLoadDelegate.loadResourceConfiguration()).thenReturn(mockConfiguration);
+
+ PropertySimple pathPropertySimple = new PropertySimple("path",
"abc=def,xyz=test1");
+
when(mockConfiguration.get(eq("path"))).thenReturn(pathPropertySimple);
+
when(mockResourceContext.getPluginConfiguration()).thenReturn(mockConfiguration);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+ PropertySimple typePropertySimple = new PropertySimple("__type",
"xyz");
+ PowerMockito.whenNew(PropertySimple.class).withParameterTypes(String.class,
Object.class)
+ .withArguments(eq("__type"),
eq("xyz")).thenReturn(typePropertySimple);
+
+ //create object to test and inject required dependencies
+ TemplatedComponent objectUnderTest = new TemplatedComponent();
+
+ objectUnderTest.context = mockResourceContext;
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ Configuration result = objectUnderTest.loadResourceConfiguration();
+
+ //verify the results (Assert and mock verification)
+ Assert.assertEquals(result, mockConfiguration);
+
+ verify(mockMap, times(1)).remove(eq("__type"));
+ verify(mockConfiguration, times(1)).get(eq("__type"));
+ verify(mockConfiguration, never()).get(eq("__name"));
+ verify(mockConfiguration, times(1)).get(eq("path"));
+ verify(mockConfiguration, times(1)).put(eq(typePropertySimple));
+
+
PowerMockito.verifyNew(PropertySimple.class).withArguments(eq("__type"),
eq("xyz"));
+
PowerMockito.verifyNew(ConfigurationLoadDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Test
+ public void loadResourceConfigurationWithName() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceContext mockResourceContext = mock(ResourceContext.class);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockResourceContext.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ ConfigurationTemplate mockConfigurationTemplate =
mock(ConfigurationTemplate.class);
+
when(mockConfigurationDefinition.getDefaultTemplate()).thenReturn(mockConfigurationTemplate);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+
when(mockConfigurationTemplate.getConfiguration()).thenReturn(mockConfiguration);
+
+ Property mockProperty = mock(Property.class);
+ when(mockConfiguration.get("_type")).thenReturn(null);
+ when(mockConfiguration.get(eq("__name"))).thenReturn(mockProperty);
+
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ ConfigurationLoadDelegate mockConfigurationLoadDelegate =
mock(ConfigurationLoadDelegate.class);
+ PowerMockito.whenNew(ConfigurationLoadDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockConfigurationLoadDelegate);
+
+
when(mockConfigurationLoadDelegate.loadResourceConfiguration()).thenReturn(mockConfiguration);
+
+ PropertySimple pathPropertySimple = new PropertySimple("path",
"abc=def,xyz=test1");
+
when(mockConfiguration.get(eq("path"))).thenReturn(pathPropertySimple);
+
when(mockResourceContext.getPluginConfiguration()).thenReturn(mockConfiguration);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+ PropertySimple namePropertySimple = new PropertySimple("__name",
"test1");
+ PowerMockito.whenNew(PropertySimple.class).withParameterTypes(String.class,
Object.class)
+ .withArguments(eq("__name"),
eq("test1")).thenReturn(namePropertySimple);
+
+ //create object to test and inject required dependencies
+ TemplatedComponent objectUnderTest = new TemplatedComponent();
+
+ objectUnderTest.context = mockResourceContext;
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ Configuration result = objectUnderTest.loadResourceConfiguration();
+
+ //verify the results (Assert and mock verification)
+ Assert.assertEquals(result, mockConfiguration);
+
+ verify(mockMap, times(1)).remove(eq("__name"));
+ verify(mockConfiguration, times(1)).get(eq("__type"));
+ verify(mockConfiguration, times(1)).get(eq("__name"));
+ verify(mockConfiguration, times(1)).get(eq("path"));
+ verify(mockConfiguration, times(1)).put(eq(namePropertySimple));
+
+
PowerMockito.verifyNew(PropertySimple.class).withArguments(eq("__name"),
eq("test1"));
+
PowerMockito.verifyNew(ConfigurationLoadDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Test
+ public void updateResourceConfigurationWithType() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceContext mockResourceContext = mock(ResourceContext.class);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockResourceContext.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ ConfigurationTemplate mockConfigurationTemplate =
mock(ConfigurationTemplate.class);
+
when(mockConfigurationDefinition.getDefaultTemplate()).thenReturn(mockConfigurationTemplate);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+
when(mockConfigurationTemplate.getConfiguration()).thenReturn(mockConfiguration);
+
+ Property mockProperty = mock(Property.class);
+ when(mockConfiguration.get(eq("__type"))).thenReturn(mockProperty);
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ ConfigurationUpdateReport mockReport = mock(ConfigurationUpdateReport.class);
+ when(mockReport.getConfiguration()).thenReturn(mockConfiguration);
+
+ ConfigurationWriteDelegate mockConfigurationWriteDelegate =
mock(ConfigurationWriteDelegate.class);
+ PowerMockito.whenNew(ConfigurationWriteDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockConfigurationWriteDelegate);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+
+ //create object to test and inject required dependencies
+ TemplatedComponent objectUnderTest = new TemplatedComponent();
+
+ objectUnderTest.context = mockResourceContext;
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ objectUnderTest.updateResourceConfiguration(mockReport);
+
+ //verify the results (Assert and mock verification)
+ verify(mockMap, times(1)).remove(eq("__type"));
+ verify(mockConfiguration, times(1)).get(eq("__type"));
+ verify(mockConfiguration, never()).get(eq("__name"));
+ verify(mockConfiguration, times(1)).remove(eq("__type"));
+
+
PowerMockito.verifyNew(ConfigurationWriteDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Test
+ public void updateResourceConfigurationWithName() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceContext mockResourceContext = mock(ResourceContext.class);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockResourceContext.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ ConfigurationTemplate mockConfigurationTemplate =
mock(ConfigurationTemplate.class);
+
when(mockConfigurationDefinition.getDefaultTemplate()).thenReturn(mockConfigurationTemplate);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+
when(mockConfigurationTemplate.getConfiguration()).thenReturn(mockConfiguration);
+
+ Property mockProperty = mock(Property.class);
+ when(mockConfiguration.get(eq("__type"))).thenReturn(null);
+ when(mockConfiguration.get(eq("__name"))).thenReturn(mockProperty);
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ ConfigurationUpdateReport mockReport = mock(ConfigurationUpdateReport.class);
+ when(mockReport.getConfiguration()).thenReturn(mockConfiguration);
+
+ ConfigurationWriteDelegate mockConfigurationWriteDelegate =
mock(ConfigurationWriteDelegate.class);
+ PowerMockito.whenNew(ConfigurationWriteDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockConfigurationWriteDelegate);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+ //create object to test and inject required dependencies
+ TemplatedComponent objectUnderTest = new TemplatedComponent();
+
+ objectUnderTest.context = mockResourceContext;
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ objectUnderTest.updateResourceConfiguration(mockReport);
+
+ //verify the results (Assert and mock verification)
+ verify(mockMap, times(1)).remove(eq("__name"));
+ verify(mockConfiguration, times(1)).get(eq("__type"));
+ verify(mockConfiguration, times(1)).get(eq("__name"));
+ verify(mockConfiguration, times(1)).remove(eq("__name"));
+
+
PowerMockito.verifyNew(ConfigurationWriteDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponentTest.java
new file mode 100644
index 0000000..cefd3f1
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponentTest.java
@@ -0,0 +1,177 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Map;
+
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.testng.PowerMockObjectFactory;
+import org.testng.Assert;
+import org.testng.IObjectFactory;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinition;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.modules.plugins.jbossas7.json.Address;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+@PrepareForTest({ TemplatedSubResourcesComponent.class })
+public class TemplatedSubResourcesComponentTest {
+
+ @ObjectFactory
+ public IObjectFactory getObjectFactory() {
+ return new PowerMockObjectFactory();
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Test
+ public void createResourceWithType() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ CreateResourceReport mockReport = mock(CreateResourceReport.class);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+ when(mockReport.getResourceConfiguration()).thenReturn(mockConfiguration);
+
+ PropertySimple typePropertySimple = new PropertySimple("__type",
"xyz");
+
when(mockConfiguration.get(eq("__type"))).thenReturn(typePropertySimple);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockReport.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ CreateResourceDelegate mockCreateResourceDelegate =
mock(CreateResourceDelegate.class);
+ PowerMockito.whenNew(CreateResourceDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockCreateResourceDelegate);
+
+ when(mockReport.getResourceConfiguration()).thenReturn(mockConfiguration);
+
+ when(mockReport.getPluginConfiguration()).thenReturn(mockConfiguration);
+
+ PropertySimple pathPropertySimple = new PropertySimple("path",
"xyz");
+ PowerMockito.whenNew(PropertySimple.class).withParameterTypes(String.class,
Object.class)
+ .withArguments(eq("path"),
eq("xyz")).thenReturn(pathPropertySimple);
+
+
when(mockCreateResourceDelegate.createResource(eq(mockReport))).thenReturn(mockReport);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+ //create object to test and inject required dependencies
+ TemplatedSubResourcesComponent objectUnderTest = new
TemplatedSubResourcesComponent();
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ CreateResourceReport result = objectUnderTest.createResource(mockReport);
+
+ //verify the results (Assert and mock verification)
+ Assert.assertEquals(result, mockReport);
+
+ verify(mockMap, times(1)).remove(eq("__type"));
+ verify(mockConfiguration, times(2)).get(eq("__type"));
+ verify(mockConfiguration, never()).get(eq("__name"));
+ verify(mockConfiguration, times(1)).put(eq(pathPropertySimple));
+
+ PowerMockito.verifyNew(PropertySimple.class).withArguments(eq("path"),
eq("xyz"));
+
PowerMockito.verifyNew(CreateResourceDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Test
+ public void createResourceWithName() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ CreateResourceReport mockReport = mock(CreateResourceReport.class);
+
+ Configuration mockConfiguration = mock(Configuration.class);
+ when(mockReport.getResourceConfiguration()).thenReturn(mockConfiguration);
+
+ PropertySimple namePropertySimple = new PropertySimple("__name",
"xyz");
+ when(mockConfiguration.get(eq("__type"))).thenReturn(null);
+
when(mockConfiguration.get(eq("__name"))).thenReturn(namePropertySimple);
+
+ ResourceType mockResourceType = mock(ResourceType.class);
+ when(mockReport.getResourceType()).thenReturn(mockResourceType);
+
+ ConfigurationDefinition mockConfigurationDefinition =
mock(ConfigurationDefinition.class);
+
when(mockResourceType.getResourceConfigurationDefinition()).thenReturn(mockConfigurationDefinition);
+
+ Map<String, PropertyDefinition> mockMap = (Map<String,
PropertyDefinition>) mock(Map.class);
+ when(mockConfigurationDefinition.getPropertyDefinitions()).thenReturn(mockMap);
+
+ CreateResourceDelegate mockCreateResourceDelegate =
mock(CreateResourceDelegate.class);
+ PowerMockito.whenNew(CreateResourceDelegate.class)
+ .withParameterTypes(ConfigurationDefinition.class, ASConnection.class,
Address.class)
+ .withArguments(any(ConfigurationDefinition.class), any(ASConnection.class),
any(Address.class))
+ .thenReturn(mockCreateResourceDelegate);
+
+ when(mockReport.getResourceConfiguration()).thenReturn(mockConfiguration);
+
+ when(mockReport.getPluginConfiguration()).thenReturn(mockConfiguration);
+
+
when(mockCreateResourceDelegate.createResource(eq(mockReport))).thenReturn(mockReport);
+
+ ASConnection mockASConnection = mock(ASConnection.class);
+
+ //create object to test and inject required dependencies
+ TemplatedSubResourcesComponent objectUnderTest = new
TemplatedSubResourcesComponent();
+ objectUnderTest.testConnection = mockASConnection;
+
+ //run code under test
+ CreateResourceReport result = objectUnderTest.createResource(mockReport);
+
+ //verify the results (Assert and mock verification)
+ Assert.assertEquals(result, mockReport);
+
+ verify(mockMap, times(1)).remove(eq("__name"));
+ verify(mockConfiguration, times(1)).get(eq("__type"));
+ verify(mockConfiguration, times(2)).get(eq("__name"));
+
+ verify(mockReport, times(1)).setUserSpecifiedResourceName(eq("xyz"));
+
+
PowerMockito.verifyNew(CreateResourceDelegate.class).withArguments(any(ConfigurationDefinition.class),
+ eq(mockASConnection), any(Address.class));
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/TemplatedResourcesTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/TemplatedResourcesTest.java
new file mode 100644
index 0000000..5d64977
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/TemplatedResourcesTest.java
@@ -0,0 +1,151 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.modules.plugins.jbossas7.itest.standalone;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.rhq.core.clientapi.agent.configuration.ConfigurationUpdateRequest;
+import org.rhq.core.clientapi.server.configuration.ConfigurationUpdateResponse;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.configuration.ConfigurationManager;
+import org.rhq.core.pc.inventory.InventoryManager;
+import org.rhq.core.pc.inventory.ResourceContainer;
+import org.rhq.modules.plugins.jbossas7.itest.AbstractJBossAS7PluginTest;
+import org.rhq.test.arquillian.RunDiscovery;
+
+@Test(groups = { "integration", "pc", "standalone" },
singleThreaded = true)
+public class TemplatedResourcesTest extends AbstractJBossAS7PluginTest {
+
+ private Log log = LogFactory.getLog(this.getClass());
+
+ @Test(priority = 10, groups = "discovery")
+ @RunDiscovery(discoverServices = true, discoverServers = true)
+ public void discoverPlatform() throws Exception {
+ Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
+ assertNotNull(platform);
+ assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+
+ Thread.sleep(20 * 1000L);
+ }
+
+ @Test(priority = 11)
+ public void loadUpdateTemplatedResourceConfiguration() throws Exception {
+ InventoryManager inventoryManager = this.pluginContainer.getInventoryManager();
+ ConfigurationManager configurationManager =
this.pluginContainer.getConfigurationManager();
+
+ Resource platform = inventoryManager.getPlatform();
+ ResourceContainer platformContainer =
inventoryManager.getResourceContainer(platform);
+
+ Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
+ StandaloneServerComponentTest.RESOURCE_KEY);
+ inventoryManager.activateResource(server, platformContainer, false);
+
+ Thread.sleep(20 * 1000L);
+
+ for (ResourceData resourceData : testResourceData) {
+ ResourceType resourceType = new ResourceType(resourceData.resourceTypeName,
PLUGIN_NAME,
+ ResourceCategory.SERVICE, null);
+ Resource subsystem = getResourceByTypeAndKey(server, resourceType,
resourceData.resourceKey);
+
+ Assert.assertNotNull(subsystem);
+
+ Queue<Resource> unparsedResources = new LinkedList<Resource>();
+ unparsedResources.add(subsystem);
+
+ List<Resource> foundResources = new ArrayList<Resource>();
+ while (!unparsedResources.isEmpty()) {
+ Resource currentResource = unparsedResources.poll();
+
+ for (Resource childResource : currentResource.getChildResources()) {
+ unparsedResources.add(childResource);
+ if
(childResource.getResourceType().getName().equals(resourceData.subResourceType)) {
+ foundResources.add(childResource);
+ }
+ }
+ }
+
+ for (Resource resourceUnderTest : foundResources) {
+ log.info(foundResources);
+
+ Configuration resourceUnderTestConfig = configurationManager
+ .loadResourceConfiguration(resourceUnderTest.getId());
+
+ Assert.assertNotNull(resourceUnderTestConfig);
+ Assert.assertFalse(resourceUnderTestConfig.getProperties().isEmpty());
+
+ boolean specialPropertyFound = false;
+ for (Property property : resourceUnderTestConfig.getProperties()) {
+ if
(property.getName().equals(resourceData.specialConfigurationProperty)) {
+ Assert.assertNotNull(((PropertySimple)
property).getStringValue());
+ specialPropertyFound = true;
+ break;
+ }
+ }
+
+ Assert.assertTrue(specialPropertyFound,
resourceData.specialConfigurationProperty
+ + "property not found in the list of properties");
+
+ ConfigurationUpdateRequest testUpdateRequest = new
ConfigurationUpdateRequest(1,
+ resourceUnderTestConfig, resourceUnderTest.getId());
+ ConfigurationUpdateResponse response = configurationManager
+ .executeUpdateResourceConfigurationImmediately(testUpdateRequest);
+
+ Assert.assertNotNull(response);
+ }
+ }
+ }
+
+ private ResourceData[] testResourceData = new ResourceData[] {
+ new ResourceData("Infinispan", "subsystem=infinispan",
"Cache", "__type"),
+ new ResourceData("Threads", "subsystem=threads",
"ThreadPool", "__type"),
+ new ResourceData("Messaging", "subsystem=messaging",
"Path", "__name")
+ };
+
+ private static class ResourceData {
+ final String resourceTypeName;
+ final String resourceKey;
+ final String subResourceType;
+ final String specialConfigurationProperty;
+
+ public ResourceData(String resourceTypeName, String resourceKey, String
subResourceType,
+ String specialConfigurationProperty) {
+ this.resourceTypeName = resourceTypeName;
+ this.resourceKey = resourceKey;
+ this.subResourceType = subResourceType;
+ this.specialConfigurationProperty = specialConfigurationProperty;
+ }
+ }
+}
commit 0c0ff7a009891022a4629c51b69414633e12f54b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 7 14:51:16 2012 -0400
[BZ 829455] script plugin operation can now be told to kill on timeout or not and can
be given a timeout to wait (or 0 to not wait)
diff --git
a/modules/plugins/script/src/main/java/org/rhq/plugins/script/ScriptServerComponent.java
b/modules/plugins/script/src/main/java/org/rhq/plugins/script/ScriptServerComponent.java
index 38f1b02..0ff12b0 100644
---
a/modules/plugins/script/src/main/java/org/rhq/plugins/script/ScriptServerComponent.java
+++
b/modules/plugins/script/src/main/java/org/rhq/plugins/script/ScriptServerComponent.java
@@ -61,7 +61,7 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
private final Log log = LogFactory.getLog(ScriptServerComponent.class);
- private static final long MAX_WAIT_TIME = 3600000L;
+ private static final long DEFAULT_MAX_WAIT_TIME = 3600000L;
protected static final String PLUGINCONFIG_EXECUTABLE = "executable";
protected static final String PLUGINCONFIG_WORKINGDIR =
"workingDirectory";
@@ -80,6 +80,9 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
protected static final String PLUGINCONFIG_FIXED_DESC =
"fixedDescription";
protected static final String OPERATION_PARAM_ARGUMENTS = "arguments";
+ protected static final String OPERATION_PARAM_WAIT_TIME = "waitTime";
+ protected static final String OPERATION_PARAM_CAPTURE_OUTPUT =
"captureOutput";
+ protected static final String OPERATION_PARAM_KILL_ON_TIMEOUT =
"killOnTimeout";
protected static final String OPERATION_RESULT_EXITCODE = "exitCode";
protected static final String OPERATION_RESULT_OUTPUT = "output";
@@ -161,7 +164,7 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
ProcessExecutionResults exeResults = exeResultsCache.get((arguments ==
null) ? "" : arguments);
if (exeResults == null) {
boolean captureOutput = !valueIsExitCode; // don't need output if
we need to just check exit code
- exeResults = executeExecutable(arguments, MAX_WAIT_TIME,
captureOutput);
+ exeResults = executeExecutable(arguments, DEFAULT_MAX_WAIT_TIME,
captureOutput);
exeResultsCache.put((arguments == null) ? "" : arguments,
exeResults);
}
@@ -288,27 +291,53 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
OperationResult result = new OperationResult();
String arguments = configuration.getSimpleValue(OPERATION_PARAM_ARGUMENTS,
null);
+ String waitTimeStr = configuration.getSimpleValue(OPERATION_PARAM_WAIT_TIME,
null);
+ String captureOutputStr =
configuration.getSimpleValue(OPERATION_PARAM_CAPTURE_OUTPUT, null);
+ String killOnTimeoutStr =
configuration.getSimpleValue(OPERATION_PARAM_KILL_ON_TIMEOUT, null);
- ProcessExecutionResults exeResults = executeExecutable(arguments, MAX_WAIT_TIME,
true);
- Integer exitcode = exeResults.getExitCode();
- String output = exeResults.getCapturedOutput();
- Throwable error = exeResults.getError();
+ long waitTime;
+ boolean captureOutput;
+ boolean killOnTimeout;
- if (exitcode == null) {
- exitcode = Integer.valueOf(-999);
+ if (waitTimeStr != null) {
+ try {
+ waitTime = Long.parseLong(waitTimeStr);
+ waitTime *= 1000L; // the parameter is specified in seconds, but we need
it in milliseconds
+ } catch (NumberFormatException e) {
+ throw new NumberFormatException("Wait time parameter value is
invalid: " + waitTimeStr);
+ }
+ } else {
+ waitTime = DEFAULT_MAX_WAIT_TIME;
}
- if (output == null) {
- output = "";
+ if (captureOutputStr != null) {
+ captureOutput = Boolean.parseBoolean(captureOutputStr);
+ } else {
+ captureOutput = true;
}
+ if (killOnTimeoutStr != null) {
+ killOnTimeout = Boolean.parseBoolean(killOnTimeoutStr);
+ } else {
+ killOnTimeout = true;
+ }
+
+ ProcessExecutionResults exeResults = executeExecutable(arguments, waitTime,
captureOutput, killOnTimeout);
+ Integer exitcode = exeResults.getExitCode();
+ String output = exeResults.getCapturedOutput();
+ Throwable error = exeResults.getError();
+
if (error != null) {
result.setErrorMessage(ThrowableUtil.getAllMessages(error));
}
Configuration resultsConfig = result.getComplexResults();
- resultsConfig.put(new PropertySimple(OPERATION_RESULT_EXITCODE, exitcode));
- resultsConfig.put(new PropertySimple(OPERATION_RESULT_OUTPUT, output));
+ if (exitcode != null) {
+ resultsConfig.put(new PropertySimple(OPERATION_RESULT_EXITCODE, exitcode));
+ }
+ if (output != null) {
+ resultsConfig.put(new PropertySimple(OPERATION_RESULT_OUTPUT, output));
+ }
return result;
}
@@ -320,20 +349,36 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
/**
* Executes the CLI executable with the given arguments.
*
+ * Same as {@link #executeExecutable(String, long, boolean, boolean)} with
'killOnTimeout' being true.
+ *
+ * @return the results of the execution
+ *
+ * @throws InvalidPluginConfigurationException
+ */
+ protected ProcessExecutionResults executeExecutable(String args, long wait, boolean
captureOutput) {
+ return executeExecutable(args, wait, captureOutput, true);
+ }
+
+ /**
+ * Executes the CLI executable with the given arguments.
+ *
* @param args the arguments to send to the executable (may be
<code>null</code>)
* @param wait the maximum time in milliseconds to wait for the process to execute; 0
means do not wait
* @param captureOutput if <code>true</code>, the executables output will
be captured and returned
+ * @param killOnTimeout if <code>true</code> and if 'wait' is
greater than 0, the process will be killed if it times out
*
* @return the results of the execution
*
* @throws InvalidPluginConfigurationException
*/
- protected ProcessExecutionResults executeExecutable(String args, long wait, boolean
captureOutput)
+ protected ProcessExecutionResults executeExecutable(String args, long wait, boolean
captureOutput,
+ boolean killOnTimeout)
throws InvalidPluginConfigurationException {
SystemInfo sysInfo = this.resourceContext.getSystemInformation();
Configuration pluginConfig = this.resourceContext.getPluginConfiguration();
- ProcessExecutionResults results = executeExecutable(sysInfo, pluginConfig, args,
wait, captureOutput);
+ ProcessExecutionResults results = executeExecutable(sysInfo, pluginConfig, args,
wait, captureOutput,
+ killOnTimeout);
if (log.isDebugEnabled()) {
logDebug("CLI results: exitcode=[" + results.getExitCode() +
"]; error=[" + results.getError()
@@ -347,13 +392,20 @@ public class ScriptServerComponent implements ResourceComponent,
MeasurementFace
protected static ProcessExecutionResults executeExecutable(SystemInfo sysInfo,
Configuration pluginConfig,
String args, long wait, boolean captureOutput) throws
InvalidPluginConfigurationException {
+ return executeExecutable(sysInfo, pluginConfig, args, wait, captureOutput,
true);
+ }
+
+ private static ProcessExecutionResults executeExecutable(SystemInfo sysInfo,
Configuration pluginConfig,
+ String args, long wait, boolean captureOutput, boolean killOnTimeout)
+ throws InvalidPluginConfigurationException {
+
ProcessExecution processExecution = getProcessExecutionInfo(pluginConfig);
if (args != null) {
processExecution.setArguments(args.split(" "));
}
processExecution.setCaptureOutput(captureOutput);
processExecution.setWaitForCompletion(wait);
- processExecution.setKillOnTimeout(true);
+ processExecution.setKillOnTimeout(killOnTimeout);
ProcessExecutionResults results = sysInfo.executeProcess(processExecution);
diff --git a/modules/plugins/script/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/script/src/main/resources/META-INF/rhq-plugin.xml
index 851e830..4537bf9 100644
--- a/modules/plugins/script/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/script/src/main/resources/META-INF/rhq-plugin.xml
@@ -57,10 +57,13 @@
description="Executes the executable with a set of arguments and
returns the output and exit code.">
<parameters>
<c:simple-property name="arguments"
required="false" description="The arguments to pass to the
executable." />
+ <c:simple-property name="waitTime" required="false"
type="long" description="The number of seconds to wait for the process to
end. If 0 or less, the operation will return immediately without waiting for the script to
complete. Default is one hour." />
+ <c:simple-property name="captureOutput"
required="false" type="boolean" description="If true, the
script's output will be captured and returned. Default is true." />
+ <c:simple-property name="killOnTimeout"
required="false" type="boolean" description="If true, and if
waitTime parameter is greater than 0, the script will be forcibly terminated if the wait
time expires before the script finishes. In other words, the script process will be killed
if it times out. Default is true." />
</parameters>
<results>
- <c:simple-property name="exitCode" type="integer"
required="true"/>
- <c:simple-property name="output" type="longString"
required="false" />
+ <c:simple-property name="exitCode" type="integer"
required="false" description="The exit code returned when the script
terminated. This will not be set if the script was not waited for (i.e. the wait time was
0) or if the wait time expired before the script finished."/>
+ <c:simple-property name="output" type="longString"
required="false" description="The output of the script. This will not be
set if the operation was told not to capture the output."/>
</results>
</operation>
commit db072ef663ee9d9e276971e1cce9021e26cafef5
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu Jun 7 14:30:23 2012 -0400
[827647 Relative path for Drift Detections Definition Include/Excludes Path does not
handle relative path alias or trailing file separator correctly]
[827634 Unable to enter a Drift Detection Definition Base Directory fileSystem path
that contains parenthesis]
- Add support for Windows allowance of parentheses in directory names.
- Add support for more flexible specification of the drift base directory
in a Drift Filter.
- Add relevant tests for new features.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
index 2b21f03..dee6e01 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
@@ -70,12 +70,12 @@ public class DriftConfigurationDefinition implements Serializable {
// plugin container as part of regex expressions, we must make sure they are
restricted to only be characters
// valid for file system paths and regex. And, additionally for filter patterns, the
(ant-style) filter
// wildcards. Thus, we only allow the base paths to include the separator characters
"\", "/", the windows
- // drive character ":" and the filename characters (see
PROP_NAME_REGEX_PATTERN). Filter paths can
- // contain the same as the base path, less the drive character. And filter patterns
are the same as
- // filter paths, plus the wildcard characters. "*", "?".
- public static final String PROP_BASEDIR_PATH_REGEX_PATTERN = "[
\\.\\-\\w/\\:\\\\]+";
- public static final String PROP_FILTER_PATH_REGEX_PATTERN = "[
\\.\\-\\w/\\\\]+";
- public static final String PROP_FILTER_PATTERN_REGEX_PATTERN = "[
\\.\\-\\w/\\\\\\?\\*]+";
+ // drive character ":", parentheses to support windows (x86) type system
directories, and the filename characters
+ // (see PROP_NAME_REGEX_PATTERN). Filter paths can contain the same as the base
path, less the drive character.
+ // And filter patterns are the same as filter paths, plus the wildcard characters.
"*", "?".
+ public static final String PROP_BASEDIR_PATH_REGEX_PATTERN = "[
\\.\\-\\(\\)\\w/\\:\\\\]+";
+ public static final String PROP_FILTER_PATH_REGEX_PATTERN = "[
\\.\\-\\(\\)\\w/\\\\]+";
+ public static final String PROP_FILTER_PATTERN_REGEX_PATTERN = "[
\\.\\-\\(\\)\\w/\\\\\\?\\*]+";
public static final boolean DEFAULT_ENABLED = true;
public static final boolean DEFAULT_ATTACHED = true;
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java
index 63d5a6c..1c9e50c 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java
@@ -413,7 +413,8 @@ public class DriftDetector implements Runnable {
} else {
for (Filter filter : includes) {
String path = filter.getPath();
- if (".".equals(path)) {
+ // support various ways of expressing the base directory with relative
paths
+ if (".".equals(path) || "./".equals(path) ||
"/".equals(path)) {
directories.add(basedir);
} else {
directories.add(new File(basedir, path));
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/FilterFileVisitor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/FilterFileVisitor.java
index 77a8ef4..078d5d7 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/FilterFileVisitor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/FilterFileVisitor.java
@@ -97,7 +97,7 @@ public class FilterFileVisitor implements FileVisitor {
/**
* Besides converting the {@link Filter} into a {@link PathFilter}, this method does
a
- * couple additional things. If the path is a relative, it is expanded into an
absolute
+ * couple additional things. If the path is relative, it is expanded into an
absolute
* path. If the path denotes a directory and if no pattern is specified, it is
assumed
* that everything under that directory including sub directories should be
considered
* matches.
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/FilterFileVisitorTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/FilterFileVisitorTest.java
index 80a86ea..a654607 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/FilterFileVisitorTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/FilterFileVisitorTest.java
@@ -19,6 +19,14 @@
package org.rhq.core.pc.drift;
+import static java.util.Arrays.asList;
+import static java.util.Collections.emptyList;
+import static org.apache.commons.io.FileUtils.deleteDirectory;
+import static org.apache.commons.io.FileUtils.toFile;
+import static org.rhq.core.util.file.FileUtil.forEachFile;
+import static org.rhq.test.AssertUtils.assertCollectionEqualsNoOrder;
+import static org.testng.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -31,14 +39,6 @@ import org.testng.annotations.Test;
import org.rhq.core.domain.drift.Filter;
import org.rhq.core.util.file.FileVisitor;
-import static java.util.Arrays.asList;
-import static java.util.Collections.emptyList;
-import static org.apache.commons.io.FileUtils.deleteDirectory;
-import static org.apache.commons.io.FileUtils.toFile;
-import static org.rhq.core.util.file.FileUtil.forEachFile;
-import static org.rhq.test.AssertUtils.assertCollectionEqualsNoOrder;
-import static org.testng.Assert.assertTrue;
-
public class FilterFileVisitorTest {
private File basedir;
@@ -72,6 +72,23 @@ public class FilterFileVisitorTest {
}
@Test
+ public void visitBaseDirFilesThatMatchFilters() throws Exception {
+ File fooJar = touch(basedir, "foo.jar");
+ File gooJar = touch(basedir, "goo.jar");
+ File myapp = touch(basedir, "myapp.war");
+ touch(basedir, "bar.jar");
+
+ List<Filter> includes = asList(new Filter(".", "foo*"),
new Filter("./", "*.war"), new Filter("/",
"goo*"));
+ List<Filter> excludes = emptyList();
+ TestVisitor visitor = new TestVisitor();
+
+ forEachFile(basedir, new FilterFileVisitor(basedir, includes, excludes,
visitor));
+
+ assertCollectionEqualsNoOrder(asList(fooJar, gooJar, myapp),
visitor.visitedFiles,
+ "Filtering failed with multiple includes and no excludes");
+ }
+
+ @Test
public void visitFilesThatMatchIncludes() throws Exception {
File libDir = mkdir(basedir, "lib");
File fooJar = touch(libDir, "foo.jar");
@@ -87,7 +104,38 @@ public class FilterFileVisitorTest {
forEachFile(basedir, new FilterFileVisitor(basedir, includes, excludes,
visitor));
assertCollectionEqualsNoOrder(asList(fooJar, fooWar, myapp),
visitor.visitedFiles,
+ "Filtering failed with multiple includes and no excludes");
+ }
+
+ @Test
+ public void visitFilesThatMatchIncludesInWinParenDirs() throws Exception {
+ // win test only
+ if ('/' == File.separatorChar) {
+ return;
+ }
+
+ File root = toFile(getClass().getResource("."));
+ File winbasedir = new File(root, "base (dir)");
+ deleteDirectory(winbasedir);
+ winbasedir.mkdirs();
+
+ File parenDir = mkdir(winbasedir, "sys (x86)");
+ File fooJar = touch(parenDir, "foo.jar");
+ File fooWar = touch(parenDir, "foo-1.jar");
+ File myapp = touch(parenDir, "myapp.war");
+ touch(parenDir, "bar.jar");
+
+ List<Filter> includes = asList(new Filter(parenDir.getAbsolutePath(),
"foo*"),
+ new Filter(parenDir.getAbsolutePath(), "*.war"));
+ List<Filter> excludes = emptyList();
+ TestVisitor visitor = new TestVisitor();
+
+ forEachFile(winbasedir, new FilterFileVisitor(winbasedir, includes, excludes,
visitor));
+
+ assertCollectionEqualsNoOrder(asList(fooJar, fooWar, myapp),
visitor.visitedFiles,
"Filtering failed with mulitple includes and no excludes");
+
+ deleteDirectory(winbasedir);
}
@Test
@@ -114,8 +162,8 @@ public class FilterFileVisitorTest {
forEachFile(basedir, new FilterFileVisitor(basedir, includes, excludes,
visitor));
- assertCollectionEqualsNoOrder(asList(server1Html), visitor.visitedFiles,
"Visit files that do not match " +
- "excludes filter and no includes are specified");
+ assertCollectionEqualsNoOrder(asList(server1Html), visitor.visitedFiles,
"Visit files that do not match "
+ + "excludes filter and no includes are specified");
}
@Test
@@ -195,8 +243,8 @@ public class FilterFileVisitorTest {
forEachFile(basedir, new FilterFileVisitor(basedir, includes, excludes,
visitor));
assertCollectionEqualsNoOrder(asList(serverEar, indexHtml),
visitor.visitedFiles,
- "When a filter path specifies a directory and no pattern is specified,
all files under that directory, " +
- "including subdirectories should be considered a match.");
+ "When a filter path specifies a directory and no pattern is specified,
all files under that directory, "
+ + "including subdirectories should be considered a match.");
}
private File mkdir(File parent, String dirName) throws IOException {
diff --git a/modules/core/util/src/main/java/org/rhq/core/util/file/FileUtil.java
b/modules/core/util/src/main/java/org/rhq/core/util/file/FileUtil.java
index a78f6b2..43d8c37 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/file/FileUtil.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/file/FileUtil.java
@@ -465,7 +465,7 @@ public class FileUtil {
* <tr>
* <td>jboss/server/**/*.war</td>
* <td>Matches all .war files under the server directory. Sub
directories are included as well such
- * that jboss/server/default/myapp.war jboss/server/production/myapp.war and
+ * that jboss/server/default/myapp.war, jboss/server/production/myapp.war
and
* jboss/server/default/myapp.ear/myapp.war all match</td>
* </tr>
* </table>
@@ -502,6 +502,11 @@ public class FileUtil {
pathString += File.separator;
}
pathString = pathString.replace("\\", "\\\\");
+
+ // escape parens in the path, these are valid dir chars on win and also
regex characters
+ pathString = pathString.replace("(", "\\(");
+ pathString = pathString.replace(")", "\\)");
+
regex.append(pathString).append("(");
buildPatternRegex(filter.getPattern(), regex);
regex.append(")");
@@ -534,9 +539,11 @@ public class FileUtil {
}
regex.append("[^" + separator + "]*");
- } else if (c == '.') {
+ } else if (c == '.' || c == '(' || c == ')') {
// escape file extensions because dot is a regex character
- regex.append("\\.");
+ // escape parens because they are regex characters
+ regex.append("\\");
+ regex.append(c);
} else if (c == '\\') {
// escape windows separators because backslash is a regex character
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index 3da8bd2..4f8bc15 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -18,20 +18,69 @@
*/
package org.rhq.enterprise.server.drift;
+import static java.util.Arrays.asList;
+import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED;
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
+import static org.rhq.core.domain.drift.DriftComplianceStatus.IN_COMPLIANCE;
+import static org.rhq.core.domain.drift.DriftComplianceStatus.OUT_OF_COMPLIANCE_DRIFT;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
import difflib.DiffUtils;
import difflib.Patch;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
+
import org.jboss.remoting.CannotConnectException;
+
import org.rhq.core.clientapi.agent.drift.DriftAgentService;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.EntityContext;
-import org.rhq.core.domain.criteria.*;
-import org.rhq.core.domain.drift.*;
+import org.rhq.core.domain.criteria.DriftChangeSetCriteria;
+import org.rhq.core.domain.criteria.DriftCriteria;
+import org.rhq.core.domain.criteria.DriftDefinitionCriteria;
+import org.rhq.core.domain.criteria.GenericDriftChangeSetCriteria;
+import org.rhq.core.domain.criteria.GenericDriftCriteria;
+import org.rhq.core.domain.drift.Drift;
+import org.rhq.core.domain.drift.DriftCategory;
+import org.rhq.core.domain.drift.DriftChangeSet;
+import org.rhq.core.domain.drift.DriftChangeSetCategory;
+import org.rhq.core.domain.drift.DriftComplianceStatus;
+import org.rhq.core.domain.drift.DriftComposite;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition;
import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode;
+import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.DriftDefinition.BaseDirectory;
+import org.rhq.core.domain.drift.DriftDefinitionComparator;
import org.rhq.core.domain.drift.DriftDefinitionComparator.CompareMode;
+import org.rhq.core.domain.drift.DriftDefinitionComposite;
+import org.rhq.core.domain.drift.DriftDefinitionTemplate;
+import org.rhq.core.domain.drift.DriftDetails;
+import org.rhq.core.domain.drift.DriftFile;
+import org.rhq.core.domain.drift.DriftSnapshot;
+import org.rhq.core.domain.drift.DriftSnapshotRequest;
+import org.rhq.core.domain.drift.FileDiffReport;
+import org.rhq.core.domain.drift.Filter;
import org.rhq.core.domain.drift.dto.DriftChangeSetDTO;
import org.rhq.core.domain.drift.dto.DriftDTO;
import org.rhq.core.domain.drift.dto.DriftFileDTO;
@@ -55,28 +104,6 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
import org.rhq.enterprise.server.util.LookupUtil;
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
-import javax.ejb.TransactionAttribute;
-import javax.jms.*;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static java.util.Arrays.asList;
-import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED;
-import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftComplianceStatus.IN_COMPLIANCE;
-import static org.rhq.core.domain.drift.DriftComplianceStatus.OUT_OF_COMPLIANCE_DRIFT;
-
-import java.lang.IllegalStateException;
-
/**
* The SLSB supporting Drift management to clients.
*
commit 18781d18c5c94c08f82a3c21941639187515c701
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu Jun 7 14:26:37 2012 -0400
[818664] Add more <help> text to plugin descriptor for generated doc re:
start script handling.
- Also, reformat to indent=2 spaces.
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index 059fe9d..32e1754 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -880,454 +880,445 @@
]>
-<!--############################################# END OF XML ENTITIES
###############################################-->
+<!--############################################# END OF XML ENTITIES
############################################### -->
<plugin name="JBossAS5" displayName="JBoss Application Server
5.x/6.x" package="org.rhq.plugins.jbossas5"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- description="provides management and monitoring of JBoss AS 6.x and JBoss
EAP/EWP/SOA-P 5.x"
- xmlns="urn:xmlns:rhq-plugin"
- xmlns:c="urn:xmlns:rhq-configuration">
-
- <depends plugin="JMX" useClasses="true"/>
-
- <server name="JBossAS Server"
- classLoader="instance"
- class="ApplicationServerComponent"
- discovery="ApplicationServerDiscoveryComponent"
- description="JBoss Application Server (AS), Enterprise Application
Platform (EAP), Enterprise SOA Platform (SOA-P), or Enterprise Web Platform (EWP) 5.x or
6.x instance"
- supportsManualAdd="true">
-
- <subcategories>
- <subcategory name="Resources"
- description="Different types of Resources">
- <subcategory name="Datasources"
- description="Different types of Datasources"/>
- <subcategory name="Connection Factories"
- description="Different types of Connection
Factories"/>
- </subcategory>
- <subcategory name="Applications"
- description="Different types of Applications (WARs, EARs,
etc.)"/>
- </subcategories>
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
description="provides management and monitoring of JBoss AS 6.x and JBoss
EAP/EWP/SOA-P 5.x"
+ xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
- <plugin-configuration>
- <c:group name="connectionInfo">
- <c:simple-property name="namingURL" displayName="Naming
Provider URL"
- description="The JBoss Naming Provider (JNP) URL
with which to connect to the JBoss AS or EAP instance (e.g.
jnp://127.0.0.1:1099)."/>
- <c:simple-property name="principal"
required="false" description="The name of the principal (i.e. user) to
authenticate."/>
- <c:simple-property name="credentials"
type="password" required="false"
- description="The credentials (i.e. password) that
should be used to authenticate the principal."/>
- <c:simple-property name="homeDir" displayName="JBoss
Home Directory" type="directory" readOnly="true"
- description="The absolute path to the directory
where JBoss AS or EAP is installed (e.g. /opt/jboss-5.1.0.GA)."/>
- <c:simple-property name="serverHomeDir"
type="directory" readOnly="true"
- description="The path to the configuration
directory under which this instance
+ <depends plugin="JMX" useClasses="true" />
+
+ <server name="JBossAS Server" classLoader="instance"
class="ApplicationServerComponent"
discovery="ApplicationServerDiscoveryComponent"
+ description="JBoss Application Server (AS), Enterprise Application Platform
(EAP), Enterprise SOA Platform (SOA-P), or Enterprise Web Platform (EWP) 5.x or 6.x
instance"
+ supportsManualAdd="true">
+
+ <subcategories>
+ <subcategory name="Resources" description="Different types of
Resources">
+ <subcategory name="Datasources" description="Different types of
Datasources" />
+ <subcategory name="Connection Factories" description="Different
types of Connection Factories" />
+ </subcategory>
+ <subcategory name="Applications" description="Different types of
Applications (WARs, EARs, etc.)" />
+ </subcategories>
+
+ <plugin-configuration>
+ <c:group name="connectionInfo">
+ <c:simple-property name="namingURL" displayName="Naming
Provider URL"
+ description="The JBoss Naming Provider (JNP) URL with which to connect to
the JBoss AS or EAP instance (e.g. jnp://127.0.0.1:1099)." />
+ <c:simple-property name="principal" required="false"
+ description="The name of the principal (i.e. user) to authenticate."
/>
+ <c:simple-property name="credentials" type="password"
required="false"
+ description="The credentials (i.e. password) that should be used to
authenticate the principal." />
+ <c:simple-property name="homeDir" displayName="JBoss Home
Directory" type="directory"
+ readOnly="true" description="The absolute path to the directory
where JBoss AS or EAP is installed (e.g. /opt/jboss-5.1.0.GA)." />
+ <c:simple-property name="serverHomeDir" type="directory"
readOnly="true"
+ description="The path to the configuration directory under which this
instance
operates (e.g.
/opt/jboss-5.2.0.GA/server/default); if the path is not absolute,
- then it will be resolved relative to
{homeDir}."/>
- <c:simple-property name="serverName"
required="false"
- description="The name of the server configuration
(e.g. minimal, default, or all);
+ then it will be resolved relative to
{homeDir}." />
+ <c:simple-property name="serverName" required="false"
+ description="The name of the server configuration (e.g. minimal, default,
or all);
if not specified, it will default to the
last path component of {serverHomeDir}.
If the 'startScriptArgs' property
is not set, this property will be used
by the Start and Restart operations as the
value of the -c option that is
passed to the start script. However, this
property is deprecated for that
purpose and 'startScriptArgs'
should be used instead."
- default="default"/>
- <c:simple-property name="clientUrl"
required="false"
- description="The URL of the server's client
JAR library directory;
- if not specified, it will default to
{homeDir}/client."/>
- <c:simple-property name="libUrl" required="false"
- description="The URL of the server's main JAR
library directory;
- if not specified, it will default to
{homeDir}/lib."/>
- <c:simple-property name="commonLibUrl"
required="false"
- description="The URL of the server's common
JAR library directory;
- if not specified, it will default to
{homeDir}/common/lib."/>
- </c:group>
- <c:group name="control" displayName="Operations">
- <c:simple-property name="scriptPrefix"
displayName="Script Prefix" type="string" required="false"
- description="A prefix applied to script execution
commands; this prefix is applied verbatim.
+ default="default" />
+ <c:simple-property name="clientUrl" required="false"
+ description="The URL of the server's client JAR library directory;
+ if not specified, it will default to
{homeDir}/client." />
+ <c:simple-property name="libUrl" required="false"
+ description="The URL of the server's main JAR library directory;
+ if not specified, it will default to
{homeDir}/lib." />
+ <c:simple-property name="commonLibUrl" required="false"
+ description="The URL of the server's common JAR library directory;
+ if not specified, it will default to
{homeDir}/common/lib." />
+ </c:group>
+ <c:group name="control" displayName="Operations">
+ <c:simple-property name="scriptPrefix" displayName="Script
Prefix" type="string" required="false"
+ description="A prefix applied to script execution commands; this prefix is
applied verbatim.
The full path of the executable is required
(e.g. /usr/bin/sudo). For applicable platforms,
this is typically a sudo command, so a sudo
user must be configured appropriately for the specified command.
- Ignored if not set."/>
- <c:simple-property name="startScript" displayName="Start
Script" type="file" required="false"
- description="The path to the script used by the
'Start' operation
+ Ignored if not set." />
+ <c:simple-property name="startScript" displayName="Start
Script" type="file" required="false"
+ description="The path to the script used by the 'Start' operation
to start this JBossAS server
(e.g. /opt/jboss-5.2.0.GA/bin/run.sh); if the
path is not absolute,
then it will be resolved relative to
{jbossHomeDir};
- defaults to 'bin/run.sh' on UNIX or
'bin\run.bat' on Windows."/>
- <c:simple-property name="startScriptEnv"
displayName="Start Script Environment Variables"
- required="false"
- type="longString"
- default="" >
- <c:description>
- The variables that the Start and Restart operations will add to the
environment of the server start script.
- Each name=value pair should be on a new line. Variable values should *not* be
enclosed in quotes (e.g.
- JAVA_OPTS=-Xms512M -Xmx1024M). On UNIX systems, the typical minimum set of
environment variables is:
+ defaults to 'bin/run.sh' on UNIX or
'bin\run.bat' on Windows." />
+ <c:simple-property name="startScriptEnv" displayName="Start
Script Environment Variables"
+ required="false" type="longString"
default="">
+ <c:description>
+ The variables that the Start and Restart operations will add to the
environment of the server
+ start script.
+ Each name=value pair should be on a new line. Variable values should *not* be
enclosed in
+ quotes (e.g.
+ JAVA_OPTS=-Xms512M -Xmx1024M). On UNIX systems, the typical minimum set of
environment variables
+ is:
PATH=/usr/bin:/bin . And on Windows the typical minimum set is:
PATH=C:\Windows\System32;C:\Windows ,
OS=Windows_NT , SYSTEMROOT=C:\Windows . In addition, it is good practice to
set JAVA_HOME to the absolute
path of the install directory of the JRE or JDK you wish to use to run the
AS7 instance. However, if
JAVA_HOME is not specified, the start script will attempt to find java in the
PATH. There is currently
- a 2000 character limit for this value.
- </c:description>
- </c:simple-property>
- <c:simple-property name="startScriptArgs"
displayName="Start Script Arguments"
- required="false"
- type="longString"
- default="" >
- <c:description>
+ a 2000
+ character limit for this value.
+ </c:description>
+ </c:simple-property>
+ <c:simple-property name="startScriptArgs" displayName="Start
Script Arguments" required="false"
+ type="longString" default="">
+ <c:description>
The arguments that the Start and Restart operations will pass to the server
- start script. Each argument should be on a new line - for example:
--server-config=standalone-ha-full.xml.
- As an exception, the value of a space-delimited option can optionally be on
the same line as the option -
- for example: -c default. There is currently a 2000 character limit for this
value.
- </c:description>
- </c:simple-property>
- <c:simple-property name="shutdownScript"
displayName="Shutdown Script" type="file" required="false"
- description="The path to the script used by the Shut
Down operation
+ start script. Each
+ argument should be on a new line - for example:
--server-config=standalone-ha-full.xml.
+ As an exception, the
+ value of a space-delimited option can optionally be on the same line as the
option -
+ for example: -c default.
+ There is currently a 2000 character limit for this value.
+ </c:description>
+ </c:simple-property>
+ <c:simple-property name="shutdownScript" displayName="Shutdown
Script" type="file" required="false"
+ description="The path to the script used by the Shut Down operation
to shut down this JBossAS server
(e.g. /opt/jboss-5.2.0.GA/bin/shutdown.sh);
if the path is not absolute,
then it will be resolved relative to
{jbossHomeDir};
- defaults to 'bin/shutdown.sh' on UNIX
or 'bin\shutdown.bat' on Windows."/>
- <c:simple-property name="shutdownMethod"
displayName="Shutdown Method" type="string" required="false"
default="JMX"
- description="The method used to execute the Shut Down
operation;
+ defaults to 'bin/shutdown.sh' on UNIX
or 'bin\shutdown.bat' on Windows." />
+ <c:simple-property name="shutdownMethod" displayName="Shutdown
Method" type="string" required="false"
+ default="JMX"
+ description="The method used to execute the Shut Down operation;
defaults to 'JMX MBean'. 'JMX
MBean' is the preferred shutdown method and
should be used unless there is a specific use
case for using a script.">
- <c:property-options>
- <c:option value="JMX" name="JMX
MBean"/>
- <c:option value="SCRIPT" name="shutdown
script"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="bindAddress" displayName="Bind
Address" required="false" default="127.0.0.1"
- description="The host or IP address that all
application server services should listen on
+ <c:property-options>
+ <c:option value="JMX" name="JMX MBean" />
+ <c:option value="SCRIPT" name="shutdown script" />
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="bindAddress" displayName="Bind
Address" required="false" default="127.0.0.1"
+ description="The host or IP address that all application server services
should listen on
(e.g. 10.11.14.233 or
foo.example.com);
specify 0.0.0.0 to tell the
application server to bind to all available
network interfaces; defaults to
'127.0.0.1'. If the
'startScriptArgs' property is not set, this property will be used
by the Start and Restart operations as the
value of the -b option that is
passed to the start script. However, this
property is deprecated for that
- purpose and 'startScriptArgs'
should be used instead."/>
- <c:simple-property name="javaHome"
required="false"
- description="The absolute path to a JRE or JDK
installation directory containing
+ purpose and 'startScriptArgs'
should be used instead." />
+ <c:simple-property name="javaHome" required="false"
+ description="The absolute path to a JRE or JDK installation directory
containing
the JVM that should be used by the
operations that start and/or shut down
this JBoss AS server; for the Shutdown
operation to work when the
shutdown method is set to 'shutdown
script', the property must be set.
For the Start operation, this property is
deprecated and will be ignored
- if the 'startScriptEnv' property is
set."/>
- <c:simple-property name="startWaitMax"
required="false"
- description="The time, in minutes,(e.g. 1 or 8)
that must elapse before the server is considered to have failed to start up. The default
is 5 minutes.">
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
- <c:simple-property name="stopWaitMax"
required="false"
- description="The time, in minutes,(e.g. 1 or 8)
that must elapse before the server is considered to have failed to stop. The default is
2.5 minutes.">
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
- </c:group>
-
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="shutdownMBeanName"
displayName="Shutdown MBean Name"
- default="jboss.system:type=Server"
- description="Name of the MBean to use when shutting
down this server through JMX."/>
- <c:simple-property name="shutdownMBeanOperation"
displayName="Shutdown MBean Operation" default="shutdown"
- description="Name of the operation to invoke when
shutting down this server through JMX.
+ if the 'startScriptEnv' property is
set." />
+ <c:simple-property name="startWaitMax" required="false"
+ description="The time, in minutes,(e.g. 1 or 8) that must elapse before
the server is considered to have failed to start up. The default is 5 minutes.">
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+ <c:simple-property name="stopWaitMax" required="false"
+ description="The time, in minutes,(e.g. 1 or 8) that must elapse before
the server is considered to have failed to stop. The default is 2.5 minutes.">
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+ </c:group>
+
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="shutdownMBeanName"
displayName="Shutdown MBean Name" default="jboss.system:type=Server"
+ description="Name of the MBean to use when shutting down this server
through JMX." />
+ <c:simple-property name="shutdownMBeanOperation"
displayName="Shutdown MBean Operation"
+ default="shutdown"
+ description="Name of the operation to invoke when shutting down this
server through JMX.
Note that only operations with no parameter or with one
int parameter are supported. If the
- operation requires an int parameter, '0' will be
supplied."/>
- <c:simple-property name="availabilityCheckPeriod"
description="The amount of time, in seconds, that must elapse between availability
checks to see if the server is up. If set, the availability checks will be performed
asynchronously thus allowing slow-responding servers to avoid being falsely reported as
down."
- units="seconds" required="false"
type="integer">
- <c:constraint>
- <c:integer-constraint minimum="60"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property
name="serviceAvailabilityRefreshInterval" units="minutes"
required="false"
- default="15" type="integer"
- description="The amount of time, in minutes,
that can elapse for service resource
+ operation requires an int parameter, '0' will be
supplied." />
+ <c:simple-property name="availabilityCheckPeriod"
+ description="The amount of time, in seconds, that must elapse between
availability checks to see if the server is up. If set, the availability checks will be
performed asynchronously thus allowing slow-responding servers to avoid being falsely
reported as down."
+ units="seconds" required="false"
type="integer">
+ <c:constraint>
+ <c:integer-constraint minimum="60" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property name="serviceAvailabilityRefreshInterval"
units="minutes" required="false"
+ default="15" type="integer"
+ description="The amount of time, in minutes, that can elapse for service
resource
(e.g., EJBs, data sources) availability checks
without having to refresh the
managed object from the JBoss server. The
information used to perform availability
checks is cached. This property determines how
frequently that data needs to be
reloaded from the JBoss server. Any time the
managed object is loaded from the
server, like for collecting metrics, the
availability information is updated and
- the interval is reset."/>
-
- <c:simple-property name="childJmxServerName"
displayName="JBoss AS JVM Name" default="JVM"
- readOnly="true"
required="false"
- description="The name of the JBoss AS JVM
resource."/>
- </c:group>
-
- <c:group name="events">
- <c:list-property name="logEventSources">
- <c:map-property name="logEventSource">
- <c:simple-property name="logFilePath"
type="file" summary="true"
- description="The absolute path to the
source log file."/>
- <c:simple-property name="enabled"
type="boolean" summary="true"
- description="A flag indicating whether
of not this log Event source is currently
+ the interval is reset." />
+
+ <c:simple-property name="childJmxServerName" displayName="JBoss
AS JVM Name" default="JVM"
+ readOnly="true" required="false" description="The name
of the JBoss AS JVM resource." />
+ </c:group>
+
+ <c:group name="events">
+ <c:list-property name="logEventSources">
+ <c:map-property name="logEventSource">
+ <c:simple-property name="logFilePath" type="file"
summary="true"
+ description="The absolute path to the source log file." />
+ <c:simple-property name="enabled" type="boolean"
summary="true"
+ description="A flag indicating whether of not this log Event source is
currently
enabled (i.e. whether the
associated log file should be tailed for
- new entries)."/>
- <c:simple-property name="dateFormat"
required="false"
- description="The date format to use when
parsing the dates in log entries. The
+ new entries)." />
+ <c:simple-property name="dateFormat" required="false"
+ description="The date format to use when parsing the dates in log
entries. The
format must be in the syntax
defined by the Java SimpleDateFormat
class. If not specified, the
three date formats that are predefined
- by Log4J (ISO8601, DATE, and
ABSOLUTE) will be tried."/>
- <c:simple-property name="includesPattern"
required="false"
- description="A regular expression
against which a log entry's detail is matched
+ by Log4J (ISO8601, DATE, and
ABSOLUTE) will be tried." />
+ <c:simple-property name="includesPattern"
required="false"
+ description="A regular expression against which a log entry's
detail is matched
to determine if an Event should
be fired for that entry. If not
specified, no filtering of log
entries will be done based on their
- detail."/>
- <c:simple-property name="minimumSeverity"
required="false" default="error"
- description="The minimum severity of
Events that should be collected for this
+ detail." />
+ <c:simple-property name="minimumSeverity"
required="false" default="error"
+ description="The minimum severity of Events that should be collected
for this
source. If not specified, there
is no minimum severity (i.e. all
events will be
collected).">
- <c:property-options>
- <c:option name="debug"
value="debug"/>
- <c:option name="info"
value="info"/>
- <c:option name="warn"
value="warn"/>
- <c:option name="error"
value="error"/>
- <c:option name="fatal"
value="fatal"/>
- </c:property-options>
- </c:simple-property>
- </c:map-property>
- </c:list-property>
- </c:group>
+ <c:property-options>
+ <c:option name="debug" value="debug" />
+ <c:option name="info" value="info" />
+ <c:option name="warn" value="warn" />
+ <c:option name="error" value="error" />
+ <c:option name="fatal" value="fatal" />
+ </c:property-options>
+ </c:simple-property>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </plugin-configuration>
+
+ <process-scan name="jbossas"
query="process|basename|match=^java.*,arg|org.jboss.Main|match=.*" />
+
+ <operation name="start" displayName="Start"
+ description="Start this application server. The script used is specified in
the Operations group of connection properties. This operation will fail if the server is
already started.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome
of starting the server." />
+ </results>
+ </operation>
+
+ <operation name="shutdown" displayName="Shut Down"
+ description="Shut down this application server via script or JMX, depending on
the settings in the Operations and Advanced groups of connection properties. This
operation will fail if the server is already shut down.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome
of shutting down the server." />
+ </results>
+ </operation>
+
+ <operation name="restart" displayName="Restart"
description="Shut down (if started) and then start this application
server.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome
of restarting the server." />
+ </results>
+ </operation>
+
+ <metric displayName="Cluster Partition Name"
property="MCBean|ServerConfig|*|partitionName" dataType="trait"
+ displayType="summary" description="the name of the cluster partition
this server belongs to" />
+
+ <metric displayName="Server Name"
property="MCBean|ServerConfig|*|serverName" dataType="trait"
displayType="summary"
+ description="the name of the active profile (i.e. configuration set) this
server is using" />
+
+ <metric displayName="Server Home Dir"
property="MCBean|ServerConfig|*|serverHomeDir" dataType="trait"
+ displayType="summary"
+ description="the full path of the configuration set directory this server is
using (e.g. /opt/jboss-5.1.0.CR1/server/default)" />
+
+ <metric displayName="Home Dir"
property="MCBean|ServerConfig|*|serverHomeDir" dataType="trait"
displayType="summary"
+ description="the full path of the JBoss AS installation directory this server
is using (e.g. /opt/jboss-5.1.0.CR1)" />
+
+ <metric displayName="Version Name"
property="MCBean|MCServer|*|versionName" dataType="trait"
displayType="summary"
+ description="the code name for this app server's version (AS 5.0 =
Morpheus, AS 5.1 = The Oracle, AS 6.x = Neo)" />
+
+ <metric displayName="Build Date"
property="MCBean|MCServer|*|buildDate" dataType="trait"
displayType="summary"
+ description="the date this app server was built" />
+
+ <metric displayName="Start Date"
property="MCBean|MCServer|*|startDate" dataType="trait"
displayType="summary"
+ description="the date and time this app server instance was started"
/>
+
+ <metric displayName="Active Thread Count"
property="MCBean|ServerInfo|*|activeThreadCount"
+ description="The current number of active threads for this app server
instance" displayType="summary" category="throughput" />
+
+ <metric displayName="Active Thread Group Count"
property="MCBean|ServerInfo|*|activeThreadGroupCount"
+ description="The current number of active thread groups for this app server
instance" category="throughput" />
+
+ <metric displayName="JVM Free Memory"
property="MCBean|ServerInfo|*|freeMemory" displayType="summary"
+ defaultOn="true"
+ description="An approximation of the total amount of memory currently
available in the app server JVM for future allocated objects, measured in bytes"
+ category="utilization" units="bytes" />
+
+ <metric displayName="JVM Max Memory"
property="MCBean|ServerInfo|*|maxMemory"
+ description="The maximum amount of memory that the app server JVM will attempt
to use, measured in bytes; if there is no inherent limit then the value Long.MAX_VALUE
will be returned"
+ category="utilization" units="bytes" />
+
+ <metric displayName="JVM Total Memory"
property="MCBean|ServerInfo|*|totalMemory" displayType="summary"
+ description="The total amount of memory currently available in the app server
JVM for current and future objects, measured in bytes"
+ category="utilization" units="bytes" />
+
+ <metric displayName="Total Transactions"
property="MCBean|JTA|*|transactionCount" measurementType="trendsup"
+ category="utilization" description="Total number of transactions
since last restart" />
+
+ <metric displayName="Transactions Committed"
property="MCBean|JTA|*|commitCount" displayType="summary"
+ measurementType="trendsup" category="utilization"
description="Number of transactions committed since last restart" />
+
+ <metric displayName="Transactions Rolled Back"
property="MCBean|JTA|*|rollbackCount" measurementType="trendsup"
+ category="utilization" description="Number of transactions rolled
back since last restart" />
+
+ <event name="logEntry" description="an entry was appended to a log
file" />
+
+ <content name="library" displayName="JAR Library"
category="deployable" description="Library Jar files deployed in JBoss
AS">
+ <configuration>
+ <c:simple-property name="version" readOnly="true"
description="The version declared by the JAR's manifest." />
+ <c:simple-property name="title" readOnly="true"
description="The title declared by the JAR's manifest." />
+ <c:simple-property name="url" readOnly="true"
description="The url declared by the JAR's manifest." />
+ <c:simple-property name="vendor" readOnly="true"
description="The vendor declared by the JAR's manifest." />
+ <c:simple-property name="classpath" readOnly="true"
description="The classpath declared by the JAR's manifest." />
+ <c:simple-property name="sealed" readOnly="true"
type="boolean" description="True if the JAR is sealed." />
+ </configuration>
+ </content>
+
+ <content name="cumulativePatch" displayName="Cumulative Patch"
category="deployable"
+ description="Automatically installable application server patches">
+ <configuration>
+ <c:simple-property name="jiraId" />
+ <c:simple-property name="distributionStatus" />
+ <c:simple-property name="downloadUrl" />
+ <c:simple-property name="instructionCompatibilityVersion" />
+ </configuration>
+ </content>
+
+ <drift-definition name="Template-Base Files"
+ description="Monitor base application server files for drift. It defines
monitoring for some standard sub-directories of the HOME directory. Note, it is not
recommeded to monitor all files for an application server. There are many files, and many
temp files.">
+ <basedir>
+ <value-context>pluginConfiguration</value-context>
+ <value-name>homeDir</value-name>
+ </basedir>
+ <includes>
+ <include path="bin" />
+ <include path="lib" />
+ <include path="client" />
+ </includes>
+ </drift-definition>
+
+ <bundle-target>
+ <destination-base-dir name="Install Directory"
+ description="The top directory where the JBossAS Server is installed. (i.e.
the value found in the 'JBoss Home Directory' connection property)">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>homeDir</value-name>
+ </destination-base-dir>
+ <destination-base-dir name="Profile Directory"
+ description="The profile configuration directory such as 'default',
'minimal', 'production' or similar location. (i.e. the value found in the
'Server Home Dir' connection property)">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>serverHomeDir</value-name>
+ </destination-base-dir>
+ </bundle-target>
+
+ <help>
+ <![CDATA[
+ The server can be started, restarted, or stopped via the Start, Restart, and
Shutdown operations. The Start and
+ Restart operations start the server by executing the server start script, typically
run.sh on UNIX or
+ run.bat on Windows. The following connection settings can be used to configure the
start script execution:
+ <ul>
+<li>Start Script - the absolute path of the start script (e.g.
"/opt/jboss-eap-5.0/bin/run.sh")</li>
+<li>Start Script Prefix - a prefix command line to be prepended to the start script
command line (e.g. "nohup sudo -u jboss -g jboss")</li>
+<li>Start Script Arguments - arguments to be passed to the start script (e.g.
"--configuration=production")</li>
+<li>Start Script Environment - environment variables to be set in the start
script's environment (e.g. "JAVA_HOME=/usr/java/jdk1.6.0_30")</li>
+ </ul>
+ These settings are automatically initialized by the JBossAS5 plugin discovery code
to match the currently running
+ server process' command line and environment.
+ <p/>
+ The settings are not used by the Stop operation, since it stops the server via the
management interface, not via
+ a script.
+ <p/>
+ For more detailed descriptions of the settings, see the Connection Settings section
below.
+ ]]>
+
+ </help>
+
+ <server name="JBoss AS JVM" description="JVM of the JBoss AS"
sourcePlugin="JMX" sourceType="JMX Server"
+ discovery="org.rhq.plugins.jmx.EmbeddedJMXServerDiscoveryComponent"
class="org.rhq.plugins.jmx.EmbeddedJMXServerComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="type" type="string"
default="PARENT" readOnly="true"
+ description="The EMS connection type for this JVM (cannot be
modified)" />
+ </plugin-configuration>
+
+ </server>
+
+ <service name="JBoss Web" description="JBoss Web Servlet
Container" subCategory="Resources"
discovery="JBossWebDiscoveryComponent"
+ class="JBossWebComponent" singleton="true">
+
+ <service name="Connector" description="a JBoss Web
Connector" discovery="ConnectorDiscoveryComponent"
+ class="ConnectorComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="protocol" type="string"
description="this connector's protocol (e.g. jk, ajp, http)"
+ default="http" />
+ <c:simple-property name="address" type="string"
description="the IP address this connector listens on"
+ readOnly="true" />
+ <c:simple-property name="port" type="integer"
description="the port this connector listens on"
+ readOnly="true" />
+ <c:group name="advanced">
+ <c:simple-property name="componentType"
default="MBean" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="WebRequestProcessor" readOnly="true" />
+ <c:simple-property name="componentName"
readOnly="true" />
+ </c:group>
</plugin-configuration>
- <process-scan name="jbossas"
query="process|basename|match=^java.*,arg|org.jboss.Main|match=.*"/>
+ <metric property="maxTime" displayName="Maximum Request
Time"
+ description="the maximum time it took to process a request since the last
restart" units="milliseconds"
+ category="performance" />
- <operation name="start" displayName="Start"
- description="Start this application server. The script used is
specified in the Operations group of connection properties. This operation will fail if
the server is already started.">
- <results><c:simple-property name="operationResult"
description="Outcome of starting the server."/></results>
- </operation>
+ <metric property="requestCount" displayName="Request
Count"
+ description="the total number of requests processed since the last
restart" defaultOn="false" category="utilization"
+ measurementType="trendsup" />
- <operation name="shutdown" displayName="Shut Down"
- description="Shut down this application server via script or JMX,
depending on the settings in the Operations and Advanced groups of connection properties.
This operation will fail if the server is already shut down.">
- <results><c:simple-property name="operationResult"
description="Outcome of shutting down the server."/></results>
- </operation>
+ <metric property="errorCount" displayName="Error Count"
+ description="the number of errors while processing requests since the last
restart" category="utilization"
+ measurementType="trendsup" />
- <operation name="restart" displayName="Restart"
- description="Shut down (if started) and then start this
application server.">
- <results><c:simple-property name="operationResult"
description="Outcome of restarting the server."/></results>
- </operation>
+ <metric property="ThreadPool|currentThreadsBusy"
displayName="Current Active Threads" category="utilization"
+ displayType="summary" description="the number of threads for
this connector that are currently active" />
+
+ <metric property="ThreadPool|currentThreadCount"
displayName="Current Thread Count" category="utilization"
+ displayType="summary" description="the number of threads for
this connector that currently exist" />
+
+ <metric property="ThreadPool|maxThreads" displayName="Maximum
Threads" category="utilization"
+ displayType="summary" dataType="trait"
+ description="Maximum number of threads that can be allocated for the
thread pool of this connector" />
+ </service>
+
+ <service name="Virtual Host"
discovery="VirtualHostDiscoveryComponent"
class="VirtualHostComponent"
+ description="a JBoss Web virtual host">
+
+ <plugin-configuration>
+ <c:simple-property name="name" type="string"
description="the virtual host's name (e.g. localhost)" />
+ <c:group name="advanced">
+ <c:simple-property name="componentType"
default="MBean" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="WebHost" readOnly="true" />
+ <c:simple-property name="componentName"
readOnly="true" />
+ </c:group>
+ </plugin-configuration>
+
+ <metric property="aliases" description="the aliases for this
virtual host, if any" dataType="trait"
+ displayType="summary" />
+ </service>
+
+ </service>
- <metric displayName="Cluster Partition Name"
property="MCBean|ServerConfig|*|partitionName"
- dataType="trait" displayType="summary"
- description="the name of the cluster partition this server belongs
to"/>
-
- <metric displayName="Server Name"
property="MCBean|ServerConfig|*|serverName"
- dataType="trait" displayType="summary"
- description="the name of the active profile (i.e. configuration
set) this server is using"/>
-
- <metric displayName="Server Home Dir"
property="MCBean|ServerConfig|*|serverHomeDir"
- dataType="trait" displayType="summary"
- description="the full path of the configuration set directory this
server is using (e.g. /opt/jboss-5.1.0.CR1/server/default)"/>
-
- <metric displayName="Home Dir"
property="MCBean|ServerConfig|*|serverHomeDir"
- dataType="trait" displayType="summary"
- description="the full path of the JBoss AS installation directory
this server is using (e.g. /opt/jboss-5.1.0.CR1)"/>
-
- <metric displayName="Version Name"
property="MCBean|MCServer|*|versionName"
- dataType="trait" displayType="summary"
- description="the code name for this app server's version (AS
5.0 = Morpheus, AS 5.1 = The Oracle, AS 6.x = Neo)"/>
-
- <metric displayName="Build Date"
property="MCBean|MCServer|*|buildDate"
- dataType="trait" displayType="summary"
- description="the date this app server was built"/>
-
- <metric displayName="Start Date"
property="MCBean|MCServer|*|startDate"
- dataType="trait" displayType="summary"
- description="the date and time this app server instance was
started"/>
-
- <metric displayName="Active Thread Count"
property="MCBean|ServerInfo|*|activeThreadCount"
- description="The current number of active threads for this app
server instance"
- displayType="summary" category="throughput"/>
-
- <metric displayName="Active Thread Group Count"
property="MCBean|ServerInfo|*|activeThreadGroupCount"
- description="The current number of active thread groups for this
app server instance"
- category="throughput"/>
-
- <metric displayName="JVM Free Memory"
property="MCBean|ServerInfo|*|freeMemory" displayType="summary"
- defaultOn="true"
- description="An approximation of the total amount of memory
currently available in the app server JVM for future allocated objects, measured in
bytes"
- category="utilization" units="bytes"/>
-
- <metric displayName="JVM Max Memory"
property="MCBean|ServerInfo|*|maxMemory"
- description="The maximum amount of memory that the app server JVM
will attempt to use, measured in bytes; if there is no inherent limit then the value
Long.MAX_VALUE will be returned"
- category="utilization" units="bytes"/>
-
- <metric displayName="JVM Total Memory"
property="MCBean|ServerInfo|*|totalMemory" displayType="summary"
- description="The total amount of memory currently available in the
app server JVM for current and future objects, measured in bytes"
- category="utilization" units="bytes"/>
-
- <metric displayName="Total Transactions"
property="MCBean|JTA|*|transactionCount" measurementType="trendsup"
- category="utilization"
- description="Total number of transactions since last
restart"/>
-
- <metric displayName="Transactions Committed"
property="MCBean|JTA|*|commitCount" displayType="summary"
measurementType="trendsup"
- category="utilization"
- description="Number of transactions committed since last
restart"/>
-
- <metric displayName="Transactions Rolled Back"
property="MCBean|JTA|*|rollbackCount" measurementType="trendsup"
- category="utilization"
- description="Number of transactions rolled back since last
restart"/>
-
- <event name="logEntry" description="an entry was appended to
a log file"/>
-
- <content name="library" displayName="JAR Library"
category="deployable"
- description="Library Jar files deployed in JBoss AS">
- <configuration>
- <c:simple-property name="version" readOnly="true"
description="The version declared by the JAR's manifest."/>
- <c:simple-property name="title" readOnly="true"
description="The title declared by the JAR's manifest."/>
- <c:simple-property name="url" readOnly="true"
description="The url declared by the JAR's manifest."/>
- <c:simple-property name="vendor" readOnly="true"
description="The vendor declared by the JAR's manifest."/>
- <c:simple-property name="classpath"
readOnly="true"
- description="The classpath declared by the
JAR's manifest."/>
- <c:simple-property name="sealed" readOnly="true"
type="boolean" description="True if the JAR is sealed."/>
- </configuration>
- </content>
-
- <content name="cumulativePatch" displayName="Cumulative
Patch" category="deployable"
- description="Automatically installable application server
patches">
- <configuration>
- <c:simple-property name="jiraId"/>
- <c:simple-property name="distributionStatus"/>
- <c:simple-property name="downloadUrl"/>
- <c:simple-property
name="instructionCompatibilityVersion"/>
- </configuration>
- </content>
-
- <drift-definition name="Template-Base Files"
- description="Monitor base application server files for
drift. It defines monitoring for some standard sub-directories of the HOME directory.
Note, it is not recommeded to monitor all files for an application server. There are many
files, and many temp files.">
- <basedir>
- <value-context>pluginConfiguration</value-context>
- <value-name>homeDir</value-name>
- </basedir>
- <includes>
- <include path="bin" />
- <include path="lib" />
- <include path="client" />
- </includes>
- </drift-definition>
-
- <bundle-target>
- <destination-base-dir name="Install Directory"
description="The top directory where the JBossAS Server is installed. (i.e. the value
found in the 'JBoss Home Directory' connection property)">
- <value-context>pluginConfiguration</value-context>
- <value-name>homeDir</value-name>
- </destination-base-dir>
- <destination-base-dir name="Profile Directory"
description="The profile configuration directory such as 'default',
'minimal', 'production' or similar location. (i.e. the value found in the
'Server Home Dir' connection property)">
- <value-context>pluginConfiguration</value-context>
- <value-name>serverHomeDir</value-name>
- </destination-base-dir>
- </bundle-target>
-
- <server name="JBoss AS JVM"
- description="JVM of the JBoss AS"
- sourcePlugin="JMX"
- sourceType="JMX Server"
-
discovery="org.rhq.plugins.jmx.EmbeddedJMXServerDiscoveryComponent"
- class="org.rhq.plugins.jmx.EmbeddedJMXServerComponent"
- singleton="true">
-
- <plugin-configuration>
- <c:simple-property name="type" type="string"
default="PARENT" readOnly="true"
- description="The EMS connection type for this JVM
(cannot be modified)"/>
- </plugin-configuration>
-
- </server>
-
- <service name="JBoss Web"
- description="JBoss Web Servlet Container"
- subCategory="Resources"
- discovery="JBossWebDiscoveryComponent"
- class="JBossWebComponent"
- singleton="true">
-
- <service name="Connector"
- description="a JBoss Web Connector"
- discovery="ConnectorDiscoveryComponent"
- class="ConnectorComponent">
-
- <plugin-configuration>
- <c:simple-property name="protocol"
type="string" description="this connector's protocol (e.g. jk, ajp,
http)" default="http"/>
- <c:simple-property name="address" type="string"
description="the IP address this connector listens on"
readOnly="true"/>
- <c:simple-property name="port" type="integer"
description="the port this connector listens on" readOnly="true"/>
- <c:group name="advanced">
- <c:simple-property name="componentType"
default="MBean" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="WebRequestProcessor" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </c:group>
- </plugin-configuration>
-
- <metric property="maxTime"
- displayName="Maximum Request Time"
- description="the maximum time it took to process a request
since the last restart"
- units="milliseconds"
- category="performance"/>
-
- <metric property="requestCount"
- displayName="Request Count" description="the total
number of requests processed since the last restart"
- defaultOn="false" category="utilization"
measurementType="trendsup"/>
-
- <metric property="errorCount"
- displayName="Error Count" description="the number of
errors while processing requests since the last restart"
- category="utilization"
measurementType="trendsup"/>
-
- <metric property="ThreadPool|currentThreadsBusy"
- displayName="Current Active Threads"
- category="utilization" displayType="summary"
- description="the number of threads for this connector that are
currently active"/>
-
- <metric property="ThreadPool|currentThreadCount"
- displayName="Current Thread Count"
- category="utilization" displayType="summary"
- description="the number of threads for this connector that
currently exist"/>
-
- <metric property="ThreadPool|maxThreads"
- displayName="Maximum Threads"
- category="utilization" displayType="summary"
dataType="trait"
- description="Maximum number of threads that can be allocated
for the thread pool of this connector"/>
- </service>
-
- <service name="Virtual Host"
- discovery="VirtualHostDiscoveryComponent"
- class="VirtualHostComponent"
- description="a JBoss Web virtual host">
-
- <plugin-configuration>
- <c:simple-property name="name" type="string"
description="the virtual host's name (e.g. localhost)"/>
- <c:group name="advanced">
- <c:simple-property name="componentType"
default="MBean" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="WebHost" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </c:group>
- </plugin-configuration>
-
- <metric property="aliases"
- description="the aliases for this virtual host, if any"
- dataType="trait" displayType="summary"/>
- </service>
-
- </service>
-
-
- <!-- =================================== ManagedComponent Resource types
=================================== -->
-
- <service name="No Tx Datasource"
- class="DatasourceOrConnectionFactoryComponent"
- discovery="ManagedComponentDiscoveryComponent"
- createDeletePolicy="both"
- subCategory="Datasources"
- description="No Transaction Datasources deployed in the instance of
JBoss AS">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="DataSource" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="NoTx" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="NoTxDataSourceTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- ManagedComponent name when creating a new Resource of this type.
- </c:description>
- </c:simple-property>
- </plugin-configuration>
+
+ <!-- =================================== ManagedComponent Resource types
=================================== -->
+
+ <service name="No Tx Datasource"
class="DatasourceOrConnectionFactoryComponent"
discovery="ManagedComponentDiscoveryComponent"
+ createDeletePolicy="both" subCategory="Datasources"
description="No Transaction Datasources deployed in the instance of JBoss
AS">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="DataSource" readOnly="true" />
+ <c:simple-property name="componentSubtype" default="NoTx"
readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="NoTxDataSourceTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used as
the
+ ManagedComponent name when creating a new Resource of this type.
+ </c:description>
+ </c:simple-property>
+ </plugin-configuration>
&datasourceAndConnectionFactoryOperations;
@@ -1335,49 +1326,44 @@
&datasourceAndConnectionFactoryMetrics;
&datasourceMetrics;
- <resource-configuration>
+ <resource-configuration>
- <!-- For ManagedProperty annotations, see:
-
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
+ <!-- For ManagedProperty annotations, see:
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
- <c:group name="connection" displayName="Connection
Information">
+ <c:group name="connection" displayName="Connection
Information">
&datasourceConnectionResourceConfigProps;
&datasourceAndConnectionFactoryConnectionResourceConfigProps;
&nonXaDatasourceConnectionResourceConfigProps;
- </c:group>
+ </c:group>
- <c:group name="advanced"
displayName="Advanced">
+ <c:group name="advanced" displayName="Advanced">
&datasourceAndConnectionFactoryAdvancedResourceConfigProps;
&datasourceAdvancedResourceConfigProps;
- </c:group>
+ </c:group>
- <c:template name="Oracle No TX" description="No
Transaction Datasource for Oracle">
+ <c:template name="Oracle No TX" description="No Transaction
Datasource for Oracle">
&nonXaDatasourceOracleTemplateProps;
- </c:template>
-
- </resource-configuration>
-
- </service>
-
- <service name="Local Tx Datasource"
- class="DatasourceOrConnectionFactoryComponent"
- discovery="ManagedComponentDiscoveryComponent"
- createDeletePolicy="both"
- subCategory="Datasources"
- description="Local Transaction Datasources deployed in the instance
of JBoss AS">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="DataSource" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="LocalTx" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="LocalTxDataSourceTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource of
this type.
- </c:description>
- </c:simple-property>
- </plugin-configuration>
+ </c:template>
+
+ </resource-configuration>
+
+ </service>
+
+ <service name="Local Tx Datasource"
class="DatasourceOrConnectionFactoryComponent"
discovery="ManagedComponentDiscoveryComponent"
+ createDeletePolicy="both" subCategory="Datasources"
description="Local Transaction Datasources deployed in the instance of JBoss
AS">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="DataSource" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="LocalTx" readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="LocalTxDataSourceTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used as
the
+ underlying ManagedComponent name when creating a new Resource of this type.
+ </c:description>
+ </c:simple-property>
+ </plugin-configuration>
&datasourceAndConnectionFactoryOperations;
@@ -1385,50 +1371,45 @@
&datasourceAndConnectionFactoryMetrics;
&datasourceMetrics;
- <resource-configuration>
+ <resource-configuration>
- <!-- For ManagedProperty annotations, see:
-
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
+ <!-- For ManagedProperty annotations, see:
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
- <c:group name="connection" displayName="Connection
Information">
+ <c:group name="connection" displayName="Connection
Information">
&datasourceConnectionResourceConfigProps;
&datasourceAndConnectionFactoryConnectionResourceConfigProps;
&nonXaDatasourceConnectionResourceConfigProps;
- </c:group>
+ </c:group>
- <c:group name="advanced"
displayName="Advanced">
+ <c:group name="advanced" displayName="Advanced">
&datasourceAndConnectionFactoryAdvancedResourceConfigProps;
&datasourceAdvancedResourceConfigProps;
- </c:group>
+ </c:group>
- <c:template name="Oracle Local TX" description="Local
Transaction Datasource for Oracle">
+ <c:template name="Oracle Local TX" description="Local
Transaction Datasource for Oracle">
&nonXaDatasourceOracleTemplateProps;
- <c:simple-property name="track-connection-by-tx"
default="true"/>
- </c:template>
-
- </resource-configuration>
-
- </service>
-
- <service name="XA Datasource"
- class="DatasourceOrConnectionFactoryComponent"
- discovery="ManagedComponentDiscoveryComponent"
- createDeletePolicy="both"
- subCategory="Datasources"
- description="XA Datasources deployed in the instance of JBoss
AS">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="DataSource" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="XA" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="XADataSourceTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource of
this type.
- </c:description>
- </c:simple-property>
- </plugin-configuration>
+ <c:simple-property name="track-connection-by-tx"
default="true" />
+ </c:template>
+
+ </resource-configuration>
+
+ </service>
+
+ <service name="XA Datasource"
class="DatasourceOrConnectionFactoryComponent"
discovery="ManagedComponentDiscoveryComponent"
+ createDeletePolicy="both" subCategory="Datasources"
description="XA Datasources deployed in the instance of JBoss AS">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="DataSource" readOnly="true" />
+ <c:simple-property name="componentSubtype" default="XA"
readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="XADataSourceTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used as
the
+ underlying ManagedComponent name when creating a new Resource of this type.
+ </c:description>
+ </c:simple-property>
+ </plugin-configuration>
&datasourceAndConnectionFactoryOperations;
@@ -1436,110 +1417,97 @@
&datasourceAndConnectionFactoryMetrics;
&datasourceMetrics;
- <resource-configuration>
+ <resource-configuration>
- <!-- For ManagedProperty annotations, see:
-
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
- <c:group name="connection" displayName="Connection
Information">
+ <!-- For ManagedProperty annotations, see:
https://anonsvn.jboss.org/repos/jbossas/trunk/connector/src/main/org/jbos...
-->
+ <c:group name="connection" displayName="Connection
Information">
&datasourceConnectionResourceConfigProps;
&datasourceAndConnectionFactoryConnectionResourceConfigProps;
- <c:simple-property name="xa-datasource-class"
- displayName="XA DataSource Class"
- description="The fully qualified name of the
javax.sql.XADataSource implementation class."
- activationPolicy="immediate"/>
-
- <c:map-property name="xa-datasource-properties"
displayName="XA Datasource Properties" required="true">
- <c:description>
- The properties to assign to the XADataSource implementation
class.
- Each property is mapped
- onto the XADataSource implementation by looking for a
JavaBeans style
- getter method for the property name. If found, the value of
the property is
- set using the JavaBeans setter with the element text
translated to the true
- property type using the java.beans.PropertyEditor for the
type.
- </c:description>
- </c:map-property>
-
- <c:simple-property name="xa-resource-timeout"
- displayName="XA Resource Timeout"
- required="false"
- type="integer"
- activationPolicy="immediate">
- <c:description>
- XA transaction timeout, in seconds (passed to
XAResource.setTransactionTimeout()) -
- default is zero which does not invoke the setter.
- </c:description>
- </c:simple-property>
-
- <c:simple-property name="url-property"
- displayName="URL Property"
- required="false"
- description="For HA XA datasources, specifies
the name of an XADataSource property that contains a list of URLs."
- activationPolicy="immediate"/>
- </c:group>
-
- <c:group name="advanced"
displayName="Advanced">
+ <c:simple-property name="xa-datasource-class" displayName="XA
DataSource Class"
+ description="The fully qualified name of the javax.sql.XADataSource
implementation class." activationPolicy="immediate" />
+
+ <c:map-property name="xa-datasource-properties"
displayName="XA Datasource Properties"
+ required="true">
+ <c:description>
+ The properties to assign to the XADataSource implementation class.
+ Each property is mapped
+ onto the XADataSource implementation by looking for a JavaBeans style
+ getter method for the property name. If found, the value of the property
is
+ set using the JavaBeans setter with the element text translated to the
true
+ property type using the java.beans.PropertyEditor for the type.
+ </c:description>
+ </c:map-property>
+
+ <c:simple-property name="xa-resource-timeout" displayName="XA
Resource Timeout" required="false"
+ type="integer" activationPolicy="immediate">
+ <c:description>
+ XA transaction timeout, in seconds (passed to
XAResource.setTransactionTimeout()) -
+ default is zero which does not invoke the setter.
+ </c:description>
+ </c:simple-property>
+
+ <c:simple-property name="url-property" displayName="URL
Property" required="false"
+ description="For HA XA datasources, specifies the name of an
XADataSource property that contains a list of URLs."
+ activationPolicy="immediate" />
+ </c:group>
+
+ <c:group name="advanced" displayName="Advanced">
&datasourceAndConnectionFactoryAdvancedResourceConfigProps;
&datasourceAdvancedResourceConfigProps;
- <c:simple-property name="interleaving"
type="boolean" required="false" defaultValue="false">
- <c:description>
- If true, enable transaction interleaving if the DB vendor
supports it (most do not).
- This property supersedes the
"track-connection-by-tx" property from earlier versions of
- JBoss AS. The default is false.
- </c:description>
- </c:simple-property>
- </c:group>
-
- <c:template name="Oracle XA" description="XA
Transaction Datasource for Oracle">
- <c:simple-property name="track-connection-by-tx"
default="true"/>
- <c:simple-property name="isSameRM-override-value"
default="false"/>
- <c:simple-property name="xa-datasource-class"
default="oracle.jdbc.xa.client.OracleXADataSource"/>
- <c:simple-property name="exception-sorter-class-name"
-
default="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter"/>
- <!-- Oracle's XA datasource cannot reuse a connection outside
a transaction once enlisted in a
- global transaction and vice-versa. -->
- <c:simple-property name="no-tx-separate-pools"
default="true"/>
- <c:simple-property name="use-try-lock"
default="60000"/>
- <c:map-property name="metadata">
- <c:simple-property name="typeMapping"
default="Oracle9i"/>
- </c:map-property>
- <c:simple-property name="type-mapping"
default="Oracle9i"/>
- </c:template>
-
- </resource-configuration>
-
- </service>
-
- <service name="No Tx ConnectionFactory"
- description="A ConnectionFactory that does not take part in JTA
transactions."
- class="DatasourceOrConnectionFactoryComponent"
- createDeletePolicy="both"
- subCategory="Connection Factories"
- discovery="ManagedComponentDiscoveryComponent">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="ConnectionFactory" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="NoTx" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="NoTxConnectionFactoryTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource of
this type.
- </c:description>
- </c:simple-property>
- <c:group name="managedPropertyGroup"
- displayName="managedPropertyGroup"
- hiddenByDefault="true">
- <c:map-property name="customProperties"
- description="Maps a list of custom property
names to the the fully qualified class names of the
org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter implementations that should be used
for those properties.">
- <c:simple-property name="config-property"
-
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.ConnectionFactoryConfigPropertyAdapter"
/>
- </c:map-property>
- </c:group>
- </plugin-configuration>
+ <c:simple-property name="interleaving" type="boolean"
required="false" defaultValue="false">
+ <c:description>
+ If true, enable transaction interleaving if the DB vendor supports it (most
do not).
+ This property supersedes the "track-connection-by-tx" property
from earlier versions of
+ JBoss AS. The default is false.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+
+ <c:template name="Oracle XA" description="XA Transaction
Datasource for Oracle">
+ <c:simple-property name="track-connection-by-tx"
default="true" />
+ <c:simple-property name="isSameRM-override-value"
default="false" />
+ <c:simple-property name="xa-datasource-class"
default="oracle.jdbc.xa.client.OracleXADataSource" />
+ <c:simple-property name="exception-sorter-class-name"
default="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter" />
+ <!-- Oracle's XA datasource cannot reuse a connection outside a
transaction once enlisted in a global transaction
+ and vice-versa. -->
+ <c:simple-property name="no-tx-separate-pools"
default="true" />
+ <c:simple-property name="use-try-lock" default="60000"
/>
+ <c:map-property name="metadata">
+ <c:simple-property name="typeMapping"
default="Oracle9i" />
+ </c:map-property>
+ <c:simple-property name="type-mapping"
default="Oracle9i" />
+ </c:template>
+
+ </resource-configuration>
+
+ </service>
+
+ <service name="No Tx ConnectionFactory" description="A
ConnectionFactory that does not take part in JTA transactions."
+ class="DatasourceOrConnectionFactoryComponent"
createDeletePolicy="both" subCategory="Connection Factories"
+ discovery="ManagedComponentDiscoveryComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="ConnectionFactory" readOnly="true" />
+ <c:simple-property name="componentSubtype" default="NoTx"
readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="NoTxConnectionFactoryTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used as
the
+ underlying ManagedComponent name when creating a new Resource of this type.
+ </c:description>
+ </c:simple-property>
+ <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
+ <c:map-property name="customProperties"
+ description="Maps a list of custom property names to the the fully
qualified class names of the org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter
implementations that should be used for those properties.">
+ <c:simple-property name="config-property"
+
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.ConnectionFactoryConfigPropertyAdapter"
/>
+ </c:map-property>
+ </c:group>
+ </plugin-configuration>
&datasourceAndConnectionFactoryOperations;
@@ -1547,438 +1515,396 @@
&datasourceAndConnectionFactoryMetrics;
&connectionFactoryMetrics;
- <resource-configuration>
+ <resource-configuration>
- <c:group name="connection" displayName="Connection
Information">
+ <c:group name="connection" displayName="Connection
Information">
&connectionFactoryConnectionResourceConfigProps;
&datasourceAndConnectionFactoryConnectionResourceConfigProps;
- </c:group>
+ </c:group>
- <c:group name="advanced"
displayName="Advanced">
+ <c:group name="advanced" displayName="Advanced">
&datasourceAndConnectionFactoryAdvancedResourceConfigProps;
&connectionFactoryAdvancedResourceConfigProps;
- </c:group>
- </resource-configuration>
-
- </service>
-
- <service name="Tx ConnectionFactory"
- description="A ConnectionFactory that takes part in JTA
transactions."
- class="TxConnectionFactoryComponent"
- createDeletePolicy="both"
- subCategory="Connection Factories"
- discovery="ManagedComponentDiscoveryComponent">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="ConnectionFactory" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="Tx" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="TxConnectionFactoryTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource of
this type.
- </c:description>
- </c:simple-property>
- <c:group name="managedPropertyGroup"
- displayName="managedPropertyGroup"
- hiddenByDefault="true">
- <c:map-property name="customProperties"
- description="Maps a list of custom property
names to the the fully qualified class names of the
org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter implementations that should be used
for those properties.">
- <c:simple-property name="config-property"
-
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.ConnectionFactoryConfigPropertyAdapter"
/>
- </c:map-property>
- </c:group>
- </plugin-configuration>
+ </c:group>
+ </resource-configuration>
+
+ </service>
+
+ <service name="Tx ConnectionFactory" description="A
ConnectionFactory that takes part in JTA transactions."
+ class="TxConnectionFactoryComponent" createDeletePolicy="both"
subCategory="Connection Factories"
discovery="ManagedComponentDiscoveryComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="ConnectionFactory" readOnly="true" />
+ <c:simple-property name="componentSubtype" default="Tx"
readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="TxConnectionFactoryTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="jndi-name" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used as
the
+ underlying ManagedComponent name when creating a new Resource of this type.
+ </c:description>
+ </c:simple-property>
+ <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
+ <c:map-property name="customProperties"
+ description="Maps a list of custom property names to the the fully
qualified class names of the org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter
implementations that should be used for those properties.">
+ <c:simple-property name="config-property"
+
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.ConnectionFactoryConfigPropertyAdapter"
/>
+ </c:map-property>
+ </c:group>
+ </plugin-configuration>
&datasourceAndConnectionFactoryOperations;
- <metric property="custom.transactionType"
displayName="Transaction Type" displayType="summary"
- description="The type of transactions used by this connection
factory - Local or XA"
- dataType="trait" category="performance"/>
+ <metric property="custom.transactionType"
displayName="Transaction Type" displayType="summary"
+ description="The type of transactions used by this connection factory -
Local or XA" dataType="trait" category="performance" />
&managedObjectMetrics;
&datasourceAndConnectionFactoryMetrics;
&connectionFactoryMetrics;
- <resource-configuration>
+ <resource-configuration>
- <c:group name="connection" displayName="Connection
Information">
+ <c:group name="connection" displayName="Connection
Information">
&connectionFactoryConnectionResourceConfigProps;
&datasourceAndConnectionFactoryConnectionResourceConfigProps;
- <c:simple-property name="xa-transaction"
- type="boolean"
- displayName="XA Transaction"
- required="false"
readOnly="true">
- <c:description>
- Whether on not to use XA transactions. The default is No.
- </c:description>
- </c:simple-property>
+ <c:simple-property name="xa-transaction" type="boolean"
displayName="XA Transaction"
+ required="false" readOnly="true">
+ <c:description>
+ Whether on not to use XA transactions. The default is No.
+ </c:description>
+ </c:simple-property>
- </c:group>
+ </c:group>
- <c:group name="advanced"
displayName="Advanced">
+ <c:group name="advanced" displayName="Advanced">
&datasourceAndConnectionFactoryAdvancedResourceConfigProps;
&connectionFactoryAdvancedResourceConfigProps;
- <c:simple-property name="interleaving"
type="boolean" required="false" defaultValue="false">
- <c:description>
- If true, enable transaction interleaving if the DB vendor
supports it (most do not).
- Can only be set to true if XA transactions are enabled.
- This property supersedes the
"track-connection-by-tx" property from earlier versions of
- JBoss AS. The default is false.
- </c:description>
- </c:simple-property>
-
- <c:simple-property name="xa-resource-timeout"
- type="integer"
- displayName="XA Resource Timeout"
- units="minutes"
- defaultValue="0"
- required="false">
- <c:description>
- The maximum time, in minutes, an XA Resource can be idle
before it is removed. 0 means no
- timeout. The default is 0.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="0"/>
- </c:constraint>
- </c:simple-property>
-
- </c:group>
-
- <c:template name="Local Transaction" description="a
connection factory that uses local transactions">
- <c:simple-property name="xa-transaction"
default="false"/>
- </c:template>
-
- <c:template name="XA Transaction" description="a
connection factory that uses XA transactions">
- <c:simple-property name="xa-transaction"
default="true"/>
- </c:template>
- </resource-configuration>
-
- </service>
-
-
- <service name="JBoss Messaging"
- class="JBossMessagingComponent"
- subCategory="Resources"
- discovery="JBossMessagingDiscoveryComponent"
- description="the JBoss Messaging JMS provider"
- singleton="true">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="JMS" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="ServerPeer" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </plugin-configuration>
-
- <service name="Queue"
- class="JmsDestinationComponent"
- createDeletePolicy="both"
- discovery="JmsDestinationDiscoveryComponent"
- description="a JMS queue">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="JMSDestination" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="Queue" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="QueueTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="JNDIName" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource
of this type.
- </c:description>
- </c:simple-property>
- <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
- <c:simple-property name="jms-type"
default="queue"/>
- <c:map-property name="customProperties"
- description="Maps a list of custom property
names to the the fully qualified class names of the
org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter implementations that should be used
for those properties.">
- <c:simple-property name="securityConfig"
-
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.JMSSecurityConfigAdapter"/>
- </c:map-property>
- </c:group>
- </plugin-configuration>
+ <c:simple-property name="interleaving" type="boolean"
required="false" defaultValue="false">
+ <c:description>
+ If true, enable transaction interleaving if the DB vendor supports it (most
do not).
+ Can only be set to true if XA transactions are enabled.
+ This property supersedes the "track-connection-by-tx" property
from earlier versions of
+ JBoss AS. The default is false.
+ </c:description>
+ </c:simple-property>
+
+ <c:simple-property name="xa-resource-timeout"
type="integer" displayName="XA Resource Timeout"
+ units="minutes" defaultValue="0"
required="false">
+ <c:description>
+ The maximum time, in minutes, an XA Resource can be idle before it is
removed. 0 means no
+ timeout. The default is 0.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="0" />
+ </c:constraint>
+ </c:simple-property>
+
+ </c:group>
+
+ <c:template name="Local Transaction" description="a connection
factory that uses local transactions">
+ <c:simple-property name="xa-transaction" default="false"
/>
+ </c:template>
+
+ <c:template name="XA Transaction" description="a connection
factory that uses XA transactions">
+ <c:simple-property name="xa-transaction" default="true"
/>
+ </c:template>
+ </resource-configuration>
+
+ </service>
+
+
+ <service name="JBoss Messaging"
class="JBossMessagingComponent" subCategory="Resources"
+ discovery="JBossMessagingDiscoveryComponent" description="the JBoss
Messaging JMS provider" singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType" default="JMS"
readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="ServerPeer" readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ </plugin-configuration>
+
+ <service name="Queue" class="JmsDestinationComponent"
createDeletePolicy="both"
+ discovery="JmsDestinationDiscoveryComponent" description="a JMS
queue">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="JMSDestination" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="Queue" readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="QueueTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="JNDIName" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used
as the
+ underlying ManagedComponent name when creating a new Resource of this
type.
+ </c:description>
+ </c:simple-property>
+ <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
+ <c:simple-property name="jms-type" default="queue"
/>
+ <c:map-property name="customProperties"
+ description="Maps a list of custom property names to the the fully
qualified class names of the org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter
implementations that should be used for those properties.">
+ <c:simple-property name="securityConfig"
+
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.JMSSecurityConfigAdapter"
/>
+ </c:map-property>
+ </c:group>
+ </plugin-configuration>
&destinationOperations;
- <operation name="listAllMessages" displayName="List All
Messages" description="List all messages for the specified selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all messages with selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listDurableMessages" displayName="List
Durable Messages" description="List all durable messages for the specified
selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all durable messages using a
selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listNonDurableMessages"
displayName="List Non Durable Messages" description="List all non durable
messages for the specified selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all non durable messages using a
selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listMessageCounterAsHTML"
displayName="List Message Counter As HTML" description="Get the message
counter as HTML">
- <results>
- <c:notes>Get the message counter as HTML</c:notes>
- <c:simple-property name="result"
type="longString"/>
- </results>
- </operation>
-
- <operation name="listMessageCounterHistoryAsHTML"
displayName="List Message Counter History As HTML" description="Get the
message counter history as HTML">
- <results>
- <c:notes>Get the message counter history as
HTML</c:notes>
- <c:simple-property name="result"
type="longString"/>
- </results>
- </operation>
-
- <operation name="resetMessageCounter"
displayName="Reset Message Counter" description="Reset the message
counter"/>
-
- <operation name="resetMessageCounterHistory"
displayName="Reset Message Counter History" description="Reset the message
counter history"/>
+ <operation name="listAllMessages" displayName="List All
Messages" description="List all messages for the specified selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all messages with selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listDurableMessages" displayName="List Durable
Messages"
+ description="List all durable messages for the specified
selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all durable messages using a selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listNonDurableMessages" displayName="List Non
Durable Messages"
+ description="List all non durable messages for the specified
selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all non durable messages using a
selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listMessageCounterAsHTML" displayName="List
Message Counter As HTML" description="Get the message counter as HTML">
+ <results>
+ <c:notes>Get the message counter as HTML</c:notes>
+ <c:simple-property name="result" type="longString"
/>
+ </results>
+ </operation>
+
+ <operation name="listMessageCounterHistoryAsHTML"
displayName="List Message Counter History As HTML"
+ description="Get the message counter history as HTML">
+ <results>
+ <c:notes>Get the message counter history as HTML</c:notes>
+ <c:simple-property name="result" type="longString"
/>
+ </results>
+ </operation>
+
+ <operation name="resetMessageCounter" displayName="Reset
Message Counter" description="Reset the message counter" />
+
+ <operation name="resetMessageCounterHistory" displayName="Reset
Message Counter History" description="Reset the message counter history"
/>
&managedObjectMetrics;
- <!-- Traits -->
-
- <metric property="createdProgrammatically"
displayType="summary"
- dataType="trait" category="performance"
- description="Was this queue created programmatically? If
Yes, the queue will not survive a restart of the application server. If No, the queue was
created via a deployment XML file."/>
-
- <!-- NOTE: We have to make this a trait rather than a resource config
prop due to a bug in JBMESSAGING
- (see
https://jira.jboss.org/jira/browse/JBAS-6721). -->
- <metric property="messageCounterHistoryDayLimit"
- dataType="trait" category="performance"
- description="This queue's message counter history day
limit - <0: unlimited, =0: history disabled, >0: maximum day
count"/>
-
- <!-- Numerics -->
-
- <metric property="consumerCount"
measurementType="dynamic" displayType="summary"
displayName="Consumer Count"
- dataType="measurement" category="throughput"
- description="The number of consumers on the
queue"/>
-
- <metric property="deliveringCount"
measurementType="dynamic" displayType="detail"
displayName="Delivering Count"
- dataType="measurement" category="throughput"
- description="The number of messages currently being
delivered"/>
-
- <metric property="messageCount"
measurementType="dynamic" displayType="summary"
displayName="Message Count"
- dataType="measurement" category="throughput"
- description="The number of messages in the queue"/>
-
- <metric property="scheduledMessageCount"
measurementType="dynamic" displayType="detail"
displayName="Scheduled Message Count"
- dataType="measurement" category="throughput"
- description="The number of scheduled messages in the
queue"/>
-
- <metric property="messageStatistics.count"
measurementType="dynamic" displayType="detail"
displayName="Count"
- dataType="measurement"
category="utilization"
- description="The total message count since startup or last
counter reset"/>
-
- <metric property="messageStatistics.countDelta"
measurementType="dynamic" displayType="detail" displayName="Count
Delta"
- dataType="measurement"
category="utilization"
- description="The message count delta since last method
call"/>
-
- <metric property="messageStatistics.depth"
measurementType="dynamic" displayType="detail"
displayName="Depth"
- dataType="measurement"
category="utilization"
- description="The current message count of pending messages
within the queue waiting for dispatch"/>
-
- <metric property="messageStatistics.depthDelta"
measurementType="dynamic" displayType="detail" displayName="Depth
Delta"
- dataType="measurement"
category="utilization"
- description="The message count delta of pending messages
since last method call"/>
-
- <metric property="messageStatistics.timeLastUpdate"
measurementType="dynamic" displayType="detail" displayName="Time
Last Update"
- dataType="measurement"
category="utilization"
- description="The timestamp of the last message
add"/>
-
- <metric property="clustered" dataType="trait"
description="True if this queue is clustered, false otherwise" />
-
- <resource-configuration>
-
- <!-- See:
https://anonsvn.jboss.org/repos/jbossas/trunk/messaging/src/main/org/jbos...
-->
-
- <c:simple-property required="true" name="name"
readOnly="true"
- description="The name of this queue (e.g.
'MyQueue')."/>
-
- <c:simple-property required="true"
name="JNDIName" readOnly="true"
- description="This queue's JNDI name (e.g.
'/queue/MyQueue')."/>
-
- <c:simple-property type="boolean"
required="false" name="clustered" readOnly="true"
defaultValue="false">
- <c:description>
- Is this queue clustered? For an existing queue, this property
is read-only. If not specified
- when creating a new queue, the default value is false.
- </c:description>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="downCacheSize"
defaultValue="2000">
- <c:description>
- When paging messages to storage from a subscription, they
first go into a "Down Cache" before
- being written to storage. This enables the write to occur as
a single operation, thus aiding
- performance. This setting determines the maximum number of
messages that the Down Cache will hold
- before they are flushed to storage.
- Updates to this property will not go into effect until the
queue has been restarted.
- The default value is 2000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="fullSize" defaultValue="200000">
- <c:description>
- The maximum number of messages for the queue held in memory
at any one time.
- The actual queue can hold many more messages than this, but
these are paged to and from
- storage as necessary, as messages are added or consumed.
- Updates to this property will not go into effect until the
queue has been restarted.
- The default value is 200000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="maxDeliveryAttempts"
defaultValue="-1">
- <c:description>
- The number of delivery attempts before a message to a
subscriber of this queue is moved to the
- DLQ. The default value is 10. A value of -1 indicates the
default value should be used.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="maxSize" defaultValue="-1">
- <c:description>
- The maximum number of messages this queue can hold before
they are dropped.
- A value of -1 means there is no maximum. The default value is
-1.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="pageSize" defaultValue="2000">
- <c:description>
- When loading messages from a subscription, this is the
maximum number of messages to
- pre-load in one operation. Must be less than Full Size and
greater than or equal to Down Cache Size.
- Updates to this property will not go into effect until the
queue has been restarted.
- The default value is 2000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="long"
required="false" name="redeliveryDelay" units="milliseconds"
defaultValue="-1">
- <c:description>
- The delay in milliseconds before a rolled back or recovered
message is redelivered.
- Set to 0 to disable redelivery. The default value is 0. A
value of -1 indicates the default value should be used.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="DLQ">
- <c:description>
- The JMX ObjectName of the dead letter queue (DLQ) for this
queue (e.g.
-
"jboss.messaging.destination:service=Queue,name=PrivateDLQ") - overrides the
default DLQ on the
- server peer.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="expiryQueue">
- <c:description>
- The JMX ObjectName of the expiry queue for this queue (e.g.
-
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
- expiry queue on the server peer.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="serverPeer">
- <c:description>
- The JMX ObjectName of the server peer this queue was deployed
on (e.g.
- "jboss.messaging:service=ServerPeer"). Updates to
this property will not go into effect until
- the queue has been restarted.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:list-property name="securityConfig" max="4"
min="2"
- displayName="Security Configurations"
- description="This element specifies a XML
fragment which describes the access control list to be used by the SecurityManager to
authorize client operations against the destination. The content model is the same as for
the SecurityManager SecurityConf attribute.">
- <c:map-property name="role"
- displayName="Security Configuration
Attributes"
- description="These are the attributes that
define the role name, and if the role is allowed to read, write or create Messages on this
Queue">
- <c:simple-property name="name"
- displayName="Name"
- description="Name of the Security
Role. e.g. Guest"
- summary="true"
- required="true"/>
- <c:simple-property name="read"
- displayName="Read"
- description="Is this role allowed to
read messages?"
- summary="true"
- required="false"
- type="boolean"/>
- <c:simple-property name="write"
- displayName="Write"
- description="Is this role allowed to
write messages?"
- summary="true"
- required="false"
- type="boolean"/>
- <c:simple-property name="create"
- displayName="Create"
- description="Is this role allowed to
create messages?"
- summary="true"
- required="false"
- type="boolean"/>
- </c:map-property>
-
- </c:list-property>
-
- </resource-configuration>
-
- <help>
+ <!-- Traits -->
+
+ <metric property="createdProgrammatically"
displayType="summary" dataType="trait"
category="performance"
+ description="Was this queue created programmatically? If Yes, the queue
will not survive a restart of the application server. If No, the queue was created via a
deployment XML file." />
+
+ <!-- NOTE: We have to make this a trait rather than a resource config prop due
to a bug in JBMESSAGING (see
https://jira.jboss.org/jira/browse/JBAS-6721). -->
+ <metric property="messageCounterHistoryDayLimit"
dataType="trait" category="performance"
+ description="This queue's message counter history day limit -
<0: unlimited, =0: history disabled, >0: maximum day count" />
+
+ <!-- Numerics -->
+
+ <metric property="consumerCount" measurementType="dynamic"
displayType="summary" displayName="Consumer Count"
+ dataType="measurement" category="throughput"
description="The number of consumers on the queue" />
+
+ <metric property="deliveringCount"
measurementType="dynamic" displayType="detail"
displayName="Delivering Count"
+ dataType="measurement" category="throughput"
description="The number of messages currently being delivered" />
+
+ <metric property="messageCount" measurementType="dynamic"
displayType="summary" displayName="Message Count"
+ dataType="measurement" category="throughput"
description="The number of messages in the queue" />
+
+ <metric property="scheduledMessageCount"
measurementType="dynamic" displayType="detail"
displayName="Scheduled Message Count"
+ dataType="measurement" category="throughput"
description="The number of scheduled messages in the queue" />
+
+ <metric property="messageStatistics.count"
measurementType="dynamic" displayType="detail"
displayName="Count"
+ dataType="measurement" category="utilization"
description="The total message count since startup or last counter reset" />
+
+ <metric property="messageStatistics.countDelta"
measurementType="dynamic" displayType="detail"
+ displayName="Count Delta" dataType="measurement"
category="utilization" description="The message count delta since last
method call" />
+
+ <metric property="messageStatistics.depth"
measurementType="dynamic" displayType="detail"
displayName="Depth"
+ dataType="measurement" category="utilization"
+ description="The current message count of pending messages within the
queue waiting for dispatch" />
+
+ <metric property="messageStatistics.depthDelta"
measurementType="dynamic" displayType="detail"
+ displayName="Depth Delta" dataType="measurement"
category="utilization"
+ description="The message count delta of pending messages since last method
call" />
+
+ <metric property="messageStatistics.timeLastUpdate"
measurementType="dynamic" displayType="detail"
+ displayName="Time Last Update" dataType="measurement"
category="utilization" description="The timestamp of the last message
add" />
+
+ <metric property="clustered" dataType="trait"
description="True if this queue is clustered, false otherwise" />
+
+ <resource-configuration>
+
+ <!-- See:
https://anonsvn.jboss.org/repos/jbossas/trunk/messaging/src/main/org/jbos...
-->
+
+ <c:simple-property required="true" name="name"
readOnly="true"
+ description="The name of this queue (e.g. 'MyQueue')."
/>
+
+ <c:simple-property required="true" name="JNDIName"
readOnly="true"
+ description="This queue's JNDI name (e.g.
'/queue/MyQueue')." />
+
+ <c:simple-property type="boolean" required="false"
name="clustered" readOnly="true"
+ defaultValue="false">
+ <c:description>
+ Is this queue clustered? For an existing queue, this property is read-only.
If not specified
+ when creating a new queue, the default value is false.
+ </c:description>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="downCacheSize" defaultValue="2000">
+ <c:description>
+ When paging messages to storage from a subscription, they first go into a
"Down Cache" before
+ being written to storage. This enables the write to occur as a single
operation, thus aiding
+ performance. This setting determines the maximum number of messages that
the Down Cache will hold
+ before they are flushed to storage.
+ Updates to this property will not go into effect until the queue has been
restarted.
+ The default value is 2000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="fullSize" defaultValue="200000">
+ <c:description>
+ The maximum number of messages for the queue held in memory at any one
time.
+ The actual queue can hold many more messages than this, but these are paged
to and from
+ storage as necessary, as messages are added or consumed.
+ Updates to this property will not go into effect until the queue has been
restarted.
+ The default value is 200000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="maxDeliveryAttempts" defaultValue="-1">
+ <c:description>
+ The number of delivery attempts before a message to a subscriber of this
queue is moved to the
+ DLQ. The default value is 10. A value of -1 indicates the default value
should be used.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="maxSize" defaultValue="-1">
+ <c:description>
+ The maximum number of messages this queue can hold before they are
dropped.
+ A value of -1 means there is no maximum. The default value is -1.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="pageSize" defaultValue="2000">
+ <c:description>
+ When loading messages from a subscription, this is the maximum number of
messages to
+ pre-load in one operation. Must be less than Full Size and greater than or
equal to Down Cache Size.
+ Updates to this property will not go into effect until the queue has been
restarted.
+ The default value is 2000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="long" required="false"
name="redeliveryDelay" units="milliseconds"
+ defaultValue="-1">
+ <c:description>
+ The delay in milliseconds before a rolled back or recovered message is
redelivered.
+ Set to 0 to disable redelivery. The default value is 0. A value of -1
indicates the default value should be used.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false" name="DLQ">
+ <c:description>
+ The JMX ObjectName of the dead letter queue (DLQ) for this queue (e.g.
+ "jboss.messaging.destination:service=Queue,name=PrivateDLQ") -
overrides the default DLQ on the
+ server peer.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false"
name="expiryQueue">
+ <c:description>
+ The JMX ObjectName of the expiry queue for this queue (e.g.
+
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
+ expiry queue on the server peer.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false"
name="serverPeer">
+ <c:description>
+ The JMX ObjectName of the server peer this queue was deployed on (e.g.
+ "jboss.messaging:service=ServerPeer"). Updates to this property
will not go into effect until
+ the queue has been restarted.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:list-property name="securityConfig" max="4"
min="2" displayName="Security Configurations"
+ description="This element specifies a XML fragment which describes the
access control list to be used by the SecurityManager to authorize client operations
against the destination. The content model is the same as for the SecurityManager
SecurityConf attribute.">
+ <c:map-property name="role" displayName="Security
Configuration Attributes"
+ description="These are the attributes that define the role name, and
if the role is allowed to read, write or create Messages on this Queue">
+ <c:simple-property name="name" displayName="Name"
description="Name of the Security Role. e.g. Guest"
+ summary="true" required="true" />
+ <c:simple-property name="read" displayName="Read"
description="Is this role allowed to read messages?"
+ summary="true" required="false"
type="boolean" />
+ <c:simple-property name="write" displayName="Write"
description="Is this role allowed to write messages?"
+ summary="true" required="false"
type="boolean" />
+ <c:simple-property name="create"
displayName="Create" description="Is this role allowed to create
messages?"
+ summary="true" required="false"
type="boolean" />
+ </c:map-property>
+
+ </c:list-property>
+
+ </resource-configuration>
+
+ <help>
<![CDATA[
<p>The message counter metrics will not be collected by
default. In order
for these metrics to be collected for all Topics and Queues for
a given application server instance,
@@ -1988,335 +1914,313 @@
edit that instance's
<tt>deploy/messaging/messaging-service.xml</tt> file and set the
<tt>EnableMessageCounters</tt> attribute to
"true".</p>
]]>
- </help>
-
- </service>
-
-
- <service name="Topic"
- class="JmsDestinationComponent"
- createDeletePolicy="both"
- discovery="JmsDestinationDiscoveryComponent"
- description="a JMS topic">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="JMSDestination" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="Topic" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- <c:simple-property name="templateName"
default="TopicTemplate" readOnly="true"/>
- <c:simple-property name="componentNameProperty"
default="JNDIName" readOnly="true">
- <c:description>
- The name of the Resource configuration property whose value
should be used as the
- underlying ManagedComponent name when creating a new Resource
of this type.
- </c:description>
- </c:simple-property>
- <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
- <c:simple-property name="jms-type"
default="topic"/>
- <c:map-property name="customProperties"
- description="Maps a list of custom property
names to the the fully qualified class names of the
org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter implementations that should be used
for those properties.">
- <c:simple-property name="securityConfig"
-
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.JMSSecurityConfigAdapter"/>
- </c:map-property>
- </c:group>
- </plugin-configuration>
+ </help>
+
+ </service>
+
+
+ <service name="Topic" class="JmsDestinationComponent"
createDeletePolicy="both"
+ discovery="JmsDestinationDiscoveryComponent" description="a JMS
topic">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType"
default="JMSDestination" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="Topic" readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ <c:simple-property name="templateName"
default="TopicTemplate" readOnly="true" />
+ <c:simple-property name="componentNameProperty"
default="JNDIName" readOnly="true">
+ <c:description>
+ The name of the Resource configuration property whose value should be used
as the
+ underlying ManagedComponent name when creating a new Resource of this
type.
+ </c:description>
+ </c:simple-property>
+ <c:group name="managedPropertyGroup"
displayName="managedPropertyGroup" hiddenByDefault="true">
+ <c:simple-property name="jms-type" default="topic"
/>
+ <c:map-property name="customProperties"
+ description="Maps a list of custom property names to the the fully
qualified class names of the org.rhq.plugins.jbossas5.adapter.api.PropertyAdapter
implementations that should be used for those properties.">
+ <c:simple-property name="securityConfig"
+
default="org.rhq.plugins.jbossas5.adapter.impl.configuration.custom.JMSSecurityConfigAdapter"
/>
+ </c:map-property>
+ </c:group>
+ </plugin-configuration>
&destinationOperations;
- <operation name="listAllMessages" displayName="List All
Messages" description="List all messages for the specified subscription with the
specified selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="subscriptionID"/>
- <c:simple-property required="false"
name="arg#1" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all messages for the specified subscription
with the specified selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listDurableMessages" displayName="List
Durable Messages" description="List all durable messages for the specified
subscription with the specified selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="subscriptionID"/>
- <c:simple-property required="false"
name="arg#1" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all durable messages for the specified
subscription with the specified selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listNonDurableMessages"
displayName="List Non Durable Messages" description="List all non durable
messages for the specified subscription with the specified selector">
- <parameters>
- <c:simple-property required="false"
name="arg#0" displayName="subscriptionID"/>
- <c:simple-property required="false"
name="arg#1" displayName="selector"/>
- </parameters>
- <results>
- <c:notes>List all non durable messages for the specified
subscription with the specified selector</c:notes>
- <c:list-property name="result">
- <c:map-property required="false"
name="element">
- <c:simple-property required="false"
name="JMSCorrelationID"/>
- <c:simple-property required="false"
name="JMSMessageID"/>
- <c:simple-property type="long"
required="false" name="JMSTimestamp"/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="listAllSubscriptions"
displayName="List All Subscriptions"
- description="Return all subscriptions for the
topic">
- <results>
- <c:notes>Return all subscriptions for the
topic</c:notes>
+ <operation name="listAllMessages" displayName="List All
Messages"
+ description="List all messages for the specified subscription with the
specified selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="subscriptionID" />
+ <c:simple-property required="false" name="arg#1"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all messages for the specified subscription with the
specified selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listDurableMessages" displayName="List Durable
Messages"
+ description="List all durable messages for the specified subscription with
the specified selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="subscriptionID" />
+ <c:simple-property required="false" name="arg#1"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all durable messages for the specified subscription with
the specified selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listNonDurableMessages" displayName="List Non
Durable Messages"
+ description="List all non durable messages for the specified subscription
with the specified selector">
+ <parameters>
+ <c:simple-property required="false" name="arg#0"
displayName="subscriptionID" />
+ <c:simple-property required="false" name="arg#1"
displayName="selector" />
+ </parameters>
+ <results>
+ <c:notes>List all non durable messages for the specified subscription
with the specified selector</c:notes>
+ <c:list-property name="result">
+ <c:map-property required="false" name="element">
+ <c:simple-property required="false"
name="JMSCorrelationID" />
+ <c:simple-property required="false"
name="JMSMessageID" />
+ <c:simple-property type="long" required="false"
name="JMSTimestamp" />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="listAllSubscriptions" displayName="List All
Subscriptions" description="Return all subscriptions for the topic">
+ <results>
+ <c:notes>Return all subscriptions for the topic</c:notes>
&subscriptionsResultProperty;
- </results>
- </operation>
-
- <operation name="listAllSubscriptionsAsHTML"
displayName="List All Subscriptions As HTML"
- description="Return all subscriptions for the topic as
HTML">
- <results>
- <c:notes>Return all subscriptions for the topic as
HTML</c:notes>
- <c:simple-property name="result"
type="longString"/>
- </results>
- </operation>
-
- <operation name="listDurableSubscriptions"
displayName="List Durable Subscriptions"
- description="Return all durable subscriptions for the
topic">
- <results>
- <c:notes>Return all durable subscriptions for the
topic</c:notes>
+ </results>
+ </operation>
+
+ <operation name="listAllSubscriptionsAsHTML" displayName="List
All Subscriptions As HTML"
+ description="Return all subscriptions for the topic as HTML">
+ <results>
+ <c:notes>Return all subscriptions for the topic as
HTML</c:notes>
+ <c:simple-property name="result" type="longString"
/>
+ </results>
+ </operation>
+
+ <operation name="listDurableSubscriptions" displayName="List
Durable Subscriptions"
+ description="Return all durable subscriptions for the topic">
+ <results>
+ <c:notes>Return all durable subscriptions for the
topic</c:notes>
&subscriptionsResultProperty;
- </results>
- </operation>
-
- <operation name="listDurableSubscriptionsAsHTML"
displayName="List Durable Subscriptions As HTML"
- description="Return all durable subscriptions for the
topic as HTML">
- <results>
- <c:notes>Return all durable subscriptions for the topic as
HTML</c:notes>
- <c:simple-property name="result"
type="longString"/>
- </results>
- </operation>
-
- <operation name="listNonDurableSubscriptions"
displayName="List Non-Durable Subscriptions"
- description="Return all non-durable subscriptions for the
topic">
- <results>
- <c:notes>Return all non-durable subscriptions for the
topic</c:notes>
+ </results>
+ </operation>
+
+ <operation name="listDurableSubscriptionsAsHTML"
displayName="List Durable Subscriptions As HTML"
+ description="Return all durable subscriptions for the topic as
HTML">
+ <results>
+ <c:notes>Return all durable subscriptions for the topic as
HTML</c:notes>
+ <c:simple-property name="result" type="longString"
/>
+ </results>
+ </operation>
+
+ <operation name="listNonDurableSubscriptions" displayName="List
Non-Durable Subscriptions"
+ description="Return all non-durable subscriptions for the topic">
+ <results>
+ <c:notes>Return all non-durable subscriptions for the
topic</c:notes>
&subscriptionsResultProperty;
- </results>
- </operation>
+ </results>
+ </operation>
- <operation name="listNonDurableSubscriptionsAsHTML"
displayName="List Non-Durable Subscriptions As HTML"
- description="Return all non-durable subscriptions for the
topic as HTML">
- <results>
- <c:notes>Return all non-durable subscriptions for the topic
as HTML</c:notes>
- <c:simple-property name="result"
type="longString"/>
- </results>
- </operation>
+ <operation name="listNonDurableSubscriptionsAsHTML"
displayName="List Non-Durable Subscriptions As HTML"
+ description="Return all non-durable subscriptions for the topic as
HTML">
+ <results>
+ <c:notes>Return all non-durable subscriptions for the topic as
HTML</c:notes>
+ <c:simple-property name="result" type="longString"
/>
+ </results>
+ </operation>
&managedObjectMetrics;
- <!-- Traits -->
-
- <metric property="createdProgrammatically"
displayType="summary"
- dataType="trait" category="performance"
- description="Was this topic created programmatically? If
Yes, the topic will not survive a restart of the application server. If No, the topic was
created via a deployment XML file."/>
-
- <!-- NOTE: We have to make this a trait rather than a resource config
prop due to a bug in JBMESSAGING
- (see
https://jira.jboss.org/jira/browse/JBAS-6721). -->
- <metric property="messageCounterHistoryDayLimit"
- dataType="trait" category="performance"
- description="This topic's message counter history day
limit - <0: unlimited, =0: history disabled, >0: maximum day
count"/>
-
- <!-- Numerics -->
-
- <metric property="allMessageCount"
measurementType="dynamic" displayType="summary" displayName="All
Message Count"
- dataType="measurement" category="throughput"
- description="The count of all messages in all subscriptions
to this topic"/>
-
- <metric property="allSubscriptionsCount"
measurementType="dynamic" displayType="summary" displayName="All
Subscriptions Count"
- dataType="measurement" category="throughput"
- description="The count of all subscriptions to this
topic"/>
-
- <metric property="durableMessageCount"
measurementType="dynamic" displayType="detail"
displayName="Durable Message Count"
- dataType="measurement" category="throughput"
- description="The count of all messages for all durable
subscriptions to this topic"/>
-
- <metric property="durableSubscriptionsCount"
measurementType="dynamic" displayType="detail"
displayName="Durable Subscriptions Count"
- dataType="measurement" category="throughput"
- description="The count of all durable subscriptions to this
topic"/>
-
- <metric property="nonDurableMessageCount"
measurementType="dynamic" displayType="detail" displayName="Non
Durable Message Count"
- dataType="measurement" category="throughput"
- description="The count of all messages in all non durable
subscriptions to this topic"/>
-
- <metric property="nonDurableSubscriptionsCount"
measurementType="dynamic" displayType="detail" displayName="Non
Durable Subscriptions Count"
- dataType="measurement" category="throughput"
- description="The count of all non durable subscriptions to
this topic"/>
-
- <metric property="clustered" dataType="trait"
description="True if this topic is clustered, false otherwise" />
-
- <resource-configuration>
-
- <!-- See:
https://anonsvn.jboss.org/repos/jbossas/trunk/messaging/src/main/org/jbos...
-->
-
- <c:simple-property required="true" name="name"
readOnly="true"
- description="The name of this topic (e.g.
'MyTopic')."/>
-
- <c:simple-property required="true"
name="JNDIName" readOnly="true"
- description="This topic's JNDI name (e.g.
'/topic/MyTopic')"/>
-
- <c:simple-property type="boolean"
required="false" name="clustered" readOnly="true"
defaultValue="false">
- <c:description>
- Is this topic clustered? For an existing topic, this property
is read-only. If not specified
- when creating a new topic, the default value is false.
- </c:description>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="downCacheSize"
defaultValue="2000">
- <c:description>
- When paging messages to storage from a subscription, they
first go into a "Down Cache" before
- being written to storage. This enables the write to occur as
a single operation, thus aiding
- performance. This setting determines the maximum number of
messages that the Down Cache will hold
- before they are flushed to storage.
- Updates to this property will not go into effect until the
topic has been restarted.
- The default value is 2000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="fullSize" defaultValue="200000">
- <c:description>
- The maximum number of messages held by the topic
subscriptions in memory at any one time.
- The actual subscription can hold many more messages than
this, but these are paged to and from
- storage as necessary, as messages are added or consumed.
- Updates to this property will not go into effect until the
topic has been restarted.
- The default value is 200000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="maxDeliveryAttempts"
defaultValue="-1">
- <c:description>
- The number of delivery attempts before a message to a
subscriber of this topic is moved to the
- DLQ. The default value is 10. A value of -1 indicates the
default value should be used.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="maxSize" defaultValue="-1">
- <c:description>
- The maximum number of messages this topic can hold before
they are dropped.
- A value of -1 means there is no maximum. The default value is
-1.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="integer"
required="false" name="pageSize" defaultValue="2000">
- <c:description>
- When loading messages from a subscription, this is the
maximum number of messages to
- pre-load in one operation. Must be less than Full Size and
greater than or equal to Down Cache Size.
- Updates to this property will not go into effect until the
topic has been restarted.
- The default value is 2000.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property type="long"
required="false" name="redeliveryDelay" units="milliseconds"
defaultValue="-1">
- <c:description>
- The delay in milliseconds before a rolled back or recovered
message is redelivered.
- Set to 0 to disable redelivery. The default value is 0. A
value of -1 indicates the default value should be used.
- </c:description>
- <c:constraint>
- <c:integer-constraint minimum="-1"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="DLQ">
- <c:description>
- The JMX ObjectName of the dead letter queue (DLQ) for this
topic (e.g.
-
"jboss.messaging.destination:service=Queue,name=PrivateDLQ") - overrides the
default DLQ on the
- server peer.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="expiryQueue">
- <c:description>
- The JMX ObjectName of the expiry queue for this topic (e.g.
-
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
- expiry queue on the server peer.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:simple-property required="false"
name="serverPeer">
- <c:description>
- The JMX ObjectName of the server peer this topic was deployed
on (e.g.
- "jboss.messaging:service=ServerPeer"). Updates to
this property will not go into effect until
- the topic has been restarted.
- </c:description>
- <c:constraint>
- <c:regex-constraint expression="[^:]+:.+"/>
- </c:constraint>
- </c:simple-property>
-
- <c:list-property name="securityConfig" max="4"
min="2"
- displayName="Security Configurations"
- description="This element specifies a XML
fragment which describes the access control list to be used by the SecurityManager to
authorize client operations against the destination. The content model is the same as for
the SecurityManager SecurityConf attribute.">
- <c:map-property name="role"
- displayName="Security Configuration
Attributes"
- description="These are the attributes that
define the role name, and if the role is allowed to read, write or create Messages on this
Queue">
- <c:simple-property name="name"
- displayName="Name"
- description="Name of the Security
Role. e.g. Guest"
- summary="true"
- required="true"/>
- <c:simple-property name="read"
- displayName="Read"
- description="Is this role allowed to
read messages?"
- summary="true"
- required="false"
- type="boolean"/>
- <c:simple-property name="write"
- displayName="Write"
- description="Is this role allowed to
write messages?"
- summary="true"
- required="false"
- type="boolean"/>
- <c:simple-property name="create"
- displayName="Create"
- description="Is this role allowed to
create messages?"
- summary="true"
- required="false"
- type="boolean"/>
- </c:map-property>
- </c:list-property>
-
- </resource-configuration>
-
- <help>
+ <!-- Traits -->
+
+ <metric property="createdProgrammatically"
displayType="summary" dataType="trait"
category="performance"
+ description="Was this topic created programmatically? If Yes, the topic
will not survive a restart of the application server. If No, the topic was created via a
deployment XML file." />
+
+ <!-- NOTE: We have to make this a trait rather than a resource config prop due
to a bug in JBMESSAGING (see
https://jira.jboss.org/jira/browse/JBAS-6721). -->
+ <metric property="messageCounterHistoryDayLimit"
dataType="trait" category="performance"
+ description="This topic's message counter history day limit -
<0: unlimited, =0: history disabled, >0: maximum day count" />
+
+ <!-- Numerics -->
+
+ <metric property="allMessageCount"
measurementType="dynamic" displayType="summary" displayName="All
Message Count"
+ dataType="measurement" category="throughput"
description="The count of all messages in all subscriptions to this topic"
/>
+
+ <metric property="allSubscriptionsCount"
measurementType="dynamic" displayType="summary" displayName="All
Subscriptions Count"
+ dataType="measurement" category="throughput"
description="The count of all subscriptions to this topic" />
+
+ <metric property="durableMessageCount"
measurementType="dynamic" displayType="detail"
displayName="Durable Message Count"
+ dataType="measurement" category="throughput"
description="The count of all messages for all durable subscriptions to this
topic" />
+
+ <metric property="durableSubscriptionsCount"
measurementType="dynamic" displayType="detail"
+ displayName="Durable Subscriptions Count"
dataType="measurement" category="throughput"
+ description="The count of all durable subscriptions to this topic"
/>
+
+ <metric property="nonDurableMessageCount"
measurementType="dynamic" displayType="detail"
+ displayName="Non Durable Message Count"
dataType="measurement" category="throughput"
+ description="The count of all messages in all non durable subscriptions to
this topic" />
+
+ <metric property="nonDurableSubscriptionsCount"
measurementType="dynamic" displayType="detail"
+ displayName="Non Durable Subscriptions Count"
dataType="measurement" category="throughput"
+ description="The count of all non durable subscriptions to this
topic" />
+
+ <metric property="clustered" dataType="trait"
description="True if this topic is clustered, false otherwise" />
+
+ <resource-configuration>
+
+ <!-- See:
https://anonsvn.jboss.org/repos/jbossas/trunk/messaging/src/main/org/jbos...
-->
+
+ <c:simple-property required="true" name="name"
readOnly="true"
+ description="The name of this topic (e.g. 'MyTopic')."
/>
+
+ <c:simple-property required="true" name="JNDIName"
readOnly="true"
+ description="This topic's JNDI name (e.g.
'/topic/MyTopic')" />
+
+ <c:simple-property type="boolean" required="false"
name="clustered" readOnly="true"
+ defaultValue="false">
+ <c:description>
+ Is this topic clustered? For an existing topic, this property is read-only.
If not specified
+ when creating a new topic, the default value is false.
+ </c:description>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="downCacheSize" defaultValue="2000">
+ <c:description>
+ When paging messages to storage from a subscription, they first go into a
"Down Cache" before
+ being written to storage. This enables the write to occur as a single
operation, thus aiding
+ performance. This setting determines the maximum number of messages that
the Down Cache will hold
+ before they are flushed to storage.
+ Updates to this property will not go into effect until the topic has been
restarted.
+ The default value is 2000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="fullSize" defaultValue="200000">
+ <c:description>
+ The maximum number of messages held by the topic subscriptions in memory at
any one time.
+ The actual subscription can hold many more messages than this, but these
are paged to and from
+ storage as necessary, as messages are added or consumed.
+ Updates to this property will not go into effect until the topic has been
restarted.
+ The default value is 200000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="maxDeliveryAttempts" defaultValue="-1">
+ <c:description>
+ The number of delivery attempts before a message to a subscriber of this
topic is moved to the
+ DLQ. The default value is 10. A value of -1 indicates the default value
should be used.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="maxSize" defaultValue="-1">
+ <c:description>
+ The maximum number of messages this topic can hold before they are
dropped.
+ A value of -1 means there is no maximum. The default value is -1.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="integer" required="false"
name="pageSize" defaultValue="2000">
+ <c:description>
+ When loading messages from a subscription, this is the maximum number of
messages to
+ pre-load in one operation. Must be less than Full Size and greater than or
equal to Down Cache Size.
+ Updates to this property will not go into effect until the topic has been
restarted.
+ The default value is 2000.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property type="long" required="false"
name="redeliveryDelay" units="milliseconds"
+ defaultValue="-1">
+ <c:description>
+ The delay in milliseconds before a rolled back or recovered message is
redelivered.
+ Set to 0 to disable redelivery. The default value is 0. A value of -1
indicates the default value should be used.
+ </c:description>
+ <c:constraint>
+ <c:integer-constraint minimum="-1" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false" name="DLQ">
+ <c:description>
+ The JMX ObjectName of the dead letter queue (DLQ) for this topic (e.g.
+ "jboss.messaging.destination:service=Queue,name=PrivateDLQ") -
overrides the default DLQ on the
+ server peer.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false"
name="expiryQueue">
+ <c:description>
+ The JMX ObjectName of the expiry queue for this topic (e.g.
+
"jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue") - overrides
the default
+ expiry queue on the server peer.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:simple-property required="false"
name="serverPeer">
+ <c:description>
+ The JMX ObjectName of the server peer this topic was deployed on (e.g.
+ "jboss.messaging:service=ServerPeer"). Updates to this property
will not go into effect until
+ the topic has been restarted.
+ </c:description>
+ <c:constraint>
+ <c:regex-constraint expression="[^:]+:.+" />
+ </c:constraint>
+ </c:simple-property>
+
+ <c:list-property name="securityConfig" max="4"
min="2" displayName="Security Configurations"
+ description="This element specifies a XML fragment which describes the
access control list to be used by the SecurityManager to authorize client operations
against the destination. The content model is the same as for the SecurityManager
SecurityConf attribute.">
+ <c:map-property name="role" displayName="Security
Configuration Attributes"
+ description="These are the attributes that define the role name, and
if the role is allowed to read, write or create Messages on this Queue">
+ <c:simple-property name="name" displayName="Name"
description="Name of the Security Role. e.g. Guest"
+ summary="true" required="true" />
+ <c:simple-property name="read" displayName="Read"
description="Is this role allowed to read messages?"
+ summary="true" required="false"
type="boolean" />
+ <c:simple-property name="write" displayName="Write"
description="Is this role allowed to write messages?"
+ summary="true" required="false"
type="boolean" />
+ <c:simple-property name="create"
displayName="Create" description="Is this role allowed to create
messages?"
+ summary="true" required="false"
type="boolean" />
+ </c:map-property>
+ </c:list-property>
+
+ </resource-configuration>
+
+ <help>
<![CDATA[
<p>The message counter metrics will not be collected by
default. In order
for these metrics to be collected for all Topics and Queues for
a given application server instance,
@@ -2326,271 +2230,238 @@
edit that instance's
<tt>deploy/messaging/messaging-service.xml</tt> file and set the
<tt>EnableMessageCounters</tt> attribute to
"true".</p>
]]>
- </help>
+ </help>
- </service>
+ </service>
- </service>
+ </service>
- <!-- =================================== ManagedDeployment Resource types
================================== -->
+ <!-- =================================== ManagedDeployment Resource types
================================== -->
- <service name="Enterprise Application (EAR)"
- subCategory="Applications"
- class="StandaloneManagedDeploymentComponent"
- discovery="StandaloneManagedDeploymentDiscoveryComponent"
- description="JEE enterprise application (EAR)"
- createDeletePolicy="both"
- creationDataType="content">
+ <service name="Enterprise Application (EAR)"
subCategory="Applications"
class="StandaloneManagedDeploymentComponent"
+ discovery="StandaloneManagedDeploymentDiscoveryComponent"
description="JEE enterprise application (EAR)"
+ createDeletePolicy="both" creationDataType="content">
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="The name of this EAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="ear" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="Enterprise Application" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEApplication" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="The
name of this EAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="ear"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate"
default="Enterprise Application" readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEApplication" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
- <operation name="start"
- description="starts this EAR"/>
+ <operation name="start" description="starts this EAR" />
- <operation name="stop"
- description="stops this EAR"/>
+ <operation name="stop" description="stops this EAR" />
- <operation name="restart"
- description="stops and then restarts this EAR"/>
+ <operation name="restart" description="stops and then restarts
this EAR" />
- <metric property="custom.path" displayName="Path"
- dataType="trait" displayType="summary"
- description="the absolute path of this EAR file or
directory"/>
+ <metric property="custom.path" displayName="Path"
dataType="trait" displayType="summary"
+ description="the absolute path of this EAR file or directory" />
- <metric property="custom.exploded"
displayName="Exploded?"
- dataType="trait" displayType="summary"
- description="whether this EAR is deployed exploded (i.e. as a
directory)"/>
+ <metric property="custom.exploded" displayName="Exploded?"
dataType="trait" displayType="summary"
+ description="whether this EAR is deployed exploded (i.e. as a
directory)" />
- <content name="file" displayName="EAR File"
category="deployable" isCreationType="true">
+ <content name="file" displayName="EAR File"
category="deployable" isCreationType="true">
&deploymentContentConfigProps;
- </content>
-
- <drift-definition
- name="Template-Files"
- description="Monitor files comprising the enterprise application
archive (EAR). Use filters for more fine-grained monitoring. Or, create definitions only
on the embedded WAR resources themselves.">
- <basedir>
- <value-context>measurementTrait</value-context>
- <value-name>custom.path</value-name>
- </basedir>
- </drift-definition>
-
- </service>
-
- <service name="Web Application (WAR)"
- subCategory="Applications"
- class="StandaloneManagedDeploymentComponent"
- discovery="StandaloneManagedDeploymentDiscoveryComponent"
- description="a standalone web application (WAR)"
- createDeletePolicy="both"
- creationDataType="content">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this WAR" readOnly="true"/>
- <!-- setting to required=false since this is not usually set
properly at discovery time -->
- <c:simple-property name="contextPath"
description="this WAR's context path (e.g. /admin-console)"
required="false" readOnly="false"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="war" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="a standalone web application (WAR)" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEWebApplication" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <operation name="start"
- description="starts this WAR"/>
-
- <operation name="stop"
- description="stops this WAR"/>
-
- <operation name="restart"
- description="stops and then restarts this WAR"/>
-
- <metric property="custom.path" displayName="Path"
- dataType="trait" displayType="summary"
- description="the absolute path of this WAR file or
directory"/>
-
- <metric property="custom.exploded"
displayName="Exploded?"
- dataType="trait" displayType="summary"
- description="whether this WAR is deployed exploded (i.e. as a
directory)"/>
+ </content>
+
+ <drift-definition name="Template-Files"
+ description="Monitor files comprising the enterprise application archive
(EAR). Use filters for more fine-grained monitoring. Or, create definitions only on the
embedded WAR resources themselves.">
+ <basedir>
+ <value-context>measurementTrait</value-context>
+ <value-name>custom.path</value-name>
+ </basedir>
+ </drift-definition>
+
+ </service>
+
+ <service name="Web Application (WAR)"
subCategory="Applications"
class="StandaloneManagedDeploymentComponent"
+ discovery="StandaloneManagedDeploymentDiscoveryComponent"
description="a standalone web application (WAR)"
+ createDeletePolicy="both" creationDataType="content">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this WAR" readOnly="true" />
+ <!-- setting to required=false since this is not usually set properly at
discovery time -->
+ <c:simple-property name="contextPath" description="this
WAR's context path (e.g. /admin-console)"
+ required="false" readOnly="false" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="war"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="a
standalone web application (WAR)"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEWebApplication" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <operation name="start" description="starts this WAR" />
+
+ <operation name="stop" description="stops this WAR" />
+
+ <operation name="restart" description="stops and then restarts
this WAR" />
+
+ <metric property="custom.path" displayName="Path"
dataType="trait" displayType="summary"
+ description="the absolute path of this WAR file or directory" />
+
+ <metric property="custom.exploded" displayName="Exploded?"
dataType="trait" displayType="summary"
+ description="whether this WAR is deployed exploded (i.e. as a
directory)" />
&webApplicationMetrics;
- <content name="file" displayName="WAR File"
category="deployable" isCreationType="true">
+ <content name="file" displayName="WAR File"
category="deployable" isCreationType="true">
&deploymentContentConfigProps;
- </content>
-
- <drift-definition
- name="Template-Files"
- description="Monitor files comprising the web application archive
(WAR). Use filters for more fine-grained monitoring.">
- <basedir>
- <value-context>measurementTrait</value-context>
- <value-name>custom.path</value-name>
- </basedir>
- </drift-definition>
-
- <service name="Web Application Context"
- class="WebApplicationContextComponent"
- discovery="WebApplicationContextDiscoveryComponent"
- description="a web application context">
-
- <plugin-configuration>
- <c:simple-property name="virtualHost"
description="this WAR's virtual host (e.g. localhost)"
readOnly="true"/>
- <c:group name="advanced">
- <c:simple-property name="componentType"
default="MBean" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="WebApplicationManager" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </c:group>
- <c:group name="ResponseTime">
- <c:simple-property name="responseTimeLogFile"
required="false"
- description="the full path to the log file
containing response-time stats for this webapp"/>
- <c:simple-property name="responseTimeUrlExcludes"
required="false"
- description="a space-delimited list of
regular expressions specifying URLs that should be excluded from response-time stats
collection"/>
- <c:simple-property name="responseTimeUrlTransforms"
required="false"
- description="a space-delimited list of
Perl-style substitution expressions that should be applied to all URLs for which
response-time stats are collected (e.g. |^/dept/finance/.*|/dept/finance/*|)"/>
- </c:group>
- </plugin-configuration>
+ </content>
+
+ <drift-definition name="Template-Files"
+ description="Monitor files comprising the web application archive (WAR).
Use filters for more fine-grained monitoring.">
+ <basedir>
+ <value-context>measurementTrait</value-context>
+ <value-name>custom.path</value-name>
+ </basedir>
+ </drift-definition>
+
+ <service name="Web Application Context"
class="WebApplicationContextComponent"
discovery="WebApplicationContextDiscoveryComponent"
+ description="a web application context">
+
+ <plugin-configuration>
+ <c:simple-property name="virtualHost" description="this
WAR's virtual host (e.g. localhost)"
+ readOnly="true" />
+ <c:group name="advanced">
+ <c:simple-property name="componentType"
default="MBean" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="WebApplicationManager" readOnly="true" />
+ <c:simple-property name="componentName"
readOnly="true" />
+ </c:group>
+ <c:group name="ResponseTime">
+ <c:simple-property name="responseTimeLogFile"
required="false"
+ description="the full path to the log file containing response-time
stats for this webapp" />
+ <c:simple-property name="responseTimeUrlExcludes"
required="false"
+ description="a space-delimited list of regular expressions specifying
URLs that should be excluded from response-time stats collection" />
+ <c:simple-property name="responseTimeUrlTransforms"
required="false"
+ description="a space-delimited list of Perl-style substitution
expressions that should be applied to all URLs for which response-time stats are collected
(e.g. |^/dept/finance/.*|/dept/finance/*|)" />
+ </c:group>
+ </plugin-configuration>
&webApplicationContextMetrics;
- </service>
-
- </service>
-
- <service name="Embedded Web Application (WAR)"
- subCategory="Applications"
- class="EmbeddedManagedDeploymentComponent"
- discovery="EmbeddedManagedDeploymentDiscoveryComponent"
- description="an embedded web application (WAR)">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this WAR" readOnly="true"/>
- <!-- setting to required=false since this is not usually set
properly at discovery time -->
- <c:simple-property name="contextPath"
description="this WAR's context path (e.g. /admin-console"
required="false" readOnly="false"/>
- </c:group>
- <c:group name="ResponseTime">
- <c:simple-property name="responseTimeLogFile"
required="false"
- description="the full path to the log file
containing response-time stats for this webapp"/>
- <c:simple-property name="responseTimeUrlExcludes"
required="false"
- description="a space-delimited list of regular
expressions specifying URLs that should be excluded from response-time stats
collection"/>
- <c:simple-property name="responseTimeUrlTransforms"
required="false"
- description="a space-delimited list of
Perl-style substitution expressions that should be applied to all URLs for which
response-time stats are collected (e.g. |^/dept/finance/.*|/dept/finance/*|)"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="war" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="an embedded web application (WAR)" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEWebApplication" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- <c:simple-property name="embedded"
default="JavaEEWebApplication" readOnly="true"/>
- </c:group>
- </plugin-configuration>
-
- <metric property="custom.parent" displayName="Parent"
- dataType="trait" displayType="summary"
- description="the name of this WAR's parent
deployment"/>
+ </service>
+
+ </service>
+
+ <service name="Embedded Web Application (WAR)"
subCategory="Applications" class="EmbeddedManagedDeploymentComponent"
+ discovery="EmbeddedManagedDeploymentDiscoveryComponent"
description="an embedded web application (WAR)">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this WAR" readOnly="true" />
+ <!-- setting to required=false since this is not usually set properly at
discovery time -->
+ <c:simple-property name="contextPath" description="this
WAR's context path (e.g. /admin-console"
+ required="false" readOnly="false" />
+ </c:group>
+ <c:group name="ResponseTime">
+ <c:simple-property name="responseTimeLogFile"
required="false"
+ description="the full path to the log file containing response-time
stats for this webapp" />
+ <c:simple-property name="responseTimeUrlExcludes"
required="false"
+ description="a space-delimited list of regular expressions specifying
URLs that should be excluded from response-time stats collection" />
+ <c:simple-property name="responseTimeUrlTransforms"
required="false"
+ description="a space-delimited list of Perl-style substitution
expressions that should be applied to all URLs for which response-time stats are collected
(e.g. |^/dept/finance/.*|/dept/finance/*|)" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="war"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="an
embedded web application (WAR)"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEWebApplication" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ <c:simple-property name="embedded"
default="JavaEEWebApplication" readOnly="true" />
+ </c:group>
+ </plugin-configuration>
+
+ <metric property="custom.parent" displayName="Parent"
dataType="trait" displayType="summary"
+ description="the name of this WAR's parent deployment" />
&webApplicationMetrics;
- <service name="Embedded Web Application Context"
- class="WebApplicationContextComponent"
- discovery="WebApplicationContextDiscoveryComponent"
- description="a web application context">
-
- <plugin-configuration>
- <c:simple-property name="virtualHost"
description="this WAR's virtual host (e.g. localhost)"
readOnly="true"/>
- <c:group name="advanced">
- <c:simple-property name="componentType"
default="MBean" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="WebApplicationManager" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </c:group>
- <c:group name="ResponseTime">
- <c:simple-property name="responseTimeLogFile"
required="false"
- description="the full path to the log file
containing response-time stats for this webapp"/>
- <c:simple-property name="responseTimeUrlExcludes"
required="false"
- description="a space-delimited list of
regular expressions specifying URLs that should be excluded from response-time stats
collection"/>
- <c:simple-property name="responseTimeUrlTransforms"
required="false"
- description="a space-delimited list of
Perl-style substitution expressions that should be applied to all URLs for which
response-time stats are collected (e.g. |^/dept/finance/.*|/dept/finance/*|)"/>
- </c:group>
- </plugin-configuration>
+ <service name="Embedded Web Application Context"
class="WebApplicationContextComponent"
discovery="WebApplicationContextDiscoveryComponent"
+ description="a web application context">
+
+ <plugin-configuration>
+ <c:simple-property name="virtualHost" description="this
WAR's virtual host (e.g. localhost)"
+ readOnly="true" />
+ <c:group name="advanced">
+ <c:simple-property name="componentType"
default="MBean" readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="WebApplicationManager" readOnly="true" />
+ <c:simple-property name="componentName"
readOnly="true" />
+ </c:group>
+ <c:group name="ResponseTime">
+ <c:simple-property name="responseTimeLogFile"
required="false"
+ description="the full path to the log file containing response-time
stats for this webapp" />
+ <c:simple-property name="responseTimeUrlExcludes"
required="false"
+ description="a space-delimited list of regular expressions specifying
URLs that should be excluded from response-time stats collection" />
+ <c:simple-property name="responseTimeUrlTransforms"
required="false"
+ description="a space-delimited list of Perl-style substitution
expressions that should be applied to all URLs for which response-time stats are collected
(e.g. |^/dept/finance/.*|/dept/finance/*|)" />
+ </c:group>
+ </plugin-configuration>
&webApplicationContextMetrics;
- </service>
-
- </service>
-
- <service name="EJB2 JAR"
- subCategory="Applications"
- class="StandaloneManagedDeploymentComponent"
- discovery="StandaloneManagedDeploymentDiscoveryComponent"
- description="a standalone EJB 2.x application"
- createDeletePolicy="both"
- creationDataType="content">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this EJB JAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="jar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="a standalone EJB 2.x application" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans2x" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <operation name="start"
- description="starts this EJB JAR"/>
-
- <operation name="stop"
- description="stops this EJB JAR"/>
-
- <operation name="restart"
- description="stops and then restarts this EJB JAR"/>
-
- <metric property="custom.path" displayName="Path"
- dataType="trait" displayType="summary"
- description="the absolute path of this EJB JAR file or
directory"/>
-
- <metric property="custom.exploded"
displayName="Exploded?"
- dataType="trait" displayType="summary"
- description="whether this EJB JAR is deployed exploded (i.e. as
a directory)"/>
-
- <content name="file" displayName="EJB JAR File"
category="deployable" isCreationType="true">
+ </service>
+
+ </service>
+
+ <service name="EJB2 JAR" subCategory="Applications"
class="StandaloneManagedDeploymentComponent"
discovery="StandaloneManagedDeploymentDiscoveryComponent"
+ description="a standalone EJB 2.x application"
createDeletePolicy="both" creationDataType="content">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this EJB JAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="jar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="a
standalone EJB 2.x application"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans2x" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <operation name="start" description="starts this EJB JAR"
/>
+
+ <operation name="stop" description="stops this EJB JAR"
/>
+
+ <operation name="restart" description="stops and then restarts
this EJB JAR" />
+
+ <metric property="custom.path" displayName="Path"
dataType="trait" displayType="summary"
+ description="the absolute path of this EJB JAR file or directory"
/>
+
+ <metric property="custom.exploded" displayName="Exploded?"
dataType="trait" displayType="summary"
+ description="whether this EJB JAR is deployed exploded (i.e. as a
directory)" />
+
+ <content name="file" displayName="EJB JAR File"
category="deployable" isCreationType="true">
&deploymentContentConfigProps;
- </content>
+ </content>
- <service name="EJB2 Stateless Session Bean"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Stateless Session Bean">
+ <service name="EJB2 Stateless Session Bean"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Stateless Session Bean">
&ejb2StatelessSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb2CreateRemoveMetrics;
@@ -2598,15 +2469,13 @@
&ejb2SessionBeanMetrics;
&ejb2StatelessSessionBeanMetrics;
- <metric property="methodInvocationTime"
dataType="calltime" units="milliseconds"
- defaultOn="false" destinationType="Method
Name"
- description="The minimum, maximum, and average invocation
times for each of the methods exposed by this EJB"/>
- </service>
+ <metric property="methodInvocationTime"
dataType="calltime" units="milliseconds" defaultOn="false"
+ destinationType="Method Name"
+ description="The minimum, maximum, and average invocation times for each
of the methods exposed by this EJB" />
+ </service>
- <service name="EJB2 Stateful Session Bean"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Stateful Session Bean">
+ <service name="EJB2 Stateful Session Bean"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Stateful Session Bean">
&ejb2StatefulSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb2CreateRemoveMetrics;
@@ -2614,383 +2483,329 @@
&ejb2SessionBeanMetrics;
&ejb2StatefulSessionBeanMetrics;
- <metric property="methodInvocationTime"
dataType="calltime" units="milliseconds"
- defaultOn="false" destinationType="Method
Name"
- description="The minimum, maximum, and average invocation
times for each of the methods exposed by this EJB"/>
- </service>
+ <metric property="methodInvocationTime"
dataType="calltime" units="milliseconds" defaultOn="false"
+ destinationType="Method Name"
+ description="The minimum, maximum, and average invocation times for each
of the methods exposed by this EJB" />
+ </service>
- <service name="EJB2 Message-Driven Bean"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Message Driven Bean">
+ <service name="EJB2 Message-Driven Bean"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Message Driven Bean">
&ejb2MessageDrivenBeanDefinition;
&ejb2PoolMetrics;
&ejb2MessageDrivenBeanMetrics;
- </service>
+ </service>
- <service name="EJB2 Entity Bean"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Entity Bean">
+ <service name="EJB2 Entity Bean" class="Ejb2BeanComponent"
discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Entity Bean">
&ejb2EntityBeanDefinition;
&ejb2CreateRemoveMetrics;
&ejb2PoolMetrics;
&ejb2EntityBeanMetrics;
- </service>
- </service>
-
- <service name="Embedded EJB2 JAR"
- subCategory="Applications"
- class="EmbeddedManagedDeploymentComponent"
- discovery="EmbeddedManagedDeploymentDiscoveryComponent"
- description="an embedded EJB 2.x application">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this EJB JAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="jar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="an embedded EJB 2.x application" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans2x" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <metric property="custom.parent" displayName="Parent"
- dataType="trait" displayType="summary"
- description="the name of this EJB JAR's parent
deployment"/>
-
- <service name="EJB2 Stateless Session Bean (Embedded)"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Stateless Session Bean">
+ </service>
+ </service>
+
+ <service name="Embedded EJB2 JAR" subCategory="Applications"
class="EmbeddedManagedDeploymentComponent"
+ discovery="EmbeddedManagedDeploymentDiscoveryComponent"
description="an embedded EJB 2.x application">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this EJB JAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="jar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="an
embedded EJB 2.x application"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans2x" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <metric property="custom.parent" displayName="Parent"
dataType="trait" displayType="summary"
+ description="the name of this EJB JAR's parent deployment" />
+
+ <service name="EJB2 Stateless Session Bean (Embedded)"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Stateless Session Bean">
&ejb2StatelessSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb2CreateRemoveMetrics;
&ejb2PoolMetrics;
&ejb2SessionBeanMetrics;
&ejb2StatelessSessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB2 Stateful Session Bean (Embedded)"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Stateful Session Bean">
+ <service name="EJB2 Stateful Session Bean (Embedded)"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Stateful Session Bean">
&ejb2StatefulSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb2CreateRemoveMetrics;
&ejb2PoolMetrics;
&ejb2SessionBeanMetrics;
&ejb2StatefulSessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB2 Message-Driven Bean (Embedded)"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Message Driven Bean">
+ <service name="EJB2 Message-Driven Bean (Embedded)"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Message Driven Bean">
&ejb2MessageDrivenBeanDefinition;
&ejb2PoolMetrics;
&ejb2MessageDrivenBeanMetrics;
- </service>
+ </service>
- <service name="EJB2 Entity Bean (Embedded)"
- class="Ejb2BeanComponent"
- discovery="Ejb2BeanDiscoveryComponent"
- description="An EJB2 Entity Bean">
+ <service name="EJB2 Entity Bean (Embedded)"
class="Ejb2BeanComponent" discovery="Ejb2BeanDiscoveryComponent"
+ description="An EJB2 Entity Bean">
&ejb2EntityBeanDefinition;
&ejb2CreateRemoveMetrics;
&ejb2PoolMetrics;
&ejb2EntityBeanMetrics;
- </service>
- </service>
-
- <service name="EJB3 JAR"
- subCategory="Applications"
- class="StandaloneManagedDeploymentComponent"
- discovery="StandaloneManagedDeploymentDiscoveryComponent"
- description="a standalone EJB 3.x application"
- createDeletePolicy="both"
- creationDataType="content">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this EJB JAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="jar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="a standalone EJB 3.x application" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans3x" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <operation name="start"
- description="starts this EJB JAR"/>
-
- <operation name="stop"
- description="stops this EJB JAR"/>
-
- <operation name="restart"
- description="stops and then restarts this EJB JAR"/>
-
- <metric property="custom.path" displayName="Path"
- dataType="trait" displayType="summary"
- description="the absolute path of this EJB JAR file or
directory"/>
-
- <metric property="custom.exploded"
displayName="Exploded?"
- dataType="trait" displayType="summary"
- description="whether this EJB JAR is deployed exploded (i.e. as
a directory)"/>
-
- <content name="file" displayName="EJB JAR File"
category="deployable" isCreationType="true">
+ </service>
+ </service>
+
+ <service name="EJB3 JAR" subCategory="Applications"
class="StandaloneManagedDeploymentComponent"
discovery="StandaloneManagedDeploymentDiscoveryComponent"
+ description="a standalone EJB 3.x application"
createDeletePolicy="both" creationDataType="content">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this EJB JAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="jar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="a
standalone EJB 3.x application"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans3x" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <operation name="start" description="starts this EJB JAR"
/>
+
+ <operation name="stop" description="stops this EJB JAR"
/>
+
+ <operation name="restart" description="stops and then restarts
this EJB JAR" />
+
+ <metric property="custom.path" displayName="Path"
dataType="trait" displayType="summary"
+ description="the absolute path of this EJB JAR file or directory"
/>
+
+ <metric property="custom.exploded" displayName="Exploded?"
dataType="trait" displayType="summary"
+ description="whether this EJB JAR is deployed exploded (i.e. as a
directory)" />
+
+ <content name="file" displayName="EJB JAR File"
category="deployable" isCreationType="true">
&deploymentContentConfigProps;
- </content>
+ </content>
- <service name="EJB3 Stateless Session Bean"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Stateless Session Bean (SLSB)">
+ <service name="EJB3 Stateless Session Bean"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Stateless Session Bean (SLSB)">
&ejb3StatelessSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3SessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB3 Stateful Session Bean"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Stateful Session Bean (SFSB)">
+ <service name="EJB3 Stateful Session Bean"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Stateful Session Bean (SFSB)">
&ejb3StatefulSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3SessionBeanMetrics;
&ejb3StatefulSessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB3 Message-Driven Bean"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Message-Driven Bean (MDB)">
+ <service name="EJB3 Message-Driven Bean"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Message-Driven Bean (MDB)">
&ejb3MessageDrivenBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3MessageDrivenBeanMetrics;
- </service>
-
- </service>
-
- <service name="Embedded EJB3 JAR"
- subCategory="Applications"
- class="EmbeddedManagedDeploymentComponent"
- discovery="EmbeddedManagedDeploymentDiscoveryComponent"
- description="an embedded EJB 3.x application">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this EJB JAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="jar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="an embedded EJB 3.x application" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans3x" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <metric property="custom.parent" displayName="Parent"
- dataType="trait" displayType="summary"
- description="the name of this EJB JAR's parent
deployment"/>
-
- <service name="EJB3 Stateless Session Bean (Embedded)"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Stateless Session Bean (SLSB)">
+ </service>
+
+ </service>
+
+ <service name="Embedded EJB3 JAR" subCategory="Applications"
class="EmbeddedManagedDeploymentComponent"
+ discovery="EmbeddedManagedDeploymentDiscoveryComponent"
description="an embedded EJB 3.x application">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this EJB JAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="jar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="an
embedded EJB 3.x application"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEEnterpriseBeans3x" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <metric property="custom.parent" displayName="Parent"
dataType="trait" displayType="summary"
+ description="the name of this EJB JAR's parent deployment" />
+
+ <service name="EJB3 Stateless Session Bean (Embedded)"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Stateless Session Bean (SLSB)">
&ejb3StatelessSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3SessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB3 Stateful Session Bean (Embedded)"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Stateful Session Bean (SFSB)">
+ <service name="EJB3 Stateful Session Bean (Embedded)"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Stateful Session Bean (SFSB)">
&ejb3StatefulSessionBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3SessionBeanMetrics;
&ejb3StatefulSessionBeanMetrics;
- </service>
+ </service>
- <service name="EJB3 Message-Driven Bean (Embedded)"
- class="Ejb3BeanComponent"
- discovery="Ejb3BeanDiscoveryComponent"
- description="An EJB3 Message-Driven Bean (MDB)">
+ <service name="EJB3 Message-Driven Bean (Embedded)"
class="Ejb3BeanComponent" discovery="Ejb3BeanDiscoveryComponent"
+ description="An EJB3 Message-Driven Bean (MDB)">
&ejb3MessageDrivenBeanDefinition;
&ejbInvocationStatsOperation;
&ejb3CommonMetrics;
&ejb3MessageDrivenBeanMetrics;
- </service>
-
- </service>
-
- <service name="Resource Adapter Archive (RAR)"
- subCategory="Applications"
- class="StandaloneManagedDeploymentComponent"
- discovery="StandaloneManagedDeploymentDiscoveryComponent"
- description="a standalone JCA resource adapter archive (RAR)"
- createDeletePolicy="both"
- creationDataType="content">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this RAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="rar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="a standalone resource adapter" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEResourceAdaptor" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <operation name="start"
- description="starts this RAR"/>
-
- <operation name="stop"
- description="stops this RAR"/>
-
- <operation name="restart"
- description="stops and then restarts this RAR"/>
-
- <metric property="custom.path" displayName="Path"
- dataType="trait" displayType="summary"
- description="the absolute path of this RAR file or
directory"/>
-
- <metric property="custom.exploded"
displayName="Exploded?"
- dataType="trait" displayType="summary"
- description="whether this RAR is deployed exploded (i.e. as a
directory)"/>
-
- <content name="file" displayName="RAR File"
category="deployable" isCreationType="true">
+ </service>
+
+ </service>
+
+ <service name="Resource Adapter Archive (RAR)"
subCategory="Applications"
class="StandaloneManagedDeploymentComponent"
+ discovery="StandaloneManagedDeploymentDiscoveryComponent"
description="a standalone JCA resource adapter archive (RAR)"
+ createDeletePolicy="both" creationDataType="content">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this RAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="rar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="a
standalone resource adapter"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEResourceAdaptor" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <operation name="start" description="starts this RAR" />
+
+ <operation name="stop" description="stops this RAR" />
+
+ <operation name="restart" description="stops and then restarts
this RAR" />
+
+ <metric property="custom.path" displayName="Path"
dataType="trait" displayType="summary"
+ description="the absolute path of this RAR file or directory" />
+
+ <metric property="custom.exploded" displayName="Exploded?"
dataType="trait" displayType="summary"
+ description="whether this RAR is deployed exploded (i.e. as a
directory)" />
+
+ <content name="file" displayName="RAR File"
category="deployable" isCreationType="true">
&deploymentContentConfigProps;
- </content>
-
- </service>
-
- <service name="Embedded Resource Adapter Archive (RAR)"
- subCategory="Applications"
- class="EmbeddedManagedDeploymentComponent"
- discovery="EmbeddedManagedDeploymentDiscoveryComponent"
- description="an embedded JCA resource adapter archive
(RAR)">
-
- <plugin-configuration>
- <c:group name="general" displayName="General">
- <c:simple-property name="deploymentName"
description="the name of this RAR" readOnly="true"/>
- </c:group>
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- <c:simple-property name="extension"
default="rar" readOnly="true"/>
- <c:simple-property name="descriptionTemplate"
default="an embedded resource adapter" readOnly="true"/>
- <c:simple-property name="deploymentTypeName"
default="JavaEEResourceAdaptor" readOnly="true">
- <c:description>
- The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
- corresponding to this deployment's type.
- </c:description>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <metric property="custom.parent" displayName="Parent"
- dataType="trait" displayType="summary"
- description="the name of this RAR's parent
deployment"/>
-
- </service>
-
- <service name="Script"
-
discovery="org.rhq.plugins.jbossas5.script.ScriptDiscoveryComponent"
- class="org.rhq.plugins.jbossas5.script.ScriptComponent"
- supportsManualAdd="true"
- createDeletePolicy="both"
- creationDataType="content"
- subCategory="Resources"
- description="provides the ability to execute a script that performs
some task related to its parent JBossAS server">
-
- <plugin-configuration>
- <c:simple-property name="path" description="the absolute
path to the script file"/>
- <c:simple-property name="environmentVariables"
type="longString" required="false"
- description="the environment variables that will be
passed to the script; each variable must
+ </content>
+
+ </service>
+
+ <service name="Embedded Resource Adapter Archive (RAR)"
subCategory="Applications" class="EmbeddedManagedDeploymentComponent"
+ discovery="EmbeddedManagedDeploymentDiscoveryComponent"
description="an embedded JCA resource adapter archive (RAR)">
+
+ <plugin-configuration>
+ <c:group name="general" displayName="General">
+ <c:simple-property name="deploymentName" description="the
name of this RAR" readOnly="true" />
+ </c:group>
+ <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
+ <c:simple-property name="extension" default="rar"
readOnly="true" />
+ <c:simple-property name="descriptionTemplate" default="an
embedded resource adapter"
+ readOnly="true" />
+ <c:simple-property name="deploymentTypeName"
default="JavaEEResourceAdaptor" readOnly="true">
+ <c:description>
+ The name of the item from the
org.jboss.deployers.spi.management.KnownDeploymentTypes enum
+ corresponding to this deployment's type.
+ </c:description>
+ </c:simple-property>
+ </c:group>
+ </plugin-configuration>
+
+ <metric property="custom.parent" displayName="Parent"
dataType="trait" displayType="summary"
+ description="the name of this RAR's parent deployment" />
+
+ </service>
+
+ <service name="Script"
discovery="org.rhq.plugins.jbossas5.script.ScriptDiscoveryComponent"
class="org.rhq.plugins.jbossas5.script.ScriptComponent"
+ supportsManualAdd="true" createDeletePolicy="both"
creationDataType="content" subCategory="Resources"
+ description="provides the ability to execute a script that performs some task
related to its parent JBossAS server">
+
+ <plugin-configuration>
+ <c:simple-property name="path" description="the absolute path
to the script file" />
+ <c:simple-property name="environmentVariables"
type="longString" required="false"
+ description="the environment variables that will be passed to the script;
each variable must
be on a new line and have the syntax
name=value; the variable's value can contain properties
with the syntax %propertyName%; the script
plugin will interpolate these with
the current values of the corresponding
properties from the
- script's parent JBossAS server's
connection properties"/>
- </plugin-configuration>
+ script's parent JBossAS server's
connection properties" />
+ </plugin-configuration>
- <operation name="execute" displayName="Execute Script"
- description="execute the script; NOTE: environment variables to
be
+ <operation name="execute" displayName="Execute Script"
+ description="execute the script; NOTE: environment variables to be
passed to the script can be configured via this Script
service's connection properties (under its Inventory
tab)">
- <parameters>
- <c:simple-property name="commandLineArguments"
type="longString" required="false"
- description="the command-line arguments (if any)
to pass to the script; each
+ <parameters>
+ <c:simple-property name="commandLineArguments"
type="longString" required="false"
+ description="the command-line arguments (if any) to pass to the script;
each
command-line argument must be on a new
line;
the arguments can contain properties
with the syntax %propertyName%; the script
plugin will interpolate these with
the current values of the corresponding
properties from the
- script's parent JBossAS server's
connection properties"/>
- </parameters>
- <results>
- <c:simple-property name="exitCode" type="integer"
description="the script's exit code (0 indicates success, any other value
indicates failure)"/>
- <c:simple-property name="output" type="longString"
description="the script's output (stdout and stderr interleaved)"/>
- </results>
- </operation>
-
- <content name="script" displayName="Executable Script"
category="executableScript" description="This is the script file to be
uploaded to the server's bin directory." isCreationType="true">
- <configuration>
- <c:simple-property name="targetFileName"
displayName="Target File Name" required="false">
- <c:description>
- The file name that should be used to store the script under the
server's bin directory. If left unset, the name of the uploaded file will be used.
- Only files with "sh" and "pl" extensions on
*NIX platforms and with "cmd" and "bat" extensions on WINDOWS
platforms are allowed.
- </c:description>
- </c:simple-property>
- </configuration>
- </content>
+ script's parent JBossAS server's
connection properties" />
+ </parameters>
+ <results>
+ <c:simple-property name="exitCode" type="integer"
+ description="the script's exit code (0 indicates success, any other
value indicates failure)" />
+ <c:simple-property name="output" type="longString"
description="the script's output (stdout and stderr interleaved)" />
+ </results>
+ </operation>
- </service>
+ <content name="script" displayName="Executable Script"
category="executableScript"
+ description="This is the script file to be uploaded to the server's bin
directory." isCreationType="true">
+ <configuration>
+ <c:simple-property name="targetFileName" displayName="Target
File Name" required="false">
+ <c:description>
+ The file name that should be used to store the script under the
server's bin directory. If left unset, the name of
+ the uploaded file will be used.
+ Only files with "sh" and "pl" extensions on *NIX
platforms and with "cmd" and "bat" extensions on WINDOWS platforms
+ are allowed.
+ </c:description>
+ </c:simple-property>
+ </configuration>
+ </content>
- <service name="Service Binding Manager"
-
class="org.rhq.plugins.jbossas5.serviceBinding.ManagerComponent"
-
discovery="org.rhq.plugins.jbossas5.serviceBinding.ManagerDiscoveryComponent"
- description="The Service Binding Manager manages the ports of the
deployed services"
- singleton="true">
-
- <plugin-configuration>
- <c:simple-property name="componentType"
default="MCBean" readOnly="true"/>
- <c:simple-property name="componentSubtype"
default="ServiceBindingManager" readOnly="true"/>
- <c:simple-property name="componentName"
readOnly="true"/>
- </plugin-configuration>
-
- <metric property="activeBindingSetName"
dataType="trait" displayName="Active Binding Set"
- displayType="summary" description="The active binding
set used to obtain port bindings from." />
-
- <resource-configuration>
- <c:simple-property name="activeBindingSetName"
- activationPolicy="restart">
- <c:description><![CDATA[
+ </service>
+
+ <service name="Service Binding Manager"
class="org.rhq.plugins.jbossas5.serviceBinding.ManagerComponent"
+
discovery="org.rhq.plugins.jbossas5.serviceBinding.ManagerDiscoveryComponent"
description="The Service Binding Manager manages the ports of the deployed
services"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="componentType" default="MCBean"
readOnly="true" />
+ <c:simple-property name="componentSubtype"
default="ServiceBindingManager" readOnly="true" />
+ <c:simple-property name="componentName" readOnly="true"
/>
+ </plugin-configuration>
+
+ <metric property="activeBindingSetName" dataType="trait"
displayName="Active Binding Set" displayType="summary"
+ description="The active binding set used to obtain port bindings from."
/>
+
+ <resource-configuration>
+ <c:simple-property name="activeBindingSetName"
activationPolicy="restart">
+ <c:description><![CDATA[
The name of the binding set the Service Binding Manager should use when resolving
bindings.
Note to JBoss ON or Jopr users (does not apply to JBoss AS admin console):
CHANGING THIS PROPERTY IS POTENTIALLY DANGEROUS because if there are any port conflicts
@@ -3002,82 +2817,107 @@ of "jboss:service=Naming:Port" binding of the active
binding set.
I.e. if the "jboss:service=Naming:Port" binding of the active binding set has
the port set to 4099 and hostname to 127.0.0.1,
you have to set the "Naming Provider Url" to jnp://127.0.0.1:4099.
]]></c:description>
- </c:simple-property>
- <c:list-property name="standardBindings"
description="The standard port bindings inherited by the binding sets.">
- <c:map-property name="binding">
- <c:simple-property name="serviceName"
description="The name of the service to which this binding applies."/>
- <c:simple-property name="bindingName"
required="false" description="A qualifier identifying which particular
binding within the service this is."/>
- <c:simple-property name="port"
type="integer" description="The port to use for the binding.">
- <c:constraint>
- <c:integer-constraint minimum="0"/>
- <c:integer-constraint maximum="65535"/>
- </c:constraint>
- </c:simple-property>
- <c:simple-property name="hostName"
required="false" description="The host name or string notation IP address
to use for the binding."/>
- <c:simple-property name="description"
required="false" description="Description of the binding."/>
- <c:simple-property name="fullyQualifiedName"
required="false" readOnly="true" description="The fully qualified
binding name. This is an informational field only consisting of the service name and the
binding name."/>
- <c:simple-property name="fixedHostName"
type="boolean" description="Whether the host name should remain fixed in
all binding sets."/>
- <c:simple-property name="fixedPort"
type="boolean" description="Whether the port should remain fixed in all
binding sets."/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
-
- <service name="Service Binding Set"
-
class="org.rhq.plugins.jbossas5.serviceBinding.SetComponent"
-
discovery="org.rhq.plugins.jbossas5.serviceBinding.SetDiscoveryComponent"
- description="The Service Binding Set defines all bindings of a
profile. It inherits the standard bindings from the Service Binding Manager and defines a
port offset and overridden and additional bindings."
createDeletePolicy="both">
-
- <operation name="displayBindings" displayName="Display
Bindings" description="Displays the full set of bindings as they would look if
this bindings set was active.">
- <results>
- <c:list-property name="resultingBindings"
readOnly="true" required="false" displayName="Resulting
Bindings"
- description="In this list you can review
the resulting bindings of this binding set. This list includes the override bindings
defined for this binding set and the standard bindings as they would look if this binding
set was active (i.e. the port offset and default host name applied where
appropriate).">
- <c:map-property name="binding"
readOnly="true">
- <c:simple-property readOnly="true"
name="serviceName" displayName="Service Name" description="The
name of the service to which this binding applies."/>
- <c:simple-property readOnly="true"
name="bindingName" required="false" displayName="Binding
Name" description="A qualifier identifying which particular binding within the
service this is."/>
- <c:simple-property readOnly="true"
name="port" type="integer" displayName="Port"
description="The port to use for the binding."/>
- <c:simple-property readOnly="true"
name="hostName" required="false" displayName="Host Name"
description="The host name or string notation IP address to use for the
binding."/>
- <c:simple-property readOnly="true"
name="description" required="false"
displayName="Description" description="Description of the
binding"/>
- <c:simple-property readOnly="true"
name="fullyQualifiedName" required="false" displayName="Fully
Qualified Name" description="The fully qualified binding name. This is an
informational field only consisting of the service name and the binding name."/>
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <metric property="name" displayName="Name"
dataType="trait" displayType="summary" description="The name of
this binding set."/>
- <metric property="defaultHostName"
dataType="trait" displayName="Default Host Name"
displayType="summary" description="The default host name of this binding
set." />
- <metric property="portOffset" dataType="trait"
displayName="Port Offset" displayType="summary" description="The
port offset of this binding set."/>
-
- <resource-configuration>
- <c:simple-property name="name" readOnly="true"
description="The name of this binding set."/>
- <c:simple-property name="defaultHostName"
description='The host name that should be used for all bindings whose configuration
does not specify "fixed host name".'/>
- <c:simple-property name="portOffset"
type="integer" description="A value to add to the port configuration for a
standard binding to derive the port to use in this binding set. This doesn't apply to
standard bindings defined as 'fixed port'.">
- <c:constraint>
- <c:integer-constraint minimum="0"/>
- <c:integer-constraint maximum="65535"/>
- </c:constraint>
- </c:simple-property>
- <c:list-property name="overrideBindings"
description='The binding configurations that apply only to this binding set, either
non-standard bindings or ones that override standard binding configurations.
+ </c:simple-property>
+ <c:list-property name="standardBindings" description="The
standard port bindings inherited by the binding sets.">
+ <c:map-property name="binding">
+ <c:simple-property name="serviceName" description="The name
of the service to which this binding applies." />
+ <c:simple-property name="bindingName"
required="false"
+ description="A qualifier identifying which particular binding within
the service this is." />
+ <c:simple-property name="port" type="integer"
description="The port to use for the binding.">
+ <c:constraint>
+ <c:integer-constraint minimum="0" />
+ <c:integer-constraint maximum="65535" />
+ </c:constraint>
+ </c:simple-property>
+ <c:simple-property name="hostName" required="false"
+ description="The host name or string notation IP address to use for
the binding." />
+ <c:simple-property name="description" required="false"
description="Description of the binding." />
+ <c:simple-property name="fullyQualifiedName"
required="false" readOnly="true"
+ description="The fully qualified binding name. This is an
informational field only consisting of the service name and the binding name." />
+ <c:simple-property name="fixedHostName"
type="boolean"
+ description="Whether the host name should remain fixed in all binding
sets." />
+ <c:simple-property name="fixedPort" type="boolean"
+ description="Whether the port should remain fixed in all binding
sets." />
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+
+ <service name="Service Binding Set"
class="org.rhq.plugins.jbossas5.serviceBinding.SetComponent"
+
discovery="org.rhq.plugins.jbossas5.serviceBinding.SetDiscoveryComponent"
+ description="The Service Binding Set defines all bindings of a profile. It
inherits the standard bindings from the Service Binding Manager and defines a port offset
and overridden and additional bindings."
+ createDeletePolicy="both">
+
+ <operation name="displayBindings" displayName="Display
Bindings"
+ description="Displays the full set of bindings as they would look if this
bindings set was active.">
+ <results>
+ <c:list-property name="resultingBindings"
readOnly="true" required="false" displayName="Resulting
Bindings"
+ description="In this list you can review the resulting bindings of
this binding set. This list includes the override bindings defined for this binding set
and the standard bindings as they would look if this binding set was active (i.e. the port
offset and default host name applied where appropriate).">
+ <c:map-property name="binding" readOnly="true">
+ <c:simple-property readOnly="true"
name="serviceName" displayName="Service Name"
+ description="The name of the service to which this binding
applies." />
+ <c:simple-property readOnly="true"
name="bindingName" required="false" displayName="Binding
Name"
+ description="A qualifier identifying which particular binding
within the service this is." />
+ <c:simple-property readOnly="true" name="port"
type="integer" displayName="Port"
+ description="The port to use for the binding." />
+ <c:simple-property readOnly="true" name="hostName"
required="false" displayName="Host Name"
+ description="The host name or string notation IP address to use
for the binding." />
+ <c:simple-property readOnly="true"
name="description" required="false"
displayName="Description"
+ description="Description of the binding" />
+ <c:simple-property readOnly="true"
name="fullyQualifiedName" required="false"
+ displayName="Fully Qualified Name"
+ description="The fully qualified binding name. This is an
informational field only consisting of the service name and the binding name." />
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <metric property="name" displayName="Name"
dataType="trait" displayType="summary" description="The name of
this binding set." />
+ <metric property="defaultHostName" dataType="trait"
displayName="Default Host Name" displayType="summary"
+ description="The default host name of this binding set." />
+ <metric property="portOffset" dataType="trait"
displayName="Port Offset" displayType="summary"
+ description="The port offset of this binding set." />
+
+ <resource-configuration>
+ <c:simple-property name="name" readOnly="true"
description="The name of this binding set." />
+ <c:simple-property name="defaultHostName"
+ description='The host name that should be used for all bindings whose
configuration does not specify "fixed host name".' />
+ <c:simple-property name="portOffset" type="integer"
+ description="A value to add to the port configuration for a standard
binding to derive the port to use in this binding set. This doesn't apply to standard
bindings defined as 'fixed port'.">
+ <c:constraint>
+ <c:integer-constraint minimum="0" />
+ <c:integer-constraint maximum="65535" />
+ </c:constraint>
+ </c:simple-property>
+ <c:list-property name="overrideBindings"
+ description='The binding configurations that apply only to this binding
set, either non-standard bindings or ones that override standard binding configurations.
The binding set inherits the standard bindings from the Service
Binding Manager, applies the port offset to them (unless the standard binding is defined
as "fixed port"), and appends the override
bindings. These can either redefine a standard binding or define
a brand new binding. The standard bindings and the override bindings then define the
full set of the bindings that are defined by the binding
set.'>
- <c:map-property name="binding">
- <c:simple-property name="serviceName"
displayName="Service Name" description="The name of the service to which
this binding applies."/>
- <c:simple-property name="bindingName"
required="false" displayName="Binding Name" description="A
qualifier identifying which particular binding within the service this is."/>
- <c:simple-property name="port" type="integer"
displayName="Port" description="The port to use for the binding.">
- <c:constraint>
- <c:integer-constraint
minimum="0"/>
- <c:integer-constraint
maximum="65535"/>
- </c:constraint>
- </c:simple-property>
- <c:simple-property name="hostName"
required="false" displayName="Host Name" description="The host
name or string notation IP address to use for the binding."/>
- <c:simple-property name="description"
required="false" displayName="Description"
description="Description of the binding"/>
- <c:simple-property name="fullyQualifiedName"
required="false" readOnly="true" displayName="Fully Qualified
Name" description="The fully qualified binding name. This is an informational
field only consisting of the service name and the binding name."/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
- </service>
+ <c:map-property name="binding">
+ <c:simple-property name="serviceName"
displayName="Service Name"
+ description="The name of the service to which this binding
applies." />
+ <c:simple-property name="bindingName"
required="false" displayName="Binding Name"
+ description="A qualifier identifying which particular binding within
the service this is." />
+ <c:simple-property name="port" type="integer"
displayName="Port"
+ description="The port to use for the binding.">
+ <c:constraint>
+ <c:integer-constraint minimum="0" />
+ <c:integer-constraint maximum="65535" />
+ </c:constraint>
+ </c:simple-property>
+ <c:simple-property name="hostName" required="false"
displayName="Host Name"
+ description="The host name or string notation IP address to use for
the binding." />
+ <c:simple-property name="description"
required="false" displayName="Description"
+ description="Description of the binding" />
+ <c:simple-property name="fullyQualifiedName"
required="false" readOnly="true"
+ displayName="Fully Qualified Name"
+ description="The fully qualified binding name. This is an
informational field only consisting of the service name and the binding name." />
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
</service>
- </server>
+ </server>
</plugin>
commit 8eb89d55d56a7e97c8d05a237d4422b964fce3f2
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed Jun 6 10:18:57 2012 -0400
various minor improvements
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
index 7b7b1b4..1639239 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -7,8 +7,6 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import sun.net.InetAddressCachePolicy;
-
import com.j2bugzilla.base.Bug;
import com.j2bugzilla.base.BugzillaConnector;
import com.j2bugzilla.base.BugzillaException;
@@ -21,6 +19,7 @@ import org.pircbotx.hooks.Listener;
import org.pircbotx.hooks.ListenerAdapter;
import org.pircbotx.hooks.events.DisconnectEvent;
import org.pircbotx.hooks.events.MessageEvent;
+import org.pircbotx.hooks.events.PrivateMessageEvent;
/**
* An IRC bot for doing helpful stuff on the Freenode #rhq channel.
@@ -46,13 +45,24 @@ public class RhqIrcBot extends ListenerAdapter {
JON_DEVS.add("stefan_n");
}
+ private String server;
+ private String channel;
private BugzillaConnector bzConnector = new BugzillaConnector();
private Map<Integer, Long> bugLogTimestamps = new HashMap<Integer,
Long>();
+ public RhqIrcBot(String server, String channel) {
+ this.server = server;
+ this.channel = channel;
+ }
+
@Override
public void onMessage(MessageEvent event) throws Exception {
- String message = event.getMessage();
+ PircBotX bot = event.getBot();
+ if (!bot.getNick().equals(bot.getName())) {
+ bot.changeNick(bot.getName());
+ }
+ String message = event.getMessage();
Matcher bugMatcher = BUG_PATTERN.matcher(message);
while (bugMatcher.find()) {
int bugId = Integer.valueOf(bugMatcher.group(2));
@@ -68,7 +78,7 @@ public class RhqIrcBot extends ListenerAdapter {
//e1.printStackTrace();
Throwable cause = e1.getCause();
String details = (cause instanceof XmlRpcException) ?
cause.getMessage() : e1.getMessage();
- event.getBot().sendMessage(event.getChannel(), "Failed to access
BZ " + bugId + ": " + details);
+ bot.sendMessage(event.getChannel(), "Failed to access BZ "
+ bugId + ": " + details);
continue;
}
}
@@ -82,18 +92,18 @@ public class RhqIrcBot extends ListenerAdapter {
}
Long timestamp = bugLogTimestamps.get(bugId);
if ((timestamp == null) || ((System.currentTimeMillis() - timestamp) >
(5 * 60 * 1000L))) {
- event.getBot().sendMessage(event.getChannel(), "BZ " +
bugId + " [product=" + product
+ bot.sendMessage(event.getChannel(), "BZ " + bugId + "
[product=" + product
+ ", priority=" + bug.getPriority() + ",
status=" + bug.getStatus() + "] "
+ bug.getSummary() + " [
https://bugzilla.redhat.com/" + bugId + " ]");
}
bugLogTimestamps.put(bugId, System.currentTimeMillis());
} else {
- event.getBot().sendMessage(event.getChannel(), "BZ " + bugId +
" does not exist.");
+ bot.sendMessage(event.getChannel(), "BZ " + bugId + " does
not exist.");
}
}
if (message.matches(".*\\b(jon-team|jboss-on-team)\\b.*")) {
- Set<User> users = event.getBot().getUsers(event.getChannel());
+ Set<User> users = bot.getUsers(event.getChannel());
StringBuilder presentJonDevs = new StringBuilder();
for (User user : users) {
String nick = user.getNick();
@@ -101,32 +111,40 @@ public class RhqIrcBot extends ListenerAdapter {
presentJonDevs.append(nick).append(' ');
}
}
- event.getBot().sendMessage(event.getChannel(), presentJonDevs + ": see
message from "
+ bot.sendMessage(event.getChannel(), presentJonDevs + ": see message from
"
+ event.getUser().getNick() + " above");
}
}
@Override
+ public void onPrivateMessage(PrivateMessageEvent privateMessageEvent) throws
Exception {
+ PircBotX bot = privateMessageEvent.getBot();
+ bot.sendMessage(privateMessageEvent.getUser(), "Hi, I am " +
bot.getFinger() + ".");
+ // TODO: Implement a HELP command.
+ }
+
+ @Override
public void onDisconnect(DisconnectEvent disconnectEvent) throws Exception {
boolean connected = false;
while (!connected) {
Thread.sleep(60 * 1000L); // 1 minute
try {
- PircBotX oldBot = disconnectEvent.getBot();
- PircBotX newBot = createBot();
- newBot.connect(oldBot.getServer());
- for (String channel : oldBot.getChannelsNames()) {
- newBot.joinChannel(channel);
- }
- Set<Listener> oldListeners = new
HashSet<Listener>(oldBot.getListenerManager().getListeners());
- for (Listener oldListener : oldListeners) {
- oldBot.getListenerManager().removeListener(oldListener);
- }
+ PircBotX newBot = createBot(this);
+ newBot.connect(this.server);
+ newBot.joinChannel(this.channel);
+
connected = true;
} catch (Exception e) {
System.err.println("Failed to reconnect to " +
disconnectEvent.getBot().getServer() + " IRC server: " + e);
}
}
+
+ // Try to clean up the old bot, so it can release any memory, sockets, etc.
it's using.
+ PircBotX oldBot = disconnectEvent.getBot();
+ Set<Listener> oldListeners = new
HashSet<Listener>(oldBot.getListenerManager().getListeners());
+ for (Listener oldListener : oldListeners) {
+ oldBot.getListenerManager().removeListener(oldListener);
+ }
}
public static void main(String[] args) throws Exception {
@@ -141,16 +159,14 @@ public class RhqIrcBot extends ListenerAdapter {
channel = '#' + channel;
}
- PircBotX bot = createBot();
- System.setProperty("networkaddress.cache.ttl",
String.valueOf(InetAddressCachePolicy.NEVER));
- System.setProperty("networkaddress.cache.negative.ttl",
String.valueOf(InetAddressCachePolicy.NEVER));
+ RhqIrcBot rhqBot = new RhqIrcBot(server, channel);
- // TODO: Try other Freenode IRC servers if this one is down.
+ PircBotX bot = createBot(rhqBot);
bot.connect(server);
bot.joinChannel(channel);
}
- private static PircBotX createBot() {
+ private static PircBotX createBot(RhqIrcBot rhqBot) {
PircBotX bot = new PircBotX();
bot.setName("rhq-bot");
@@ -158,7 +174,9 @@ public class RhqIrcBot extends ListenerAdapter {
bot.setFinger("RHQ IRC bot (source code in RHQ git under
etc/rhq-ircBot/)");
bot.setVerbose(true);
- bot.getListenerManager().addListener(new RhqIrcBot());
+ bot.setAutoNickChange(true);
+
+ bot.getListenerManager().addListener(rhqBot);
bot.setSocketTimeout(1 * 60 * 1000); // 1 minute
return bot;
}
commit 3b341c9d0571e13d851ee48e484cab22d00b3f47
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Wed Jun 6 12:51:14 2012 -0700
Fix SmartGWT maven archetype to have proper doctype and IE8 fallback as our app.
Support cases produced will behave consistently with our app.
diff --git
a/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/src/main/resources/public/Application.html
b/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/src/main/resources/public/Application.html
index cdf37e7..c24988c 100644
---
a/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/src/main/resources/public/Application.html
+++
b/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/src/main/resources/public/Application.html
@@ -1,16 +1,15 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- The HTML 4.01 Transitional DOCTYPE declaration-->
-<!-- above set at the top of the file will set -->
-<!-- the browser's rendering engine into -->
-<!-- "Quirks Mode". Replacing this declaration -->
-<!-- with a "Standards Mode" doctype is supported, -->
-<!-- but may lead to some differences in layout. -->
-
<html>
<head>
+ <!-- this forces us to emulate IE8 "quirks" mode regardless of IE browser
version. It:
+ 1) Follows the SmartGWT recommendation of not declaring a DOCTYPE and instead
using these meta elements.
+
http://forums.smartclient.com/showthread.php?t=15973
+ 2) solves initial app load issues that we experienced on some XP and
Vista/Windows7 flavors.
+ -->
+ <meta http-equiv="X-UA-Compatible" content="IE=8"/>
+
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<!-- -->
<!-- Any title is fine -->
commit 5e88634033d5dc2a0563d09e7bb0e04843a2e87a
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Jun 6 14:29:25 2012 -0400
[BZ 824129,829309] Fix quote parsing
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 2d0e41a..99595ab 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -410,26 +410,46 @@ public class ClientMain {
List<String> args = new ArrayList<String>();
boolean keep_going = true;
+ boolean isScriptFileCommand = false;
+
+ // we don't want to parse numbers and we want ' to be a normal word
+ // character
strtok.ordinaryChars('0', '9');
strtok.ordinaryChar('.');
strtok.ordinaryChar('-');
- strtok.quoteChar('\'');
- strtok.quoteChar('"');
- strtok.wordChars(33, 33);
- strtok.wordChars(35, 38);
- strtok.wordChars(40, 127);
+ strtok.ordinaryChar('\'');
+ strtok.wordChars(33, 127);
// parse the command line
while (keep_going) {
int nextToken;
try {
+ // if we are executing a script file and have reached the arguments, we
+ // want to reset the tokenizer's syntax so that handle single and
double
+ // quotes correctly.
+ if (isScriptFileCommand && args.size() > 2 &&
args.get(args.size() - 2).equals("-f")) {
+ strtok.resetSyntax();
+ strtok.ordinaryChars('0', '9');
+ strtok.ordinaryChar('.');
+ strtok.ordinaryChar('-');
+ strtok.quoteChar('\'');
+ strtok.quoteChar('"');
+ strtok.wordChars(33, 33);
+ strtok.wordChars(35, 38);
+ strtok.wordChars(40, 127);
+ }
+
nextToken = strtok.nextToken();
+
} catch (IOException e) {
nextToken = StreamTokenizer.TT_EOF;
}
if (nextToken == java.io.StreamTokenizer.TT_WORD) {
+ if (args.size() > 0 && strtok.sval.equals("-f")) {
+ isScriptFileCommand = true;
+ }
args.add(strtok.sval);
} else if (nextToken == '\"' || nextToken == '\'')
{
args.add(strtok.sval);
@@ -437,7 +457,6 @@ public class ClientMain {
keep_going = false;
}
}
-
return args.toArray(new String[args.size()]);
}
commit 54e5a2327ed744e220aadceb9868e8a84e95b322
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Jun 6 13:56:24 2012 -0400
[Bug 829433 - When MeasurementCollectorRunner logs metric collections is falling
behind it should include metric details]
Add more information in debug mode to help determine what may be holding
up the agent metric collections.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementCollectorRunner.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementCollectorRunner.java
index b952bd5..3714ad9 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementCollectorRunner.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementCollectorRunner.java
@@ -1,34 +1,38 @@
- /*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
package org.rhq.core.pc.measurement;
+import java.util.ArrayDeque;
+import java.util.Date;
import java.util.Set;
import java.util.concurrent.Callable;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
+import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.inventory.InventoryManager;
@@ -38,17 +42,20 @@ import org.rhq.core.pc.util.FacetLockType;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.util.exception.ThrowableUtil;
- /**
- * Executes the collection of measurements. Every call results in one new batch of
measurements collected. Each batch is
- * limited to a single resource and the measurements that are due to be collected at that
time.
- *
- * @author Greg Hinkle
- */
+/**
+* Executes the collection of measurements. Every call results in one new batch of
measurements collected. Each batch is
+* limited to a single resource and the measurements that are due to be collected at that
time.
+*
+* @author Greg Hinkle
+*/
public class MeasurementCollectorRunner implements Callable<MeasurementReport>,
Runnable {
private Log log = LogFactory.getLog(MeasurementCollectorRunner.class);
private MeasurementManager measurementManager;
+ // this is only kept when in debug mode to help figure out which metrics are slowing
things down.
+ private ScheduleHistory scheduleHistory = new ScheduleHistory();
+
public MeasurementCollectorRunner(MeasurementManager measurementManager) {
this.measurementManager = measurementManager;
}
@@ -66,27 +73,42 @@ public class MeasurementCollectorRunner implements
Callable<MeasurementReport>,
Set<ScheduledMeasurementInfo> requests =
this.measurementManager.getNextScheduledSet();
if (requests != null) {
- if ((System.currentTimeMillis() - 30000L) >
requests.iterator().next().getNextCollection()) {
+ ScheduledMeasurementInfo next = requests.iterator().next();
+
+ if ((System.currentTimeMillis() - 30000L) > next.getNextCollection())
{
this.measurementManager.incrementLateCollections(requests.size());
- log.debug("Measurement collection is falling behind... Missed
requested time by ["
- + (System.currentTimeMillis() -
requests.iterator().next().getNextCollection()) + "ms]");
+ if (log.isDebugEnabled()) {
+ log.debug("Measurement collection is falling behind...
Missed requested time by ["
+ + (System.currentTimeMillis() -
requests.iterator().next().getNextCollection()) + "ms]");
+
+ if (!scheduleHistory.isEmpty()) {
+ log.debug("The most recent measurement requests prior to
this detected delay: "
+ + scheduleHistory);
+ }
+ }
this.measurementManager.reschedule(requests);
return report;
}
- Integer resourceId = requests.iterator().next().getResourceId();
+ Integer resourceId = next.getResourceId();
ResourceContainer container = im.getResourceContainer(resourceId);
if (container.getResourceComponentState() !=
ResourceContainer.ResourceComponentState.STARTED
|| container.getAvailability() == null
|| container.getAvailability().getAvailabilityType() ==
AvailabilityType.DOWN) {
// Don't collect metrics for resources that are down
if (log.isDebugEnabled()) {
- log.debug("Measurements not collected for inactive resource
component: " + container.getResource());
+ log.debug("Measurements not collected for inactive resource
component: "
+ + container.getResource());
}
} else {
- MeasurementFacet measurementComponent =
ComponentUtil.getComponent(resourceId, MeasurementFacet.class,
- FacetLockType.READ, MeasurementManager.FACET_METHOD_TIMEOUT,
true, true);
+ MeasurementFacet measurementComponent = ComponentUtil
+ .getComponent(resourceId, MeasurementFacet.class,
FacetLockType.READ,
+ MeasurementManager.FACET_METHOD_TIMEOUT, true, true);
+
+ if (log.isDebugEnabled()) {
+ scheduleHistory.addRequests(requests);
+ }
getValues(measurementComponent, report, requests,
container.getResource());
}
@@ -105,23 +127,27 @@ public class MeasurementCollectorRunner implements
Callable<MeasurementReport>,
}
private void getValues(MeasurementFacet measurementComponent, MeasurementReport
report,
- Set<? extends MeasurementScheduleRequest> requests,
Resource resource) {
+ Set<? extends MeasurementScheduleRequest> requests, Resource resource) {
try {
long start = System.currentTimeMillis();
measurementComponent.getValues(report,
(Set<MeasurementScheduleRequest>) requests);
long duration = (System.currentTimeMillis() - start);
- if (duration > 2000) {
- log.info("[PERF] Collection of measurements for [" + resource +
"] (component=[" + measurementComponent
- + "]) took [" + duration + "]ms");
+ if (duration > 2000L) {
+ String message = "[PERF] Collection of measurements for [" +
resource + "] (component=["
+ + measurementComponent + "]) took [" + duration +
"]ms";
+ if (log.isDebugEnabled()) {
+ message += " for requests: " + requests;
+ }
+ log.info(message);
}
} catch (Throwable t) {
this.measurementManager.incrementFailedCollections(requests.size());
if (log.isDebugEnabled()) {
log.warn("Failure to collect measurement data for " + resource
+ ", requests=" + requests
- + ", report.size()=" + report.getDataCount(), t);
+ + ", report.size()=" + report.getDataCount(), t);
} else {
log.warn("Failure to collect measurement data for " + resource
+ " - cause: "
- + ThrowableUtil.getAllMessages(t));
+ + ThrowableUtil.getAllMessages(t));
}
}
}
@@ -133,4 +159,66 @@ public class MeasurementCollectorRunner implements
Callable<MeasurementReport>,
log.error("Could not get measurement report.", e);
}
}
+
+ private static class ScheduleHistory extends ArrayDeque<String> {
+ private static final long serialVersionUID = 1L;
+ private static final int HISTORY_SIZE;
+ static {
+ int historySize;
+ try {
+ historySize = Integer.parseInt(System.getProperty(
+ "rhq.agent.plugins.measurement-schedule.history.size",
"500"));
+ } catch (Throwable t) {
+ historySize = 500;
+ }
+ HISTORY_SIZE = historySize;
+ }
+
+ private void makeSpace() {
+ if (size() == HISTORY_SIZE) {
+ removeLast();
+ }
+ }
+
+ public void addRequests(Set<ScheduledMeasurementInfo> requests) {
+ String now = new Date().toString() + " ";
+
+ for (ScheduledMeasurementInfo request : requests) {
+ push(now + request.toString());
+ }
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ while (!isEmpty()) {
+ sb.append("\n ");
+ sb.append(pop());
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public void push(String e) {
+ makeSpace();
+ super.push(e);
+ }
+
+ @Override
+ public boolean add(String e) {
+ makeSpace();
+ return super.add(e);
+ }
+
+ @Override
+ public void addFirst(String e) {
+ makeSpace();
+ super.addFirst(e);
+ }
+
+ @Override
+ public void addLast(String e) {
+ makeSpace();
+ super.addLast(e);
+ }
+ }
}
\ No newline at end of file
commit 29599bc7e1d85a26084e39d0a6c95b13fcffbd26
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 6 16:15:56 2012 +0200
BZ 742298 - Remove deprecated attribute "default" from c:option
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
index 129ff8f..4fa4558e 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
@@ -295,12 +295,6 @@ public class ConfigurationMetadataParser {
name = option.getValue();
}
- if (option.isDefault()) {
- log.warn("!!\nFor simple-property ["
- + parentProperty.getName()
- + "], attribute 'default' on c:option is useless and
deprecated.\n Please use the 'default' attribute on the c:simple-property.\n
The deprecated attribute will be removed in the future.\n!!");
- }
-
PropertyDefinitionEnumeration enumeration = new
PropertyDefinitionEnumeration(name, option.getValue());
parentProperty.addEnumeratedValues(enumeration);
}
diff --git a/modules/core/client-api/src/main/resources/rhq-configuration.xsd
b/modules/core/client-api/src/main/resources/rhq-configuration.xsd
index e4e9789..4b706d8 100644
--- a/modules/core/client-api/src/main/resources/rhq-configuration.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-configuration.xsd
@@ -505,17 +505,6 @@
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:attribute>
- <xs:attribute name="default" default="false"
use="optional">
- <xs:annotation>
- <xs:documentation>Was supposed to indicate that this item is the
default item in the list.
- This does not work and will be deprecated in later versions.
- Please use the 'default' attribute on the parents
simple-property.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:boolean"/>
- </xs:simpleType>
- </xs:attribute>
</xs:complexType>
<!-- == Property Constraints ================= -->
diff --git a/modules/plugins/validate-all-plugins/pom.xml
b/modules/plugins/validate-all-plugins/pom.xml
index cff4b8b..df2b0e8 100644
--- a/modules/plugins/validate-all-plugins/pom.xml
+++ b/modules/plugins/validate-all-plugins/pom.xml
@@ -17,7 +17,7 @@
<build>
<plugins>
- <plugin>
+ <plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
@@ -39,13 +39,13 @@
<pathelement
location="../hudson/target/rhq-hudson-plugin-${project.version}.jar" />
<pathelement
location="../iis/target/rhq-iis-plugin-${project.version}.jar" />
<!--
- <pathelement
location="../jboss-as/target/jopr-jboss-as-plugin-${project.version}.jar" />
- <pathelement
location="../jboss-as-5/target/jopr-jboss-as-5-plugin-${project.version}.jar"
/>
- <pathelement
location="../jboss-as-7/target/rhq-jboss-as-7-plugin-${project.version}.jar"
/>
+ <pathelement
location="../jboss-as/target/jopr-jboss-as-plugin-${project.version}.jar" />
+ <pathelement
location="../jboss-as-5/target/jopr-jboss-as-5-plugin-${project.version}.jar"
/>
-->
- <!--<pathelement
location="../jira/target/rhq-jira-plugin-${project.version}.jar" />-->
+ <pathelement
location="../jboss-as-7/target/rhq-jboss-as-7-plugin-${project.version}.jar"
/>
+ <!--<pathelement
location="../jira/target/rhq-jira-plugin-${project.version}.jar" />-->
<pathelement
location="../jmx/target/rhq-jmx-plugin-${project.version}.jar" />
- <!--<pathelement
location="../mysql/target/rhq-mysql-plugin-${project.version}.jar" />-->
+ <pathelement
location="../mysql/target/rhq-mysql-plugin-${project.version}.jar" />
<pathelement
location="../netservices/target/rhq-netservices-plugin-${project.version}.jar"
/>
<!--<pathelement
location="../onewire/target/rhq-onewire-plugin-${project.version}.jar"
/>-->
<pathelement
location="../oracle/target/rhq-oracle-plugin-${project.version}.jar" />
commit 27109e402d86deb7804249b870e7c15de7263491
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed Jun 6 14:54:38 2012 +0200
[BZ 802550] - rewording the docs on rhq.agent.plugins.child-discovery.delay-secs
to better explain what it actually means.
diff --git a/modules/enterprise/agent/src/main/resources/agent-configuration.xml
b/modules/enterprise/agent/src/main/resources/agent-configuration.xml
index 6de61ac..8ef78c9 100644
--- a/modules/enterprise/agent/src/main/resources/agent-configuration.xml
+++ b/modules/enterprise/agent/src/main/resources/agent-configuration.xml
@@ -610,13 +610,18 @@ commands named "config", "setconfig" and
"setup" and the command line options
_______________________________________________________________
rhq.agent.plugins.child-discovery.delay-secs
- Defines the delay between merging newly committed resources into the
inventory
- and kicking off a discovery to discover their child resources.
+ Defines the delay between merging newly committed or modified resources
with
+ the inventory and kicking off a discovery to discover their child
resources.
Once the RHQ administrator imports a server or platform into the
inventory,
- the agent is notified about that action and such resources are
"merged" into
- the agent's inventory with a "committed" status signifying
that they are of
- interest to RHQ. This setting then configures the speed with which the
child
- resources will appear in the inventory afterwards.
+ or a connection settings change is made on a resource, the agent is
notified
+ about that action and such resources are "merged" into the
agent's inventory
+ with a "committed" status and updated details.
+ This setting defines the delay between the agent notifying such change
and
+ performing the discovery to find if the change made any difference in the
+ children of the resources in question.
+ Note that in the case of newly imported resources, their immediate
children
+ are discovered immediately. It is only the further levels that are
governed
+ by this setting.
The value is specified in seconds.
-->
<!--
commit f68af16fc62992c7f534332d075f23e987082508
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 6 13:51:45 2012 +0200
BZ 784164 - if the search filter is wrapped in (), then don't wrap again.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java
index d08cfd3..85e5093 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java
@@ -93,7 +93,12 @@ public class LdapGroupManagerBean implements LdapGroupManagerLocal {
//retrieve the filters.
String groupFilter = (String) systemConfig.get(RHQConstants.LDAPGroupFilter);
if ((groupFilter != null) && (!groupFilter.trim().isEmpty())) {
- String filter = String.format("(%s)", groupFilter);
+ String filter;
+ if (groupFilter.startsWith("(") &&
groupFilter.endsWith(")"))
+ filter = groupFilter; // RFC 2254 does not allow for ((expression))
+ else
+ filter = String.format("(%s)", groupFilter); // not wrapped in
(), wrap it
+
return buildGroup(systemConfig, filter);
}
return emptyAvailableGroups;
@@ -256,10 +261,10 @@ public class LdapGroupManagerBean implements LdapGroupManagerLocal
{
}
/**Build/retrieve the user DN. Not usually a property.
- *
+ *
* @param options
* @param userName
- * @param usePosixGroups boolean indicating whether we search for groups with
posixGroup format
+ * @param usePosixGroups boolean indicating whether we search for groups with
posixGroup format
* @return
*/
private String getUserAttribute(Properties options, String userName, boolean
usePosixGroups) {
commit e7aa8c3127984a3ba6b1a3f5cd4a1bc2ae1155b1
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 6 10:16:30 2012 +0200
Improvements and bugfixes in the rest docs generator. Only translate the api out file
so that we don't trigger errors
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 257537d..2ad20a2 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -788,7 +788,9 @@ Build-OS-Version=${os.version}
<processors>
<processor>org.rhq.helpers.rest_docs_generator.ClassLevelProcessor</processor>
</processors>
-
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml</compilerArguments>
+
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml</compilerArguments>
+ <!-- Comment the next line in to get more verbose output for debugging
-->
+
<!--<compilerArguments>-Averbose=true</compilerArguments>-->
</configuration>
<executions>
<execution>
@@ -826,6 +828,7 @@ Build-OS-Version=${os.version}
<transformationSet>
<!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
target/docs/xml (see -AtargetDirectory above) -->
<dir>target/docs/xml</dir>
+
<includes><include>rest-api-out.xml</include></includes>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
<parameters>
<parameter>
@@ -843,6 +846,7 @@ Build-OS-Version=${os.version}
<transformationSet>
<!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
target/docs/xml (see -AtargetDirectory above) -->
<dir>target/docs/xml</dir>
+
<includes><include>rest-api-out.xml</include></includes>
<stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
<parameters>
<parameter>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
index 51ef85e..87026cd 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
@@ -34,7 +34,7 @@ import org.rhq.enterprise.server.rest.domain.GroupRest;
* @author Heiko W. Rupp
*/
@Local
-@Path("/group/")
+@Path("/group")
@Api(value="Deal with groups and DynaGroups", description = "Api that
deals with resource groups and group definitions")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML,
"application/yaml"})
public interface GroupHandlerLocal {
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
index a59e61b..7c7078a 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
@@ -45,7 +45,7 @@
<xsl:if test="@basePath">
<xsl:value-of select="@basePath"/>
</xsl:if>
- /<xsl:value-of select="@path"/>
+ <xsl:value-of select="@path"/>
</link>
</xsl:element>
</xsl:for-each>
@@ -63,7 +63,7 @@
<xsl:value-of select="@path"/>
</xsl:attribute>
<title>
- /<xsl:value-of select="@path"/>
+ <xsl:value-of select="@path"/>
<xsl:if test="@shortDesc">
: <xsl:value-of select="@shortDesc"/>
</xsl:if>
@@ -89,10 +89,10 @@
<listitem>
<simpara>
<emphasis role="bold"><xsl:value-of
select="@method"/><xsl:text xml:space="preserve">
</xsl:text><xsl:value-of
- select="../@path"/>/<xsl:value-of
select="@path"/>
+ select="../@path"/><xsl:if test="@path !=
'/'"><xsl:value-of select="@path"/></xsl:if>
</emphasis>
</simpara>
- <!--<subtitle><xsl:value-of
select="@description"/></subtitle>-->
+ <simpara><xsl:value-of
select="@description"/></simpara>
<xsl:choose>
<xsl:when test="param">
<table>
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
index 65be683..9c569f8 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
@@ -30,7 +30,7 @@
<xsl:attribute name="href">#<xsl:value-of
select="@path"/></xsl:attribute>
<xsl:if test="@basePath">
<xsl:value-of select="@basePath"/>
- </xsl:if>/<xsl:value-of select="@path"/>
+ </xsl:if><xsl:value-of select="@path"/>
</xsl:element>
</li>
</xsl:for-each>
@@ -46,7 +46,7 @@
<xsl:template match="class">
<xsl:element name="h2">
<xsl:attribute name="id"><xsl:value-of
select="@path"/></xsl:attribute>
- /<xsl:value-of select="@path"/>
+ <xsl:value-of select="@path"/>
<xsl:if test="@shortDesc">
: <xsl:value-of select="@shortDesc"/>
</xsl:if>
@@ -65,7 +65,9 @@
</xsl:template>
<xsl:template match="method">
- <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>/<xsl:value-of
select="@path"/></h3>
+ <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>
+ <xsl:if test="@path != '/'"><xsl:value-of
select="@path"/></xsl:if>
+ </h3>
<em><xsl:value-of select="@description"/></em>
<br/>
<xsl:choose>
diff --git a/modules/helpers/rest-docs-generator/pom.xml
b/modules/helpers/rest-docs-generator/pom.xml
index cf9dcd5..4010747 100644
--- a/modules/helpers/rest-docs-generator/pom.xml
+++ b/modules/helpers/rest-docs-generator/pom.xml
@@ -65,7 +65,9 @@
<processors>
<processor>org.rhq.helpers.rest_docs_generator.ClassLevelProcessor</processor>
</processors>
-
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml,-Averbose=true</compilerArguments>
+
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml</compilerArguments>
+ <!-- comment in next line to get the xml on stdout for debugging -->
+
<!--<compilerArguments>-Averbose=true</compilerArguments>-->
</configuration>
<executions>
<execution>
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
index 3752d68..6f02b57 100644
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -19,6 +19,7 @@ import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Name;
import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.VariableElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.ElementFilter;
@@ -62,6 +63,7 @@ public class ClassLevelProcessor extends AbstractProcessor {
private static final String API_OUT_XML = "rest-api-out.xml";
public static final String TARGET_DIRECTORY = "targetDirectory";
public static final String VERBOSE = "verbose";
+ private static final String BODY_INDICATOR = "-body-";
Log log = LogFactory.getLog(getClass().getName());
@@ -225,20 +227,19 @@ public class ClassLevelProcessor extends AbstractProcessor {
* @param methodElement Method to look for parameters
* @param parent The parent xml element to tack the results on
*/
- private void processParams(Document doc, javax.lang.model.element.Element
methodElement, Element parent) {
- for (javax.lang.model.element.Element modelElement :
methodElement.getEnclosedElements()) {
- TypeMirror t = modelElement.asType();
-
+ private void processParams(Document doc, ExecutableElement methodElement, Element
parent) {
+ for (VariableElement paramElement : methodElement.getParameters()) {
+ TypeMirror t = paramElement.asType();
if (skipParamType(t))
continue;
Element element = doc.createElement("param");
parent.appendChild(element);
// determine name
String name;
- String paramType="-body-";
- PathParam pp = modelElement.getAnnotation(PathParam.class);
- QueryParam qp = modelElement.getAnnotation(QueryParam.class);
- ApiParam ap = modelElement.getAnnotation(ApiParam.class);
+ String paramType= BODY_INDICATOR;
+ PathParam pp = paramElement.getAnnotation(PathParam.class);
+ QueryParam qp = paramElement.getAnnotation(QueryParam.class);
+ ApiParam ap = paramElement.getAnnotation(ApiParam.class);
if (pp != null) {
name = pp.value();
paramType="Path";
@@ -250,18 +251,18 @@ public class ClassLevelProcessor extends AbstractProcessor {
else if (ap!=null)
name = ap.name();
else {
- Name nameElement = modelElement.getSimpleName();
+ Name nameElement = paramElement.getSimpleName();
name = nameElement.toString();
}
element.setAttribute("name", name);
element.setAttribute("paramType",paramType);
- ApiParam apiParam = modelElement.getAnnotation(ApiParam.class);
+ ApiParam apiParam = paramElement.getAnnotation(ApiParam.class);
if (apiParam!=null) {
String description = apiParam.value();
setOptionalAttribute(element, "description", description);
String required = String.valueOf(apiParam.required());
- if (isPathParam(modelElement)) // PathParams are always required
+ if (pp!=null || paramType.equals(BODY_INDICATOR)) // PathParams are
always required
required="true";
setOptionalAttribute(element, "required", required,
"false");
@@ -269,7 +270,7 @@ public class ClassLevelProcessor extends AbstractProcessor {
setOptionalAttribute(element, "allowableValues", allowedValues,
"all");
}
String defaultValue;
- DefaultValue dva = modelElement.getAnnotation(DefaultValue.class);
+ DefaultValue dva = paramElement.getAnnotation(DefaultValue.class);
if (dva!=null)
defaultValue = dva.value();
else if (ap!=null)
@@ -288,10 +289,10 @@ public class ClassLevelProcessor extends AbstractProcessor {
/**
* Look at the ApiError(s) annotations and populate the output
* @param doc XML Document to add
- * @param methodElement MethodDeclaration to look at
+ * @param methodElement Method declaration to look at
* @param parent The parent xml element to attach the result to
*/
- private void processErrors(Document doc, javax.lang.model.element.Element
methodElement, Element parent) {
+ private void processErrors(Document doc, ExecutableElement methodElement, Element
parent) {
ApiError ae = methodElement.getAnnotation(ApiError.class);
processError(doc,ae,parent);
ApiErrors aes = methodElement.getAnnotation(ApiErrors.class);
@@ -325,6 +326,7 @@ public class ClassLevelProcessor extends AbstractProcessor {
*/
private boolean skipParamType(TypeMirror t) {
String name = t.toString();
+ System.out.print("skipParamType: " + name + "... ");
boolean skip=false;
for (String toSkip : PARAM_SKIP_ANNOTATIONS) {
if (toSkip.equals(name)) {
@@ -332,15 +334,10 @@ public class ClassLevelProcessor extends AbstractProcessor {
break;
}
}
+ System.out.println(skip);
return skip;
}
-
-
- private boolean isPathParam(javax.lang.model.element.Element decl) {
- return hasAnnotation(decl,"javax.ws.rs.PathParam");
- }
-
/**
* Check if a certain annotation is present or not
* @param declaration Declaration to look at
diff --git a/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
b/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
index a6516be..9d10193 100644
--- a/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
+++ b/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
@@ -20,7 +20,7 @@
</xsl:template>
<xsl:template match="class">
- <h2>/<xsl:value-of select="@path"/>
+ <h2><xsl:value-of select="@path"/>
<xsl:if test="@shortDesc">
: <xsl:value-of select="@shortDesc"/>
</xsl:if>
@@ -39,7 +39,9 @@
</xsl:template>
<xsl:template match="method">
- <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>/<xsl:value-of
select="@path"/></h3>
+ <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>
+ <xsl:if test="@path != '/'"><xsl:value-of
select="@path"/></xsl:if>
+ </h3>
<em><xsl:value-of select="@description"/></em>
<br/>
<xsl:choose>
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
index 6068944..4792402 100644
---
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
+++
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
@@ -36,7 +36,7 @@ import org.rhq.helpers.rest_docs_generator.test.FooBean;
@Path("bla")
public interface SecondOne {
- @Path("bla")
+ @Path("bla/{id}")
@PUT
@ApiError(code=404,reason = "Resource with the passed key not found")
public Response putSomeData(
commit e2e7ceef85ad1e6edd558ac6d14794c475c22549
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 5 16:26:56 2012 -0500
[BZ 828464] Mark the constructor as deprecated.
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
index ec6e0b0..5cd5e07 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
@@ -61,6 +61,11 @@ public class ManagedComponentDeployer implements Deployer {
private ProfileServiceConnection profileServiceConnection;
private ResourceContext<?> parentResourceContext;
+ /**
+ * @deprecated To be used only by the ESB plugin (backwards compatibility).
+ * Replaced by {@link #ManagedComponentDeployer(ProfileServiceConnection,
PackageDownloader, ResourceContext)}
+ */
+ @Deprecated
public ManagedComponentDeployer(ProfileServiceConnection profileServiceConnection,
PackageDownloader downloader) {
this(profileServiceConnection, downloader, null);
}
commit 0dc1ed3861c8ca702cb5f454d9cdad65c598d5c7
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 5 16:07:48 2012 -0500
[BZ 828464] Adding the two argument constructor back for backwards compatibility with
the ESB plugin.
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
index f5eaec3..ec6e0b0 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
@@ -48,7 +48,7 @@ import org.rhq.plugins.jbossas5.util.DeploymentUtils;
/**
* This implementation handles deploying stuff using the standard JBoss deployment APIs.
- *
+ *
* @author Lukas Krejci
*/
public class ManagedComponentDeployer implements Deployer {
@@ -61,6 +61,10 @@ public class ManagedComponentDeployer implements Deployer {
private ProfileServiceConnection profileServiceConnection;
private ResourceContext<?> parentResourceContext;
+ public ManagedComponentDeployer(ProfileServiceConnection profileServiceConnection,
PackageDownloader downloader) {
+ this(profileServiceConnection, downloader, null);
+ }
+
public ManagedComponentDeployer(ProfileServiceConnection profileServiceConnection,
PackageDownloader downloader,
ResourceContext<?> parentResourceContext) {
this.downloader = downloader;
@@ -133,7 +137,7 @@ public class ManagedComponentDeployer implements Deployer {
// If deployed exploded, we need to store the SHA of source package in
META-INF/MANIFEST.MF for correct
// versioning.
- if (deployExploded) {
+ if (deployExploded && this.parentResourceContext != null) {
URI deploymentURI = URI.create(deploymentName);
// e.g.: /C:/opt/jboss-6.0.0.Final/server/default/deploy/foo.war
String deploymentPath = deploymentURI.getPath();
commit f364f5ff907a4fff391579181fee1e2e01a861a7
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 5 14:48:53 2012 -0400
[BZ 828905] fix the version ordering column when deleting a bundle version
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
index 31fc9ab..b4010bd 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
@@ -57,6 +57,11 @@ import org.rhq.core.domain.tagging.Tag;
*/
@Entity
@NamedQueries( {
+ @NamedQuery(name = BundleVersion.UPDATE_VERSION_ORDER_BY_BUNDLE_ID_AFTER_DELETE,
query = "" //
+ + "UPDATE BundleVersion bv "//
+ + " SET bv.versionOrder = (bv.versionOrder-1) " //
+ + " WHERE bv.bundle.id = :bundleId " //
+ + " AND bv.versionOrder > :versionOrder"), //
@NamedQuery(name = BundleVersion.UPDATE_VERSION_ORDER_BY_BUNDLE_ID, query =
"" //
+ "UPDATE BundleVersion bv "//
+ " SET bv.versionOrder = (bv.versionOrder+1) " //
@@ -83,6 +88,7 @@ import org.rhq.core.domain.tagging.Tag;
public class BundleVersion implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String UPDATE_VERSION_ORDER_BY_BUNDLE_ID_AFTER_DELETE =
"BundleVersion.updateVersionOrderByBundleIdAfterDelete";
public static final String UPDATE_VERSION_ORDER_BY_BUNDLE_ID =
"BundleVersion.updateVersionOrderByBundleId";
public static final String QUERY_FIND_LATEST_BY_BUNDLE_ID =
"BundleVersion.findLatestByBundleId";
public static final String QUERY_FIND_VERSION_INFO_BY_BUNDLE_ID =
"BundleVersion.findVersionsByBundleId";
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 0e129ee..a6302de 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -1646,10 +1646,11 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
return;
}
- int bundleId = 0;
- if (deleteBundleIfEmpty) {
- bundleId = bundleVersion.getBundle().getId(); // note that we lazy load this
if we never plan to delete the bundle
- }
+ // After we delete this bundle version, this is the version order value that is
being removed.
+ // Later we need to re-order the other bundles that are newer than this so their
version orders are readjusted.
+ int doomedBundleVersionOrder = bundleVersion.getVersionOrder();
+
+ int bundleId = bundleVersion.getBundle().getId();
// deployments replace other deployments and have a self-referring FK. The
deployments
// need to be removed in a way that will ensure that a replaced deployment is not
removed
@@ -1671,9 +1672,17 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
if (q.getResultList().size() == 0) {
// there are no more bundle versions left, blow away the bundle and all
repo/bundle files associated with it
deleteBundle(subject, bundleId);
+ doomedBundleVersionOrder = -1; // just a marker to let us know not to
bother with adjusting version orders
}
}
+ if (doomedBundleVersionOrder >= 0) {
+ q =
entityManager.createNamedQuery(BundleVersion.UPDATE_VERSION_ORDER_BY_BUNDLE_ID_AFTER_DELETE);
+ q.setParameter("bundleId", bundleId);
+ q.setParameter("versionOrder", doomedBundleVersionOrder);
+ q.executeUpdate();
+ }
+
return;
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index e3b985e..a4d43b8 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -533,6 +533,12 @@ public class BundleManagerBeanTest extends AbstractEJB3Test {
bCriteria.addFilterId(b1.getId());
bResults = bundleManager.findBundlesByCriteria(overlord, bCriteria);
assert bResults.size() == 0 : "Should have deleted bundle since no versions
exists anymore";
+
+ // make sure our composite query is OK and can show us 0 bundles, too
+ PageList<BundleWithLatestVersionComposite> composites;
+ bCriteria = new BundleCriteria();
+ composites =
bundleManager.findBundlesWithLatestVersionCompositesByCriteria(overlord, bCriteria);
+ assert composites.size() == 0;
}
@Test(enabled = TESTS_ENABLED)
@@ -696,6 +702,51 @@ public class BundleManagerBeanTest extends AbstractEJB3Test {
assert results.get(1).getBundleDescription().equals(b2.getDescription());
assert results.get(1).getLatestVersion().equals("9.1");
assert results.get(1).getVersionsCount().longValue() == 1L;
+
+ // now delete one of the older bundle versions and make sure the ordering remains
intact
+ bundleManager.deleteBundleVersion(overlord, bv1.getId(), true);
+ results =
bundleManager.findBundlesWithLatestVersionCompositesByCriteria(overlord, criteria);
+ assert results.size() == 2 : results;
+ assert results.get(0).getBundleId().equals(b1.getId());
+ assert results.get(0).getBundleName().equals(b1.getName());
+ assert results.get(0).getBundleDescription().equals(b1.getDescription());
+ assert results.get(0).getLatestVersion().equals("2.0");
+ assert results.get(0).getVersionsCount().longValue() == 3L;
+ assert results.get(1).getBundleId().equals(b2.getId());
+ assert results.get(1).getBundleName().equals(b2.getName());
+ assert results.get(1).getBundleDescription().equals(b2.getDescription());
+ assert results.get(1).getLatestVersion().equals("9.1");
+ assert results.get(1).getVersionsCount().longValue() == 1L;
+
+ // now add another bundle version and make sure the ordering is updated properly
[BZ 828905]
+ BundleVersion bv5 = createBundleVersion(b1.getName() + "-5",
"5.0", b1);
+ assertNotNull(bv5);
+ assertEquals("5.0", bv5.getVersion());
+ assert 3 == bv5.getVersionOrder();
+ results =
bundleManager.findBundlesWithLatestVersionCompositesByCriteria(overlord, criteria);
+ assert results.get(0).getBundleId().equals(b1.getId());
+ assert results.get(0).getBundleName().equals(b1.getName());
+ assert results.get(0).getBundleDescription().equals(b1.getDescription());
+ assert results.get(0).getLatestVersion().equals("5.0");
+ assert results.get(0).getVersionsCount().longValue() == 4L;
+
+ // delete the latest bundle version and make sure we didn't screw up the
order
+ bundleManager.deleteBundleVersion(overlord, bv5.getId(), true);
+ results =
bundleManager.findBundlesWithLatestVersionCompositesByCriteria(overlord, criteria);
+ assert results.get(0).getBundleId().equals(b1.getId());
+ assert results.get(0).getBundleName().equals(b1.getName());
+ assert results.get(0).getBundleDescription().equals(b1.getDescription());
+ assert results.get(0).getLatestVersion().equals("2.0");
+ assert results.get(0).getVersionsCount().longValue() == 3L;
+
+ // delete the oldest bundle version and make sure we didn't screw up the
order
+ bundleManager.deleteBundleVersion(overlord, bv4.getId(), true); // deleting
version 0.5
+ results =
bundleManager.findBundlesWithLatestVersionCompositesByCriteria(overlord, criteria);
+ assert results.get(0).getBundleId().equals(b1.getId());
+ assert results.get(0).getBundleName().equals(b1.getName());
+ assert results.get(0).getBundleDescription().equals(b1.getDescription());
+ assert results.get(0).getLatestVersion().equals("2.0");
+ assert results.get(0).getVersionsCount().longValue() == 2L;
}
@Test(enabled = TESTS_ENABLED)
commit c703b8bfa8ec5f08a4de261858f827885b9c1280
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jun 5 13:32:41 2012 -0400
Fix test failure. What goes up must go down and what gets prepared must get
unprepared.
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
index 1625480..d4d9cbf 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
@@ -18,6 +18,10 @@
*/
package org.rhq.enterprise.server.discovery;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.when;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
@@ -72,10 +76,6 @@ import org.rhq.enterprise.server.test.TestServerCommunicationsService;
import org.rhq.enterprise.server.util.LookupUtil;
import org.rhq.enterprise.server.util.ResourceTreeHelper;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.when;
-
/**
* A unit test for {@link DiscoveryBossBean}.
*/
@@ -125,7 +125,8 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
agentServiceContainer = prepareForTestAgents();
agentServiceContainer.discoveryService =
Mockito.mock(DiscoveryAgentService.class);
-
when(agentServiceContainer.discoveryService.manuallyAddResource(any(ResourceType.class),
anyInt(),
+ when(
+
agentServiceContainer.discoveryService.manuallyAddResource(any(ResourceType.class),
anyInt(),
any(Configuration.class), anyInt())).thenAnswer(new
Answer<MergeResourceResponse>() {
public MergeResourceResponse answer(InvocationOnMock invocation) throws
Throwable {
Resource resource = new Resource(1000000);
@@ -135,7 +136,7 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
long randomLong = UUID.randomUUID().getLeastSignificantBits();
resource.setResourceKey(String.valueOf("key-" + randomLong));
resource.setName("name-" + randomLong);
- int parentResourceId = (Integer)invocation.getArguments()[1];
+ int parentResourceId = (Integer) invocation.getArguments()[1];
Resource parentResource =
resourceManager.getResource(subjectManager.getOverlord(), parentResourceId);
resource.setParentResource(parentResource);
Integer ownerSubjectId = (Integer) invocation.getArguments()[3];
@@ -146,9 +147,13 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
@AfterMethod(alwaysRun = true)
public void afterMethod() throws Exception {
- MBeanServerFactory.releaseMBeanServer(dummyJBossMBeanServer);
+ try {
+ MBeanServerFactory.releaseMBeanServer(dummyJBossMBeanServer);
- cleanDB();
+ cleanDB();
+ } finally {
+ unprepareForTestAgents();
+ }
}
@Test(groups = "integration.ejb3")
@@ -226,11 +231,11 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
ResourceSyncInfo serverSyncInfo =
syncInfo.getChildSyncInfos().iterator().next();
Resource resource1 =
discoveryBoss.manuallyAddResource(subjectManager.getOverlord(), serviceType2.getId(),
- serverSyncInfo.getId(), new Configuration());
+ serverSyncInfo.getId(), new Configuration());
try {
Resource resource2 =
discoveryBoss.manuallyAddResource(subjectManager.getOverlord(), serviceType2.getId(),
- serverSyncInfo.getId(), new Configuration());
+ serverSyncInfo.getId(), new Configuration());
fail("Manually adding a singleton that already existed succeeded: "
+ resource2);
} catch (EJBException e) {
assertEquals(String.valueOf(e.getCause()), RuntimeException.class,
e.getCause().getClass());
commit f4cf080aa240f38d88532f1966e4459328c35ca3
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jun 5 13:32:05 2012 -0400
A bunch of updates to the Eclipse .classpath file after a recent clean repo build.
diff --git a/.classpath b/.classpath
index 6f0af83..fd400dc 100644
--- a/.classpath
+++ b/.classpath
@@ -181,7 +181,7 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/man/jboss-managed/2.1.1.GA/jboss-managed-2.1.1.GA.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/man/jboss-metatype/2.1.1.GA/jboss-metatype-2.1.1.GA.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/apache/commons/commons-io/1.3.2/commons-io-1.3.2.jar"
sourcepath="/M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.12/jaxb-impl-2.1.12.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.9/jaxb-impl-2.1.9.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/i18nlog/i18nlog/1.0.10/i18nlog-1.0.10.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar"/>
@@ -194,7 +194,7 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/struts/struts/1.2.9/struts-1.2.9.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/javax/servlet/jsp-api/2.0/jsp-api-2.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/testng/testng/6.1.1/testng-6.1.1.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/testng/testng/6.5.2/testng-6.5.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/snmp4j/snmp4j/1.8.2/snmp4j-1.8.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/tomcat/tomcat-jk/4.1.31/tomcat-jk-4.1.31.jar"/>
@@ -225,14 +225,14 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/javax/faces/jsf-impl/1.2_14/jsf-impl-1.2_14.jar"
sourcepath="/M2_REPO/javax/faces/jsf-impl/1.2_14/jsf-impl-1.2_14-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/sun/facelets/jsf-facelets/1.1.15.B1/jsf-facelets-1.1.15.B1.jar"
sourcepath="/M2_REPO/com/sun/facelets/jsf-facelets/1.1.15.B1/jsf-facelets-1.1.15.B1-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/mc4j/org-mc4j-ems/1.2.16/org-mc4j-ems-1.2.16.jar"
sourcepath="/M2_REPO/mc4j/org-mc4j-ems/1.2.16/org-mc4j-ems-1.2.16-sources.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/mc4j/org-mc4j-ems/1.3/org-mc4j-ems-1.3.jar"
sourcepath="/M2_REPO/mc4j/org-mc4j-ems/1.3/org-mc4j-ems-1.3-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/opensymphony/quartz/quartz/1.6.5/quartz-1.6.5.jar"
sourcepath="/M2_REPO/org/opensymphony/quartz/quartz/1.6.5/quartz-1.6.5-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/javax/mail/mail/1.4.2/mail-1.4.2.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/richfaces/framework/richfaces-api/3.3.3.Final/richfaces-api-3.3.3.Final.jar"
sourcepath="/M2_REPO/org/richfaces/framework/richfaces-api/3.1.3.GA/richfaces-api-3.1.3.GA-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/richfaces/framework/richfaces-impl/3.3.3.Final/richfaces-impl-3.3.3.Final.jar"
sourcepath="/M2_REPO/org/richfaces/framework/richfaces-impl/3.3.0.GA/richfaces-impl-3.3.0.GA-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/richfaces/ui/richfaces-ui/3.3.3.Final/richfaces-ui-3.3.3.Final.jar"
sourcepath="/M2_REPO/org/richfaces/ui/richfaces-ui/3.3.0.GA/richfaces-ui-3.3.0.GA-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/postgresql/postgresql/9.0-801.jdbc4/postgresql-9.0-801.jdbc4.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/postgresql/postgresql/9.1-901.jdbc4/postgresql-9.1-901.jdbc4.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/jboss/jboss-cache/1.4.1.SP9/jboss-cache-1.4.1.SP9.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/hyperic/sigar/1.6.5.132/sigar-1.6.5.132.jar"
sourcepath="/M2_REPO/org/hyperic/sigar/1.6.3.82/sigar-1.6.3.82-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/transaction/jboss-jta/4.2.3.SP5/jboss-jta-4.2.3.SP5.jar"/>
@@ -253,11 +253,6 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/jline/jline/0.9.94/jline-0.9.94.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/javassist/javassist/3.9.0.GA/javassist-3.9.0.GA.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/net/sf/opencsv/opencsv/1.8/opencsv-1.8.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/bouncycastle/bcpg-jdk15/140/bcpg-jdk15-140.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/bouncycastle/bcprov-jdk15/140/bcprov-jdk15-140.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/apache/xmlrpc/xmlrpc-client/3.1.2/xmlrpc-client-3.1.2.jar"
sourcepath="/M2_REPO/org/apache/xmlrpc/xmlrpc-client/3.1.2/xmlrpc-client-3.1.2-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/apache/xmlrpc/xmlrpc-common/3.1.2/xmlrpc-common-3.1.2.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/apache/ws/commons/util/ws-commons-util/1.0.2/ws-commons-util-1.0.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/pircbot/pircbot/1.4.2/pircbot-1.4.2.jar"/>
@@ -268,12 +263,10 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/antlr/antlr-runtime/3.2/antlr-runtime-3.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/jboss/web/jbossweb/2.0.1.GA/jbossweb-2.0.1.GA.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/libvirt/libvirt/0.4.1/libvirt-0.4.1.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/byteman/byteman/1.2.1/byteman-1.2.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/fedorahosted/cobbler/cobbler4j/0.1/cobbler4j-0.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/google/gwt/gwt-user/2.4.0/gwt-user-2.4.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/google/gwt/gwt-dev/2.4.0/gwt-dev-2.4.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/smartgwt/smartgwt/3.0/smartgwt-3.0.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/com/google/code/gwt-log/gwt-log/3.1.0/gwt-log-3.1.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/ca/nanometrics/gflot/1.0.0/gflot-1.0.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/jcraft/jsch/0.1.29/jsch-0.1.29.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar"/>
@@ -284,16 +277,16 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/unitils/unitils-dbunit/3.1/unitils-dbunit-3.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/unitils/unitils-orm/3.1/unitils-orm-3.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/unitils/unitils-testng/3.1/unitils-testng-3.1.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/codehaus/jackson/jackson-core-asl/1.7.4/jackson-core-asl-1.7.4.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.7.4/jackson-mapper-asl-1.7.4.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/codehaus/jackson/jackson-core-asl/1.8.5/jackson-core-asl-1.8.5.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.8.5/jackson-mapper-asl-1.8.5.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/mongodb/mongo-java-driver/2.6.5/mongo-java-driver-2.6.5.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/googlecode/java-diff-utils/diffutils/1.2.1/diffutils-1.2.1.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/com/google/code/morphia/morphia/1.00-SNAPSHOT/morphia-1.00-SNAPSHOT.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/com/google/code/morphia/morphia/0.99/morphia-0.99.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-links/2.3.3.Final/resteasy-links-2.3.3.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.3.Final/resteasy-jaxrs-2.3.3.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.3.Final/resteasy-jackson-provider-2.3.3.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/jaxrs-api/2.3.3.Final/jaxrs-api-2.3.3.Final.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/sasl/jboss-sasl/1.0.0.Beta9/jboss-sasl-1.0.0.Beta9.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/sasl/jboss-sasl/1.0.0.Final/jboss-sasl-1.0.0.Final.jar"/>
<classpathentry exported="true" kind="var"
path="JDK_HOME/lib/tools.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/powermock/powermock-api-mockito/1.4.11/powermock-api-mockito-1.4.11.jar"/>
@@ -315,5 +308,7 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/arquillian/container/arquillian-container-spi/1.0.0.Final/arquillian-container-spi-1.0.0.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/arquillian/container/arquillian-container-test-api/1.0.0.Final/arquillian-container-test-api-1.0.0.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/arquillian/testng/arquillian-testng-core/1.0.0.Final/arquillian-testng-core-1.0.0.Final.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/com/wordnik/swagger-annotations_2.9.1/1.1-SNAPSHOT/swagger-annotations_2.9.1-1.1-20120531.064118-1.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/byteman/byteman/1.2.1/byteman-1.2.1.jar"/>
<classpathentry kind="output" path="eclipse-classes"/>
</classpath>
commit bbc4b2938a4251c29d2db42e5f2ab5066e874bc5
Merge: 291d24d 8f26340
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Tue Jun 5 09:43:38 2012 -0700
Merge branch 'search-noentrypoint'
commit 8f263408ac368f867edaa000e50ce92e0f37a4bb
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Tue Jun 5 09:30:37 2012 -0700
Remove unused entry Search Entry point. SearchGUI.java is an unused EntryPoint
probably left over from integration with legacy jsf app.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java
deleted file mode 100644
index 4c06d51..0000000
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/SearchGUI.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2010 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.rhq.enterprise.gui.coregui.client;
-
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.util.SC;
-
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.gui.coregui.client.search.SearchBar;
-import org.rhq.enterprise.gui.coregui.client.util.Log;
-
-/**
- * @author Joseph Marques
- */
-public class SearchGUI implements EntryPoint {
- private static final Messages MSG = CoreGUI.getMessages();
-
- public static SearchGUI singleton = new SearchGUI();
- private SearchBar searchBar;
-
- private SearchGUI() {
- }
-
- public static SearchGUI get() {
- return singleton;
- }
-
- public void onModuleLoad() {
- if (SearchBar.existsOnPage() == false) {
- Log.info("Suppressing load of SearchGUI module");
- return;
- }
-
- UserSessionManager.checkLoginStatus(null, null, new
AsyncCallback<Subject>() {
- @Override
- public void onFailure(Throwable caught) {
- SC.say(MSG.view_searchGUI_loginStatus());
- }
-
- @Override
- public void onSuccess(Subject result) {
- singleton.buildSearchGUI();
- }
- });
- }
-
- public void buildSearchGUI() {
- searchBar = new SearchBar();
- }
-
- public SearchBar getSearchBar() {
- return searchBar;
- }
-
-}
commit 291d24d4eb33e650c8c11599b71c14db23b1215b
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue Jun 5 10:42:27 2012 -0400
[BZ 822299] changing servialVersionUID to be consistent
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
index 5cb53ac..6477b5d 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
@@ -32,7 +32,7 @@ import javax.ejb.ApplicationException;
*/
@ApplicationException(rollback = true)
public class CannotConnectToAgentException extends RuntimeException {
- private static final long serialVersionUID = -1L;
+ private static final long serialVersionUID = 1L;
public CannotConnectToAgentException() {
super();
commit e14dbebafb4f2dbfff78f1e7548ead6b7f8da3b4
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 5 15:02:47 2012 +0200
Fix path to generated .dbx.xml file
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 1f42e40..257537d 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -824,7 +824,7 @@ Build-OS-Version=${os.version}
<configuration>
<transformationSets>
<transformationSet>
- <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
target/docs/xml (see -AtargetDirectory above) -->
<dir>target/docs/xml</dir>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
<parameters>
@@ -841,8 +841,8 @@ Build-OS-Version=${os.version}
</fileMappers>
</transformationSet>
<transformationSet>
- <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
- <dir>target/generated-resources/apt</dir>
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
target/docs/xml (see -AtargetDirectory above) -->
+ <dir>target/docs/xml</dir>
<stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
<parameters>
<parameter>
@@ -874,7 +874,7 @@ Build-OS-Version=${os.version}
</execution>
</executions>
<configuration>
- <sourceDirectory>target/docs/xml</sourceDirectory>
+ <sourceDirectory>target/docs/xml</sourceDirectory> <!-- from
previous plugin, 2nd transformation set -->
<includes>rest-api-out.dbx.xml</includes>
<hyphenate>false</hyphenate>
<generateToc>true</generateToc>
commit 08c02d70f5adfb4edb75f064e99170512992ab9e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 5 10:02:37 2012 +0200
BZ 827652 - fix a typo.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 4e50dd8..282ee93 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -155,7 +155,7 @@
<resource-configuration>
<c:group name="proxy" displayName="Proxy Options">
- <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
+ <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
commas."/>
<c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
</c:group>
@@ -173,7 +173,7 @@
<c:group name="context" displayName="Web Context
Options">
<c:simple-property name="excluded-contexts"
required="false" type="string" readOnly="false"
defaultValue="ROOT,admin-console,invoker,jbossws,jmx-console,juddi,web-console"
- description="List of contexts mod_cluster should
ignore, Format String separated with comas."/>
+ description="List of contexts mod_cluster should
ignore, Format String separated with commas."/>
<c:simple-property name="auto-enable-contexts"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Enable contexts even if disabled in
mod_cluster_manger (httpd)."/>
</c:group>
@@ -1321,8 +1321,8 @@
<operation name="list-proxies" description="Read the list of
httpd connected to the node.">
<results>
- <!-- List of proxies the node is connected to. Format (hostname:port)
separated with comas.-->
- <c:simple-property name="proxy-list" description="List of
proxies the node is connected to. Format (hostname:port) separated with comas"/>
+ <!-- List of proxies the node is connected to. Format (hostname:port)
separated with commas.-->
+ <c:simple-property name="proxy-list" description="List of
proxies the node is connected to. Format (hostname:port) separated with commas"/>
</results>
</operation>
commit 80bd3e2100151494746ffe8e4594762afbdc767d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 5 09:55:27 2012 +0200
BZ 828349 - a server-group of a managed server can now be changed.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index ffc0246..4e50dd8 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -1584,13 +1584,13 @@
<c:simple-property name="hostname" displayName="Name of the host
to put the server on" required="true" readOnly="true">
<c:option-source target="resource" expression="type=^Host$
plugin=&pluginName;"/>
</c:simple-property>
- <c:simple-property name="group" readOnly="true"
displayName="Server Group" description="Server Group this instance belongs
to.">
+ <c:simple-property name="group" readOnly="false"
displayName="Server Group" description="Server Group this instance belongs
to.">
<c:option-source target="resource"
expression="type=ServerGroup"/>
</c:simple-property>
- <c:simple-property name="socket-binding-group"
readOnly="true" displayName="Socket binding group"
description="Socket bindings to use" required="true"
default="standard-sockets">
+ <c:simple-property name="socket-binding-group"
readOnly="false" displayName="Socket binding group"
description="Socket bindings to use" required="true"
default="standard-sockets">
<c:option-source target="resource"
expression="type=SocketBindingGroup"/>
</c:simple-property>
- <c:simple-property name="socket-binding-port-offset"
readOnly="true" displayName="Port Offset" type="integer"
default="0" description="Offset to the base ports"/>
+ <c:simple-property name="socket-binding-port-offset"
readOnly="false" displayName="Port Offset" type="integer"
default="0" description="Offset to the base ports"/>
<c:simple-property name="auto-start" displayName="Autostart"
default="false" type="boolean"/>
<!--
<c:simple-property name="jmv" displayName="JVM"
defaultValue="default" type="string" description="JVM definition
to use with this server">
commit 91ca53538252ed35d9384587c23560878405f712
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 4 20:50:46 2012 +0200
Port over to javax.annotations.processing api.
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 87cbb59..1f42e40 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -516,14 +516,12 @@
<artifactId>swagger-annotations_2.9.1</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
-<!--
<dependency>
<groupId>org.rhq.helpers</groupId>
<artifactId>rest-docs-generator</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
--->
<dependency>
<groupId>org.yaml</groupId>
@@ -782,25 +780,36 @@ Build-OS-Version=${os.version}
<!-- Document generation from the Annotations on the REST-API. -->
<!-- TODO move to a better suited processing phase -->
-<!--
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>apt-maven-plugin</artifactId>
- <version>1.0-alpha-4</version>
+ <groupId>org.bsc.maven</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <version>2.0.6-redhat</version>
<configuration>
-
<factory>org.rhq.helpers.rest_docs_generator.SwaggerAptFactory</factory>
+ <processors>
+
<processor>org.rhq.helpers.rest_docs_generator.ClassLevelProcessor</processor>
+ </processors>
+
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml</compilerArguments>
</configuration>
<executions>
<execution>
<id>create-rest-api-reports</id>
<phase>process-classes</phase>
<goals>
- <!– We want to process the classes in src/
–>
+ <!-- We want to process the classes in src/ -->
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
+ <!-- Disable annotation processors during normal compilation -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgument>-proc:none</compilerArgument>
+ </configuration>
+ </plugin>
+
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
@@ -815,8 +824,8 @@ Build-OS-Version=${os.version}
<configuration>
<transformationSets>
<transformationSet>
- <!– org.rhq.helpers.rest_docs_generator.test plugin
wrote to generated-resources, as we ran the process goal –>
- <dir>target/generated-resources/apt</dir>
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
+ <dir>target/docs/xml</dir>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
<parameters>
<parameter>
@@ -824,7 +833,7 @@ Build-OS-Version=${os.version}
<value>http://localhost:7080/rest/1</value>
</parameter>
</parameters>
- <outputDir>${project.build.directory}</outputDir>
+ <outputDir>${project.build.directory}/docs/html</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>.html</targetExtension>
@@ -832,7 +841,7 @@ Build-OS-Version=${os.version}
</fileMappers>
</transformationSet>
<transformationSet>
- <!– org.rhq.helpers.rest_docs_generator.test plugin
wrote to generated-resources, as we ran the process goal –>
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
<dir>target/generated-resources/apt</dir>
<stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
<parameters>
@@ -841,7 +850,7 @@ Build-OS-Version=${os.version}
<value>http://localhost:7080/rest/1</value>
</parameter>
</parameters>
- <outputDir>${project.build.directory}</outputDir>
+ <outputDir>${project.build.directory}/docs/xml</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>.dbx.xml</targetExtension>
@@ -865,13 +874,12 @@ Build-OS-Version=${os.version}
</execution>
</executions>
<configuration>
- <sourceDirectory>target</sourceDirectory>
+ <sourceDirectory>target/docs/xml</sourceDirectory>
<includes>rest-api-out.dbx.xml</includes>
<hyphenate>false</hyphenate>
<generateToc>true</generateToc>
</configuration>
</plugin>
--->
</plugins>
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index 15554e0..7e30969 100644
--- a/modules/helpers/pom.xml
+++ b/modules/helpers/pom.xml
@@ -37,9 +37,7 @@
<module>bundleGen</module>
<module>jeeGen</module>
<module>perftest-support</module>
-<!--
<module>rest-docs-generator</module>
--->
<!-- Not built by default because people will need this only rarely when
developing tests. -->
<!-- <module>inventory-serializer</module> -->
diff --git a/modules/helpers/rest-docs-generator/pom.xml
b/modules/helpers/rest-docs-generator/pom.xml
index ed8a35e..cf9dcd5 100644
--- a/modules/helpers/rest-docs-generator/pom.xml
+++ b/modules/helpers/rest-docs-generator/pom.xml
@@ -47,6 +47,8 @@
</testResource>
</testResources>
<plugins>
+
+<!--
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
@@ -54,12 +56,16 @@
<skip>true</skip>
</configuration>
</plugin>
+-->
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>apt-maven-plugin</artifactId>
- <version>1.0-alpha-4</version>
+ <groupId>org.bsc.maven</groupId>
+ <artifactId>maven-processor-plugin</artifactId>
+ <version>2.0.6-redhat</version>
<configuration>
- <factory>com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory</factory>
+ <processors>
+
<processor>org.rhq.helpers.rest_docs_generator.ClassLevelProcessor</processor>
+ </processors>
+
<compilerArguments>-AtargetDirectory=${project.build.directory}/docs/xml,-Averbose=true</compilerArguments>
</configuration>
<executions>
<execution>
@@ -67,11 +73,20 @@
<phase>process-classes</phase>
<goals>
<!-- We want to process the classes in test/ -->
- <goal>test-process</goal>
+ <goal>process-test</goal>
</goals>
</execution>
</executions>
</plugin>
+ <!-- Disable annotation processors during normal compilation -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgument>-proc:none</compilerArgument>
+ </configuration>
+ </plugin>
+ <!-- now xml translate the output from above to html -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
@@ -86,10 +101,10 @@
<configuration>
<transformationSets>
<transformationSet>
- <!-- apt plugin wrote to generated-test-resources, as we ran the
test-process goal -->
- <dir>target/generated-test-resources/apt</dir>
+ <!-- target dir from -AtargetDirectory=... above -->
+ <dir>target/docs/xml</dir>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
- <outputDir>${project.build.directory}</outputDir>
+ <outputDir>${project.build.directory}/docs/html</outputDir>
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>.html</targetExtension>
@@ -131,5 +146,11 @@
<artifactId>swagger-annotations_2.9.1</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
index 421f266..3752d68 100644
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -5,8 +5,25 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Collection;
-
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.ProcessingEnvironment;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.annotation.processing.SupportedOptions;
+import javax.annotation.processing.SupportedSourceVersion;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Name;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.DeclaredType;
+import javax.lang.model.type.TypeMirror;
+import javax.lang.model.util.ElementFilter;
import javax.ws.rs.DefaultValue;
+import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.xml.parsers.DocumentBuilder;
@@ -18,10 +35,6 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.AnnotationType;
-import com.sun.mirror.type.TypeMirror;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiError;
import com.wordnik.swagger.annotations.ApiErrors;
@@ -37,26 +50,41 @@ import org.w3c.dom.Element;
* Processor for JAX-RS classes
* @author Heiko W. Rupp
*/
-class ClassLevelProcessor implements AnnotationProcessor {
- private static final String JAVAX_WS_RS = "javax.ws.rs.";
+(a)SupportedOptions({ClassLevelProcessor.TARGET_DIRECTORY,ClassLevelProcessor.VERBOSE})
+(a)SupportedSourceVersion(SourceVersion.RELEASE_6)
+@SupportedAnnotationTypes(value =
{"com.wordnik.swagger.annotations.*","javax.ws.rs.*"})
+public class ClassLevelProcessor extends AbstractProcessor {
+
+ private static final String JAVAX_WS_RS = "javax.ws.rs";
private static final String[] HTTP_METHODS =
{"GET","PUT","POST","HEAD","DELETE","OPTIONS"};
private static final String[] PARAM_SKIP_ANNOTATIONS =
{"javax.ws.rs.core.UriInfo","javax.ws.rs.core.HttpHeaders","javax.servlet.http.HttpServletRequest","javax.ws.rs.core.Request"};
private static final String API_OUT_XML = "rest-api-out.xml";
- private static final String AT_PATH = "javax.ws.rs.Path";
-
- private AnnotationProcessorEnvironment env;
- private String targetDir;
+ public static final String TARGET_DIRECTORY = "targetDirectory";
+ public static final String VERBOSE = "verbose";
Log log = LogFactory.getLog(getClass().getName());
- public ClassLevelProcessor(AnnotationProcessorEnvironment env, String targetDir) {
- this.env = env;
- this.targetDir = targetDir;
+ private String targetDirectory;
+ boolean verbose = false;
+
+ @Override
+ public synchronized void init(ProcessingEnvironment processingEnvironment) {
+ super.init(processingEnvironment);
+ Map<String,String>options = processingEnv.getOptions();
+ if (options.containsKey(TARGET_DIRECTORY)) {
+ targetDirectory = options.get(TARGET_DIRECTORY);
+ }
+ if (options.containsKey(VERBOSE))
+ verbose=true;
}
@Override
- public void process() {
+ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
roundEnv) {
+
+ // We are invoked twice, but do our work already in the first round
+ if (roundEnv.processingOver())
+ return true;
Document doc;
DocumentBuilder documentBuilder;
@@ -65,15 +93,17 @@ class ClassLevelProcessor implements AnnotationProcessor {
doc = documentBuilder.newDocument();
}
catch (Exception e) {
- e.printStackTrace();
- return;
+ log.error(e);
+ return false;
}
Element root = doc.createElement("api");
doc.appendChild(root);
- // Loop over all classes and find class level annotations we are interested in
- processClass(doc, root);
+ // Loop over all classes
+ for (javax.lang.model.element.Element t : roundEnv.getRootElements()) { //
classes to process
+ processClass(doc, root, (TypeElement)t);
+ }
try {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
@@ -81,104 +111,123 @@ class ClassLevelProcessor implements AnnotationProcessor {
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // do xml
indent
- // We initialize here for String writing to also see the result on stdout
TODO change later
+ // We initialize here for String writing to be able to also see the result on
stdout
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
-// System.out.println(xmlString);
+ if (verbose)
+ System.out.println(xmlString);
- File f;
- if (targetDir!=null) {
- File td = new File(targetDir);
- if (!td.exists())
- td.mkdirs();
+ File f ;
+ if (targetDirectory!=null) {
+ File targetDir = new File(targetDirectory);
+ if (!targetDir.exists())
+ targetDir.mkdirs();
- f = new File(td, API_OUT_XML);
+ f = new File(targetDir, API_OUT_XML);
}
else
f = new File(API_OUT_XML);
String path = f.getAbsolutePath();
- log.info("... writing to " + path);
+ String s = "..... writing to [" + path + "] ......";
+ if (verbose)
+ System.out.println(s);
+ else
+ log.info(s);
+
try {
FileWriter fw = new FileWriter(f);
fw.write(xmlString);
fw.flush();
fw.close();
} catch (IOException e) {
- e.printStackTrace(); // TODO: Customise this generated block
+ log.error(e);
}
} catch (TransformerException e) {
- e.printStackTrace(); // TODO: Customise this generated block
+ log.error(e);
}
-
+ return true;
}
- private void processClass(Document doc, Element root) {
- for (TypeDeclaration td : env.getSpecifiedTypeDeclarations()) {
- String basePath = getPathValue(td);
- if (basePath==null || basePath.isEmpty()) {
- log.debug("No @Path found on " + td.getQualifiedName() + "
- skipping");
- continue;
- }
+ private void processClass(Document doc, Element xmlRoot, TypeElement classElementIn)
{
- Element classElement = doc.createElement("class");
- String className = td.toString();
- classElement.setAttribute("name",className);
- classElement.setAttribute("path",basePath);
- Api api = td.getAnnotation(Api.class);
- if (api!=null) {
- String shortDescription = api.value();
- setOptionalAttribute(classElement, "shortDesc",
shortDescription);
- String longDescription = api.description();
- setOptionalAttribute(classElement, "description",
longDescription);
- String basePathAttr = api.basePath();
- setOptionalAttribute(classElement, "basePath",basePathAttr);
- }
+ log.debug("Looking at " +
classElementIn.getQualifiedName().toString());
+ Path basePath = classElementIn.getAnnotation(Path.class);
+ if (basePath==null || basePath.value().isEmpty()) {
+ log.debug("No @Path found on " + classElementIn.getQualifiedName()
+ " - skipping");
+ return;
+ }
- root.appendChild(classElement);
+ Element classElement = doc.createElement("class");
+ String className = classElementIn.toString();
+ classElement.setAttribute("name",className);
+ classElement.setAttribute("path",basePath.value());
+ Api api = classElementIn.getAnnotation(Api.class);
+ if (api!=null) {
+ String shortDescription = api.value();
+ setOptionalAttribute(classElement, "shortDesc", shortDescription);
+ String longDescription = api.description();
+ setOptionalAttribute(classElement, "description",
longDescription);
+ String basePathAttr = api.basePath();
+ setOptionalAttribute(classElement, "basePath",basePathAttr);
+ }
+
+ xmlRoot.appendChild(classElement);
- // Loop over the methods on this class
- processMethods(doc, td, classElement);
+ // Loop over the methods on this class
+ for (ExecutableElement m :
ElementFilter.methodsIn(classElementIn.getEnclosedElements())) {
+ processMethods(doc, m, classElement);
}
}
- private void processMethods(Document doc, TypeDeclaration td, Element classElement)
{
- for (MethodDeclaration m : td.getMethods()) {
- String path = getPathValue(m);
+ private void processMethods(Document doc, ExecutableElement td, Element classElement)
{
- Element methodElement = doc.createElement("method");
- methodElement.setAttribute("path",path);
- classElement.appendChild(methodElement);
- methodElement.setAttribute("name", m.getSimpleName());
- String httpMethod = getHttpMethod(m.getAnnotationMirrors());
- methodElement.setAttribute("method",httpMethod);
- String description = getValue(m, ApiOperation.class.getName(),
"value");
- setOptionalAttribute(methodElement,"description",description);
- String responseClass = getValue(m,ApiOperation.class.getName(),
"responseClass");
-
setOptionalAttribute(methodElement,"returnType",responseClass,m.getReturnType().toString());
+ log.debug(" Looking at method " + td.getSimpleName().toString());
- // Loop over the parameters
- processParams(doc, m, methodElement);
+ Path pathAnnotation = td.getAnnotation(Path.class);
+ if (pathAnnotation==null) {
+ return;
+ }
+ String path = pathAnnotation.value();
+
+ Element methodElement = doc.createElement("method");
+ methodElement.setAttribute("path",path);
+ classElement.appendChild(methodElement);
+ Name elementName = td.getSimpleName();
+ methodElement.setAttribute("name", elementName.toString());
+ String httpMethod = getHttpMethod(td.getAnnotationMirrors());
+ methodElement.setAttribute("method",httpMethod);
+ ApiOperation apiOperation = td.getAnnotation(ApiOperation.class);
+ if (apiOperation!=null) {
+ String description = apiOperation.value();
+ setOptionalAttribute(methodElement, "description", description);
+
+ String responseClass = !apiOperation.responseClass().equals("ok")?
apiOperation.responseClass() : null;
+
+
setOptionalAttribute(methodElement,"returnType",responseClass,td.getReturnType().toString());
+ }
- processErrors(doc,m, methodElement);
+ // Loop over the parameters
+ processParams(doc, td, methodElement);
+
+ processErrors(doc,td, methodElement);
- }
}
/**
* Process the parameters of a method.
* @param doc Xml Document to add the output to
- * @param m Method to look for parameters
+ * @param methodElement Method to look for parameters
* @param parent The parent xml element to tack the results on
*/
- private void processParams(Document doc, MethodDeclaration m, Element parent) {
- for (ParameterDeclaration p : m.getParameters()) {
- TypeMirror t = p.getType();
+ private void processParams(Document doc, javax.lang.model.element.Element
methodElement, Element parent) {
+ for (javax.lang.model.element.Element modelElement :
methodElement.getEnclosedElements()) {
+ TypeMirror t = modelElement.asType();
if (skipParamType(t))
continue;
@@ -187,9 +236,9 @@ class ClassLevelProcessor implements AnnotationProcessor {
// determine name
String name;
String paramType="-body-";
- PathParam pp = p.getAnnotation(PathParam.class);
- QueryParam qp = p.getAnnotation(QueryParam.class);
- ApiParam ap = p.getAnnotation(ApiParam.class);
+ PathParam pp = modelElement.getAnnotation(PathParam.class);
+ QueryParam qp = modelElement.getAnnotation(QueryParam.class);
+ ApiParam ap = modelElement.getAnnotation(ApiParam.class);
if (pp != null) {
name = pp.value();
paramType="Path";
@@ -200,23 +249,27 @@ class ClassLevelProcessor implements AnnotationProcessor {
}
else if (ap!=null)
name = ap.name();
- else
- name = p.getSimpleName();
+ else {
+ Name nameElement = modelElement.getSimpleName();
+ name = nameElement.toString();
+ }
- element.setAttribute("name",name);
+ element.setAttribute("name", name);
element.setAttribute("paramType",paramType);
- String description = getValue(p, ApiParam.class.getName(),
"value");
- setOptionalAttribute(element, "description", description);
- String required = getValue(p, ApiParam.class.getName(),
"required");
- if (isPathParam(p)) // PathParams are always required
- required="true";
-
-
setOptionalAttribute(element,"required",required,"false");
- String allowedValues = getValue(p, ApiParam.class.getName(),
"allowableValues");
-
setOptionalAttribute(element,"allowableValues",allowedValues,"all");
-
+ ApiParam apiParam = modelElement.getAnnotation(ApiParam.class);
+ if (apiParam!=null) {
+ String description = apiParam.value();
+ setOptionalAttribute(element, "description", description);
+ String required = String.valueOf(apiParam.required());
+ if (isPathParam(modelElement)) // PathParams are always required
+ required="true";
+
+ setOptionalAttribute(element, "required", required,
"false");
+ String allowedValues = apiParam.allowableValues();
+ setOptionalAttribute(element, "allowableValues", allowedValues,
"all");
+ }
String defaultValue;
- DefaultValue dva = p.getAnnotation(DefaultValue.class);
+ DefaultValue dva = modelElement.getAnnotation(DefaultValue.class);
if (dva!=null)
defaultValue = dva.value();
else if (ap!=null)
@@ -235,13 +288,13 @@ class ClassLevelProcessor implements AnnotationProcessor {
/**
* Look at the ApiError(s) annotations and populate the output
* @param doc XML Document to add
- * @param m MethodDeclaration to look at
+ * @param methodElement MethodDeclaration to look at
* @param parent The parent xml element to attach the result to
*/
- private void processErrors(Document doc, MethodDeclaration m, Element parent) {
- ApiError ae = m.getAnnotation(ApiError.class);
+ private void processErrors(Document doc, javax.lang.model.element.Element
methodElement, Element parent) {
+ ApiError ae = methodElement.getAnnotation(ApiError.class);
processError(doc,ae,parent);
- ApiErrors aes = m.getAnnotation(ApiErrors.class);
+ ApiErrors aes = methodElement.getAnnotation(ApiErrors.class);
if (aes != null) {
for (ApiError ae2 : aes.value()) {
processError(doc,ae2,parent);
@@ -282,85 +335,29 @@ class ClassLevelProcessor implements AnnotationProcessor {
return skip;
}
- /**
- * Get the value of the @Path annotation. This is stripped from leading and trailing
slashed
- * @param m Declaration to look at
- * @return Path with leading and trailing slashes stripped or null on error
- */
- private String getPathValue(Declaration m) {
- String path = getValue(m,AT_PATH,"value");
- if (path==null)
- return null;
-
- if (path.startsWith("/"))
- path = path.substring(1);
- if (path.endsWith("/"))
- path = path.substring(0,path.length()-1);
- return path;
- }
-
-
- /**
- * Get the value of a certain annotation on a declaration.
- * Annotation is e.g. of the form
<pre>(a)com.acme.Annot(value"xyz")</pre>.
- * @param declaration The declaration of class/method/param....
- * @param annotationName Fully qualified name of the annotation - com.acme.Annot in
above example
- * @param param The param of the annotation to query - value in above example. The
parameter name may end in ().
- * If parens are not provided, they will be attached internally.
- * @return The value of the param - or null it not found
- */
- private String getValue(Declaration declaration, String annotationName, String param)
{
-
- if (!param.endsWith("()")) {
- param = param+"()";
- }
-
- Collection<AnnotationMirror> mirrors = declaration.getAnnotationMirrors();
-
- for (AnnotationMirror am : mirrors) {
- AnnotationType annotationType = am.getAnnotationType();
- AnnotationTypeDeclaration annotationTypeDeclaration =
annotationType.getDeclaration();
- String qName = annotationTypeDeclaration.getQualifiedName();
- if (qName.equals(annotationName)) {
- // found the annotation, now get the parameter value
- for (AnnotationTypeElementDeclaration decl :
am.getElementValues().keySet()) {
- if (decl.toString().equals(param)) {
- String s = am.getElementValues().get(decl).toString();
- // remove quotes we get passed in
- if (s.startsWith("\""))
- s = s.substring(1);
- if (s.endsWith("\""))
- s = s.substring(0,s.length()-1);
- return s;
- }
- }
- }
- }
- return null;
- }
-
- private boolean isPathParam(Declaration decl) {
+ private boolean isPathParam(javax.lang.model.element.Element decl) {
return hasAnnotation(decl,"javax.ws.rs.PathParam");
}
/**
- * Check if a certain annoation is present or not
+ * Check if a certain annotation is present or not
* @param declaration Declaration to look at
* @param annotationName Name of the annotation
* @return true if found, false otherwise
*/
- private boolean hasAnnotation(Declaration declaration, String annotationName) {
+ private boolean hasAnnotation(javax.lang.model.element.Element declaration, String
annotationName) {
boolean found = false;
- Collection<AnnotationMirror> mirrors = declaration.getAnnotationMirrors();
+ Collection<? extends AnnotationMirror> mirrors =
declaration.getAnnotationMirrors();
for (AnnotationMirror am : mirrors) {
- AnnotationType annotationType = am.getAnnotationType();
- AnnotationTypeDeclaration annotationTypeDeclaration =
annotationType.getDeclaration();
- String qName = annotationTypeDeclaration.getQualifiedName();
+ DeclaredType annotationType = am.getAnnotationType();
+ javax.lang.model.element.Element annotationTypeDeclaration =
annotationType.asElement();
+ String qName = annotationTypeDeclaration.getSimpleName().toString();
+ log.debug("AM: " + am + " , " + qName);
if (qName.equals(annotationName)) {
found = true;
break;
@@ -376,15 +373,16 @@ class ClassLevelProcessor implements AnnotationProcessor {
* @param annotationMirrors mirrors for the method
* @return The http method string or null if it can not be determined
*/
- private String getHttpMethod(Collection<AnnotationMirror> annotationMirrors) {
+ private String getHttpMethod(Collection<? extends AnnotationMirror>
annotationMirrors) {
for (AnnotationMirror am : annotationMirrors) {
- String qName = am.getAnnotationType().getDeclaration().getQualifiedName();
- if (qName.startsWith(JAVAX_WS_RS)) {
- qName = qName.substring(JAVAX_WS_RS.length());
-// System.out.println(" Checking qname " + qName);
+ javax.lang.model.element.Element element =
am.getAnnotationType().asElement();
+ String pName = element.getEnclosingElement().toString();
+ String cName = element.getSimpleName().toString();
+ if (pName.startsWith(JAVAX_WS_RS)) {
for (String name : HTTP_METHODS) {
- if (qName.equals(name))
+ if (cName.equals(name)) {
return name;
+ }
}
}
}
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
deleted file mode 100644
index 244e2a1..0000000
---
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.rhq.helpers.rest_docs_generator;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-
-import org.rhq.helpers.rest_docs_generator.ClassLevelProcessor;
-
-/**
- * Annotation Processor Factory that returns a processor for types we care,
- * which are java.ws.rs.* and com.wordnik.swagger.annotations.*
- * @author Heiko W. Rupp
- */
-public class SwaggerAptFactory implements AnnotationProcessorFactory {
-
- @Override
- public Collection<String> supportedOptions() {
- return Collections.emptySet(); // No options for the moment
- }
-
- @Override
- public Collection<String> supportedAnnotationTypes() {
- Set<String> types = new HashSet<String>();
- types.add("com.wordnik.swagger.annotations.*");
- types.add("javax.ws.rs.*");
- return types;
- }
-
- @Override
- public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration>
annotationTypeDeclarations,
- AnnotationProcessorEnvironment env) {
-
- Map<String,String> options = env.getOptions();
- String targetDir = null;
- if (options.containsKey("-d"))
- targetDir = options.get("-d");
-
- AnnotationProcessor ap;
- if (annotationTypeDeclarations.isEmpty())
- ap = AnnotationProcessors.NO_OP;
- else
- ap = new ClassLevelProcessor(env, targetDir);
- return ap;
- }
-}
diff --git
a/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
b/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
deleted file mode 100644
index b351fe4..0000000
---
a/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
+++ /dev/null
@@ -1 +0,0 @@
-com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory
\ No newline at end of file
diff --git
a/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/javax.annotation.processing.Processor
b/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/javax.annotation.processing.Processor
new file mode 100644
index 0000000..942c648
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/javax.annotation.processing.Processor
@@ -0,0 +1 @@
+org.rhq.helpers.rest_docs_generator.ClassLevelProcessor
\ No newline at end of file
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
deleted file mode 100644
index e435524..0000000
---
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.wordnik.swagger.test.jaxrs.apt;
-
-/**
- * Just a sample bean
- * @author Heiko W. Rupp
- */
-public class FooBean {
-
- int id;
- String name;
- double value;
-
- public FooBean(int id, String name, double value) {
- this.id = id;
- this.name = name;
- this.value = value;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public double getValue() {
- return value;
- }
-
- public void setValue(double value) {
- this.value = value;
- }
-}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
deleted file mode 100644
index f2f9d0e..0000000
---
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.wordnik.swagger.test.jaxrs.apt;
-
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-
-import com.wordnik.swagger.annotations.Api;
-import com.wordnik.swagger.annotations.ApiOperation;
-import com.wordnik.swagger.annotations.ApiParam;
-
-/**
- * // TODO: Document this
- * @author Heiko W. Rupp
- */
-@Api(value="My Foobar api", description = "This api does foo and bar and
baz and is uber cool")
-@Path("/foo")
-public interface MyBean {
-
- @GET
- @Path("/one")
- @ApiOperation("This is the first method")
- public String methodOne();
-
- @PUT
- @Path("/two/{pp}")
- @ApiOperation("This is the second method")
- public void methodTwo(
- @ApiParam(value="The customer id") @PathParam("pp")
@DefaultValue("42") int pp,
- @ApiParam(value="Hulla",required = false)
@QueryParam("qp") String qp);
-}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
deleted file mode 100644
index ee28f9a..0000000
---
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.wordnik.swagger.test.jaxrs.apt;
-
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.Response;
-
-import com.wordnik.swagger.annotations.ApiError;
-import com.wordnik.swagger.annotations.ApiParam;
-
-/**
- * Just an example class
- * @author Heiko W. Rupp
- */
-@Path("bla")
-public interface SecondOne {
-
- @Path("bla")
- @PUT
- @ApiError(code=404,reason = "Resource with the passed key not found")
- public Response putSomeData(
- @ApiParam("The primary key") @PathParam("id")int id,
- @ApiParam("The data to put") FooBean bean);
-
-}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
deleted file mode 100644
index ee0cb24..0000000
---
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.wordnik.swagger.test.jaxrs.apt;
-
-import javax.ejb.Local;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-
-import com.wordnik.swagger.annotations.Api;
-import com.wordnik.swagger.annotations.ApiError;
-import com.wordnik.swagger.annotations.ApiErrors;
-import com.wordnik.swagger.annotations.ApiOperation;
-import com.wordnik.swagger.annotations.ApiResponse;
-
-/**
- * Another example of @Api* usage
- * @author Heiko W. Rupp
- */
-@Api(value = "My important business EJB", basePath =
"http://localhost:9999/other_path")
-@Local
-@Produces({"application/json","application/xml","text/html"})
-@Path("/biz-ejb")
-public interface SomeEjbInterface {
-
- @ApiOperation(value="Gives the current status", responseClass =
"com.acme.MyResponse")
- @ApiErrors({
- @ApiError(code = 404,reason = "If there is no resource or group with the
passed id "),
- @ApiError(code = 409,reason =" Resource type does not match the group
one")
- })
- @GET
- @Path("/")
- Response getStatus(@Context HttpHeaders httpHeaders);
-}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/FooBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/FooBean.java
new file mode 100644
index 0000000..f6b0964
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/FooBean.java
@@ -0,0 +1,61 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.helpers.rest_docs_generator.test;
+
+/**
+ * Just a sample bean
+ * @author Heiko W. Rupp
+ */
+public class FooBean {
+
+ int id;
+ String name;
+ double value;
+
+ public FooBean(int id, String name, double value) {
+ this.id = id;
+ this.name = name;
+ this.value = value;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getValue() {
+ return value;
+ }
+
+ public void setValue(double value) {
+ this.value = value;
+ }
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/MyBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/MyBean.java
new file mode 100644
index 0000000..69d3b52
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/MyBean.java
@@ -0,0 +1,52 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.helpers.rest_docs_generator.test;
+
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+@Api(value="My Foobar api", description = "This api does foo and bar and
baz and is uber cool")
+@Path("/foo")
+public interface MyBean {
+
+ @GET
+ @Path("/one")
+ @ApiOperation("This is the first method")
+ public String methodOne();
+
+ @PUT
+ @Path("/two/{pp}")
+ @ApiOperation("This is the second method")
+ public void methodTwo(
+ @ApiParam(value="The customer id") @PathParam("pp")
@DefaultValue("42") int pp,
+ @ApiParam(value="Hulla",required = false)
@QueryParam("qp") String qp);
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
new file mode 100644
index 0000000..6068944
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SecondOne.java
@@ -0,0 +1,46 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.helpers.rest_docs_generator.test;
+
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiParam;
+
+import org.rhq.helpers.rest_docs_generator.test.FooBean;
+
+/**
+ * Just an example class
+ * @author Heiko W. Rupp
+ */
+@Path("bla")
+public interface SecondOne {
+
+ @Path("bla")
+ @PUT
+ @ApiError(code=404,reason = "Resource with the passed key not found")
+ public Response putSomeData(
+ @ApiParam("The primary key") @PathParam("id")int id,
+ @ApiParam("The data to put") FooBean bean);
+
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SomeEjbInterface.java
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SomeEjbInterface.java
new file mode 100644
index 0000000..cd9f3bf
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org/rhq/helpers/rest_docs_generator/test/SomeEjbInterface.java
@@ -0,0 +1,54 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.helpers.rest_docs_generator.test;
+
+import javax.ejb.Local;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiErrors;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponse;
+
+/**
+ * Another example of @Api* usage
+ * @author Heiko W. Rupp
+ */
+@Api(value = "My important business EJB", basePath =
"http://localhost:9999/other_path")
+@Local
+@Produces({"application/json","application/xml","text/html"})
+@Path("/biz-ejb")
+public interface SomeEjbInterface {
+
+ @ApiOperation(value="Gives the current status", responseClass =
"com.acme.MyResponse")
+ @ApiErrors({
+ @ApiError(code = 404,reason = "If there is no resource or group with the
passed id "),
+ @ApiError(code = 409,reason =" Resource type does not match the group
one")
+ })
+ @GET
+ @Path("/")
+ Response getStatus(@Context HttpHeaders httpHeaders);
+}
commit 690097d0417fd15a30d906c93b71dd3d90a7acac
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Jun 4 18:35:09 2012 -0400
upgrade enforcer plugin from 1.0-beta-1 to 1.1
diff --git a/pom.xml b/pom.xml
index a660fa2..b023384 100644
--- a/pom.xml
+++ b/pom.xml
@@ -618,7 +618,7 @@
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
- <version>1.0-beta-1</version>
+ <version>1.1</version>
</plugin>
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
commit 09c6c5cf29c044ddb4e21d71c2ae3aeb56683ecd
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Jun 4 17:13:55 2012 -0400
[Bug 826094 - [installer] DB user password is logged to the Server log in cleartext]
Omit the db password properyy from the raw settings log message. Note that
the raw values are subject to change by the installer, so its actually the
latter, submitted value log message that shows what is really being applied.
diff --git
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java
index 1ee1741..2af8f15 100644
---
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java
+++
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java
@@ -147,20 +147,20 @@ public class ConfigurationBean {
public void initConfiguration() {
if (configuration == null) {
- Properties properties = serverInfo.getServerProperties();
+ Properties properties = serverInfo.getServerProperties();
List<PropertyItem> itemDefs = new
ServerProperties().getPropertyItems();
-
- if ((serverInfo.getProduct() == ServerInformation.Product.JON) &&
- !serverInfo.isUnsupportedJonFeaturesEnabled()) {
+
+ if ((serverInfo.getProduct() == ServerInformation.Product.JON)
+ && !serverInfo.isUnsupportedJonFeaturesEnabled()) {
LOG.debug("Hiding the embedded agent props and the unsupported DB
types...");
for (PropertyItem itemDef : itemDefs) {
if
(itemDef.getPropertyName().startsWith(ServerProperties.PREFIX_PROP_EMBEDDED_AGENT)) {
itemDef.setHidden(true);
}
-
+
if
(itemDef.getPropertyName().equals(ServerProperties.PROP_DATABASE_TYPE)) {
List<SelectItem> options = itemDef.getOptions();
- for (Iterator<SelectItem> iterator = options.iterator();
iterator.hasNext(); ) {
+ for (Iterator<SelectItem> iterator = options.iterator();
iterator.hasNext();) {
SelectItem option = iterator.next();
String databaseType = (String) option.getValue();
if (!JON_SUPPORTED_DATABASE_TYPES.contains(databaseType)) {
@@ -170,7 +170,7 @@ public class ConfigurationBean {
}
}
}
-
+
configuration = new ArrayList<PropertyItemWithValue>();
for (PropertyItem itemDef : itemDefs) {
@@ -570,7 +570,10 @@ public class ConfigurationBean {
}
public StartPageResults save() {
- LOG.info("Installer raw values: " + configuration);
+ // log the raw values but don't write out the potentially unobfuscated db
password
+ Properties props = getConfigurationAsProperties(configuration);
+ props.remove(ServerProperties.PROP_DATABASE_PASSWORD);
+ LOG.info("Installer: raw values (these may be updated by the installer, see
submitted values below): " + props);
// if auto-install is enabled, the db password will be encrypted - decrypt it
internally and we'll re-encrypt later
if (isAutoinstallEnabled()) {
@@ -708,8 +711,8 @@ public class ConfigurationBean {
// Ensure server info has been set
if ((null == haServer) || (null == haServer.getName()) ||
"".equals(haServer.getName().trim())) {
- lastError = I18Nmsg.getMsg(InstallerI18NResourceKeys.INVALID_STRING, I18Nmsg
- .getMsg(InstallerI18NResourceKeys.PROP_HIGH_AVAILABILITY_NAME));
+ lastError = I18Nmsg.getMsg(InstallerI18NResourceKeys.INVALID_STRING,
+ I18Nmsg.getMsg(InstallerI18NResourceKeys.PROP_HIGH_AVAILABILITY_NAME));
return StartPageResults.ERROR;
}
@@ -720,8 +723,8 @@ public class ConfigurationBean {
} catch (Exception e) {
// there is one special property - the connector bind port - that is
allowed to be empty
// ignore this error if we are looking at that property and its
empty; otherwise, this is an error
- if (!(newValue.getItemDefinition().getPropertyName().equals(
- ServerProperties.PROP_CONNECTOR_BIND_PORT) &&
newValue.getValue().length() == 0)) {
+ if (!(newValue.getItemDefinition().getPropertyName()
+ .equals(ServerProperties.PROP_CONNECTOR_BIND_PORT) &&
newValue.getValue().length() == 0)) {
lastError =
I18Nmsg.getMsg(InstallerI18NResourceKeys.INVALID_NUMBER, newValue
.getItemDefinition().getPropertyLabel(),
newValue.getValue());
return StartPageResults.ERROR;
commit 3d0350d85103fdd8c9a1e05c7f45f88b4e948e0e
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Jun 4 16:30:38 2012 -0400
[BZ 822299] adding serial version uid and javadocs
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
index 709f5a4..5cb53ac 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
@@ -24,10 +24,16 @@ package org.rhq.core.domain.resource;
import javax.ejb.ApplicationException;
/**
+ * This exception should be throw when invoking an agent service fails because the agent
is
+ * down or otherwise unreachable. This class is defined in the in the domain module
instead
+ * of the server/jar module because it needs to be accessible by the UI.
+ *
* @author John Sanda
*/
@ApplicationException(rollback = true)
public class CannotConnectToAgentException extends RuntimeException {
+ private static final long serialVersionUID = -1L;
+
public CannotConnectToAgentException() {
super();
}
commit 9c406d090c83d0e2ae265366722c591889fa1c33
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Jun 4 15:58:10 2012 -0400
[BZ 822299] Display better error message and no exception when agent is unreachable
This commit introduces the class CannotConnectToAgentException which is
a wrapper around the CannotConnectException that gets thrown when a
request is sent to an agent that is down or otherwise unreachable.
Previously we just propagated the exception up the call stack. In the
UI, we were handling as a generic RuntimeException and also showing the
exception stack trace in the message center. With this commit we no
longer log the exception in the UI and instead just log a more
informative warning message. This change effects manual import, resource
create, and resource delete.
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index fa4eee4..64ffe1c 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -66,6 +66,13 @@
<!-- NOTE: The version is defined in the root POM's dependencyManagement
section. -->
</dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-ejb3x</artifactId>
+ <!-- NOTE: The version is defined in the root POM's dependencyManagement
section. -->
+ <scope>provided</scope> <!-- by JBossAS -->
+ </dependency>
+
<!-- needed for hibernate Instrument task
<dependency>
<groupId>javassist</groupId>
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
new file mode 100644
index 0000000..709f5a4
--- /dev/null
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/CannotConnectToAgentException.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * * RHQ Management Platform
+ * * Copyright (C) 2005-2012 Red Hat, Inc.
+ * * All rights reserved.
+ * *
+ * * This program is free software; you can redistribute it and/or modify
+ * * it under the terms of the GNU General Public License as published by
+ * * the Free Software Foundation version 2 of the License.
+ * *
+ * * This program is distributed in the hope that it will be useful,
+ * * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * * GNU General Public License for more details.
+ * *
+ * * You should have received a copy of the GNU General Public License
+ * * along with this program; if not, write to the Free Software
+ * * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+package org.rhq.core.domain.resource;
+
+import javax.ejb.ApplicationException;
+
+/**
+ * @author John Sanda
+ */
+@ApplicationException(rollback = true)
+public class CannotConnectToAgentException extends RuntimeException {
+ public CannotConnectToAgentException() {
+ super();
+ }
+
+ public CannotConnectToAgentException(String message) {
+ super(message);
+ }
+
+ public CannotConnectToAgentException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public CannotConnectToAgentException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
index 53c34f9..001eb3c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceCompositeSearchView.java
@@ -35,6 +35,7 @@ import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.DeleteResourceHistory;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
@@ -111,7 +112,12 @@ public class ResourceCompositeSearchView extends ResourceSearchView
{
resourceManager.deleteResources(resourceIds, new
AsyncCallback<List<DeleteResourceHistory>>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(),
caught);
+ if (caught instanceof CannotConnectToAgentException) {
+ CoreGUI.getMessageCenter().notify(new
Message(MSG.view_inventory_resources_deleteFailed2(),
+ Severity.Warning));
+ } else {
+
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(),
caught);
+ }
}
public void onSuccess(List<DeleteResourceHistory> result) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryCreateWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryCreateWizard.java
index aeb53ce..6477ad6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryCreateWizard.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryCreateWizard.java
@@ -29,6 +29,7 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
import org.rhq.core.domain.content.PackageType;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -131,7 +132,13 @@ public class ResourceFactoryCreateWizard extends
AbstractResourceFactoryWizard {
deployTimeConfiguration, packageVersionId,
this.getNewResourceCreateTimeout(),
new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.widget_resourceFactoryWizard_execute2(),
caught);
+ if (caught instanceof CannotConnectToAgentException) {
+ CoreGUI.getMessageCenter().notify(new
Message(MSG.widget_resourceFactoryWizard_execute2(),
+ Message.Severity.Warning));
+ } else {
+
CoreGUI.getErrorHandler().handleError(MSG.widget_resourceFactoryWizard_execute3(),
caught);
+ }
+
getView().closeDialog();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryImportWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryImportWizard.java
index 721970b..da2626b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryImportWizard.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/factory/ResourceFactoryImportWizard.java
@@ -27,6 +27,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -89,7 +90,13 @@ public class ResourceFactoryImportWizard extends
AbstractResourceFactoryWizard {
GWTServiceLookup.getResourceService(300000).manuallyAddResource(createTypeId,
parentResourceId,
newConfiguration, new AsyncCallback<Resource>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.widget_resourceFactoryWizard_importFailure(),
caught);
+ if (caught instanceof CannotConnectToAgentException) {
+ CoreGUI.getMessageCenter().notify(new Message(
+ MSG.widget_resourceFactoryWizard_importFailure2(),
Message.Severity.Warning));
+ } else {
+
CoreGUI.getErrorHandler().handleError(MSG.widget_resourceFactoryWizard_importFailure(),
caught);
+ }
+
getView().closeDialog();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
index 1cf8d06..17ccd78 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceGWTServiceImpl.java
@@ -33,6 +33,7 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.CreateResourceHistory;
import org.rhq.core.domain.resource.DeleteResourceHistory;
import org.rhq.core.domain.resource.InventoryStatus;
@@ -301,6 +302,9 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl
implements Re
newResourceTypeId, newResourceName, pluginConfig,
deploymentTimeConfiguration, packageVersionId,
timeout);
} catch (Throwable t) {
+ if (t instanceof CannotConnectToAgentException) {
+ throw (CannotConnectToAgentException) t;
+ }
throw getExceptionToThrowToClient(t);
}
}
@@ -310,6 +314,9 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl
implements Re
return
SerialUtility.prepare(resourceFactoryManager.deleteResources(getSessionSubject(),
resourceIds),
"ResourceService.deleteResources");
} catch (Throwable t) {
+ if (t instanceof CannotConnectToAgentException) {
+ throw (CannotConnectToAgentException) t;
+ }
throw getExceptionToThrowToClient(t);
}
}
@@ -411,6 +418,9 @@ public class ResourceGWTServiceImpl extends AbstractGWTServiceImpl
implements Re
pluginConfiguration);
return SerialUtility.prepare(result,
"ResourceService.manuallyAddResource");
} catch (Throwable t) {
+ if (t instanceof CannotConnectToAgentException) {
+ throw (CannotConnectToAgentException) t;
+ }
throw getExceptionToThrowToClient(t);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index d1a9b90..03584c9 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1539,7 +1539,8 @@ view_inventory_platforms = Platforms
view_inventory_problemGroups = Problem Groups
view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
-view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_deleteFailed = Failed to delete the selected resources.
+view_inventory_resources_deleteFailed2 = Failed to delete the selected resources. Cannot
connect to the agent. This may indicate that the agent is down.
view_inventory_resources_deleteSuccessful = A request to perform the resource deletion
has been submitted successfully to the agent(s).
view_inventory_resources_disableConfirm = Are you sure you want to disable the selected
resources? While disabled availabilities reported from the agent will be ignored.
Disabling can be useful for resources that are expected to be down as part of normal
operations or maintenance.
view_inventory_resources_disableFailed = Failed to disable the selected resources.
@@ -2007,10 +2008,12 @@ widget_resourceFactoryWizard_createWizardTitle = Create New
Resource of Type [{0
widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
widget_resourceFactoryWizard_editConfigStepName = Deployment Options
widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
-widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
+widget_resourceFactoryWizard_execute3 = Failed to create a new resource
widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 88b9e87..91abd98 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -2025,10 +2025,11 @@ widget_resourceFactoryWizard_createWizardTitle = Vytvořit nový
zdroj typu [{0}
widget_resourceFactoryWizard_createWizardWindowTitle = Průvodce vytvoření zdroje
widget_resourceFactoryWizard_editConfigStepName = Volby nasazení
widget_resourceFactoryWizard_execute1 = Nepodařilo se vytvořit nový zdroj - chybí verze
balíku
-widget_resourceFactoryWizard_execute2 = Nepodařilo se vytvořit nový zdroj
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion = Nepodařilo se vymazat verzi balíku
widget_resourceFactoryWizard_failedToGetType = Nepodařilo se zjistit typ dat dat daného
zdroje.
widget_resourceFactoryWizard_importFailure = Nezdařilo se manuálně importovat zdroj
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted = Požadavek na import nového zdroje typu
[{0}] byl vložen.
widget_resourceFactoryWizard_importWizardTitle = Import zdroje typu [{0}]
widget_resourceFactoryWizard_importWizardWindowTitle = Průvodce importu zdroje
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index cfde9eb..16c7629 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1768,10 +1768,11 @@ widget_resourceFactoryWizard_createWizardTitle = Neue Ressource
vom Typ [{0}] an
widget_resourceFactoryWizard_createWizardWindowTitle = Assistent zum Erzeugen von
Ressourcen
widget_resourceFactoryWizard_editConfigStepName = Optionen für das Deployment
widget_resourceFactoryWizard_execute1 = Konnte keine neue Ressource anlegen - es wurde
keien Paketversion angegeben
-widget_resourceFactoryWizard_execute2 = Konnte keine neue Ressource anlegen
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
##widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
##widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for
new resource
widget_resourceFactoryWizard_importFailure = Das manuelle importieren der Ressource ist
fehlgeschlagen
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted = Ein Auftrag, eine neue Ressource vom Typ
[{0}] wurde abgeschickt
widget_resourceFactoryWizard_importWizardTitle = Importieren von Ressourcen des Typs
[{0}]
widget_resourceFactoryWizard_importWizardWindowTitle = Wizard zum Import von Ressourcen
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index b5bc116..6ee43cb 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1996,10 +1996,11 @@ widget_resourceFactoryWizard_createWizardWindowTitle = リソース作成ウィ
widget_resourceFactoryWizard_editConfigStepName = 編集の構成
widget_resourceFactoryWizard_editConfigStep_nothingToDo = このリソースのために定義が必要な構成は存在しません
widget_resourceFactoryWizard_execute1 = 新規リソースの作成に失敗しました - パッケージバージョンが存在しません
-widget_resourceFactoryWizard_execute2 = 新規リソースの作成に失敗しました
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion = リソース作成のキャンセル中にパッケージバージョンの削除に失敗しました
widget_resourceFactoryWizard_failedToGetType = 新規リソースのパッケージタイプの取得に失敗しました
widget_resourceFactoryWizard_importFailure = 手動でのリソースのインポートに失敗しました
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted = 新規リソースタイプ [{0}] のインポートリクエストが送信されました
widget_resourceFactoryWizard_importWizardTitle = リソースタイプ [{0}] をインポート
widget_resourceFactoryWizard_importWizardWindowTitle = リソースインポートウィザード
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 91345f5..4c91090 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -2109,10 +2109,11 @@ widget_resourceFactoryWizard_createWizardTitle = Criar novo
recurso do tipo [{0}
widget_resourceFactoryWizard_createWizardWindowTitle = Assistente para Cria\u00E7\u00E3o
de Recurso
widget_resourceFactoryWizard_editConfigStepName = Op��es de implanta��o
widget_resourceFactoryWizard_execute1 = Falha ao criar novo recurso - vers\u00E3o do
pacote inexistente
-widget_resourceFactoryWizard_execute2 = Falha ao criar novo recurso
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion = Falha ao excluir a vers\u00E3o do
pacote durante o cancelamento da cria\u00E7\u00E3o do recurso
widget_resourceFactoryWizard_failedToGetType = Falha ao recuperar o tipo de pacote para o
novo recurso
widget_resourceFactoryWizard_importFailure = Falha ao importar recursos manualmente
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted = Uma requisi\u00E7\u00E3o para importar um
novo recurso do tipo [{0}] foi submetida
widget_resourceFactoryWizard_importWizardTitle = Importar Recursos do Tipo [{0}]
widget_resourceFactoryWizard_importWizardWindowTitle = Assistente para
Importa\u00E7\u00E3o de Recurso
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 361f831..f707492 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -1994,10 +1994,11 @@
#widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
#widget_resourceFactoryWizard_editConfigStepName = Deployment Options
#widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
-#widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
#widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
#widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for
new resource
#widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
#widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of
type [{0}] has been submitted
#widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
#widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 08e15fd..6f893da 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1994,10 +1994,11 @@ widget_resourceFactoryWizard_createWizardTitle =
\u521b\u5efa\u7c7b\u578b[{0}]\u
widget_resourceFactoryWizard_createWizardWindowTitle =
\u8d44\u6e90\u521b\u5efa\u5411\u5bfc
##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
widget_resourceFactoryWizard_execute1 = \u521b\u5efa\u8d44\u6e90\u5931\u8d25 -
\u6ca1\u6709\u5305\u7248\u672c
-widget_resourceFactoryWizard_execute2 = \u521b\u5efa\u8d44\u6e90\u5931\u8d25
+#widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_failedToDeleteVersion =
\u53d6\u6d88\u521b\u5efa\u8d44\u6e90\u65f6\u65e0\u6cd5\u5220\u9664\u5305\u7684\u7248\u672c
widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
widget_resourceFactoryWizard_importFailure =
\u624b\u5de5\u5bfc\u5165\u8d44\u6e90\u5931\u8d25
+#widget_resourceFactoryWizard_importFailure2 = Failed to manually import resource. Cannot
connect to the agent. This may indicate that the agent is down.
widget_resourceFactoryWizard_importSubmitted =
\u5bfc\u5165\u7c7b\u578b[{0}]\u7684\u65b0\u8d44\u6e90\u8bf7\u6c42\u5df2\u88ab\u63d0\u4ea4
widget_resourceFactoryWizard_importWizardTitle =
\u5bfc\u5165\u7c7b\u578b[{0}]\u7684\u8d44\u6e90
widget_resourceFactoryWizard_importWizardWindowTitle =
\u5bfc\u5165\u8d44\u6e90\u5411\u5bfc
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
index 49e51f4..2511d28 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
@@ -51,6 +51,8 @@ import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
+import org.jboss.remoting.CannotConnectException;
+
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.agent.discovery.DiscoveryAgentService;
import org.rhq.core.clientapi.agent.discovery.InvalidPluginConfigurationClientException;
@@ -66,6 +68,7 @@ import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.discovery.MergeResourceResponse;
import org.rhq.core.domain.discovery.ResourceSyncInfo;
import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.ProductVersion;
import org.rhq.core.domain.resource.Resource;
@@ -456,6 +459,9 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
DiscoveryAgentService discoveryAgentService =
agentClient.getDiscoveryAgentService();
mergeResourceResponse =
discoveryAgentService.manuallyAddResource(resourceType,
parentResourceId, pluginConfiguration, user.getId());
+ } catch (CannotConnectException e) {
+ throw new CannotConnectToAgentException("Error adding [" +
resourceType + "] Resource to inventory as " +
+ "a child of " + parentResource + " - cause: " +
e.getMessage(), e);
} catch (RuntimeException e) {
throw new RuntimeException("Error adding [" + resourceType
+ "] Resource to inventory as a child of " + parentResource +
" - cause: " + e, e);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
index 8a9257f..9edd5d9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
@@ -38,6 +38,8 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.remoting.CannotConnectException;
+
import org.rhq.core.clientapi.agent.inventory.CreateResourceRequest;
import org.rhq.core.clientapi.agent.inventory.CreateResourceResponse;
import org.rhq.core.clientapi.agent.inventory.DeleteResourceRequest;
@@ -53,6 +55,7 @@ import org.rhq.core.domain.content.PackageVersion;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.resource.CannotConnectToAgentException;
import org.rhq.core.domain.resource.CreateResourceHistory;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.domain.resource.DeleteResourceHistory;
@@ -636,6 +639,16 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
} catch (NoResultException nre) {
return null;
//eat the exception. Some of the queries return no results if no package yet
exists which is fine.
+ } catch(CannotConnectException e) {
+ log.error("Error while sending create resource request to agent
service", e);
+
+ // Submit the error as a failure response
+ String errorMessage = ThrowableUtil.getAllMessages(e);
+ CreateResourceResponse response = new
CreateResourceResponse(persistedHistory.getId(), null, null,
+ CreateResourceStatus.FAILURE, errorMessage, null);
+ resourceFactoryManager.completeCreateResource(response);
+
+ throw new CannotConnectToAgentException("Error while sending create
resource request to agent service", e);
} catch (Exception e) {
log.error("Error while sending create resource request to agent
service", e);
@@ -686,6 +699,16 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
resourceFactoryAgentService.deleteResource(request);
return persistedHistory;
+ } catch(CannotConnectException e) {
+ log.error("Error while sending delete resource request to agent
service", e);
+
+ // Submit the error as a failure response
+ String errorMessage = ThrowableUtil.getAllMessages(e);
+ DeleteResourceResponse response = new
DeleteResourceResponse(persistedHistory.getId(),
+ DeleteResourceStatus.FAILURE, errorMessage);
+ resourceFactoryManager.completeDeleteResourceRequest(response);
+
+ throw new CannotConnectToAgentException("Error while sending delete
resource request to agent service", e);
} catch (Exception e) {
log.error("Error while sending delete resource request to agent
service", e);
commit 5bd129d899da55e6f795ff91041d73b6ee300f93
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 4 15:46:23 2012 -0400
[BZ 810124] fix the failover list test so it doesn't wait too long for each port
test to fail.
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
index f471929..cc761e4 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
@@ -36,6 +36,7 @@ import java.io.StreamTokenizer;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Method;
import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URL;
import java.net.UnknownHostException;
@@ -2691,17 +2692,33 @@ public class AgentMain {
for (int i = 0; i < failoverList.size(); i++) {
ServerEntry server = failoverList.get(i);
Socket socket = null;
+ boolean connectError = true; // assume a failure will occur
try {
LOG.debug(AgentI18NResourceKeys.TEST_FAILOVER_LIST_ENTRY,
server.address, server.port);
- socket = new Socket(server.address, server.port);
+ InetAddress inetAddress = InetAddress.getByName(server.address);
+ InetSocketAddress socketAddress = new InetSocketAddress(inetAddress,
server.port);
+ socket = new Socket();
+ socket.setSoTimeout(5000);
+ socket.connect(socketAddress, 5000);
+ connectError = false; // we successfully connected to the server
} catch (UnknownHostException e) {
LOG.error(AgentI18NResourceKeys.FAILOVER_LIST_UNKNOWN_HOST,
server.address);
- } catch (IOException e) {
+ } catch (Exception e) {
+ if (socket != null) {
+ try {
+ socket.close(); // just clean up our last socket connect
attempt
+ } catch (Exception ignore) {
+ }
+ }
try {
- socket = new Socket(server.address, server.securePort);
- } catch (UnknownHostException e1) {
- LOG.error(AgentI18NResourceKeys.FAILOVER_LIST_UNKNOWN_HOST,
server.address);
- } catch (IOException e1) {
+ LOG.debug(AgentI18NResourceKeys.TEST_FAILOVER_LIST_ENTRY,
server.address, server.securePort);
+ InetAddress inetAddress = InetAddress.getByName(server.address);
+ InetSocketAddress socketAddress = new
InetSocketAddress(inetAddress, server.securePort);
+ socket = new Socket();
+ socket.setSoTimeout(5000);
+ socket.connect(socketAddress, 5000);
+ connectError = false; // we successfully connected to the server
+ } catch (Exception e1) {
String err = ThrowableUtil.getAllMessages(e1);
LOG.warn(AgentI18NResourceKeys.FAILOVER_LIST_UNREACHABLE_HOST,
server.address, server.port,
server.securePort, err);
@@ -2712,7 +2729,8 @@ public class AgentMain {
socket.close();
} catch (Exception e) {
}
- } else {
+ }
+ if (connectError) {
failedServers.add(server.toString());
}
}
diff --git a/modules/enterprise/agent/src/main/resources/agent-configuration.xml
b/modules/enterprise/agent/src/main/resources/agent-configuration.xml
index a5fe60d..6de61ac 100644
--- a/modules/enterprise/agent/src/main/resources/agent-configuration.xml
+++ b/modules/enterprise/agent/src/main/resources/agent-configuration.xml
@@ -192,10 +192,9 @@ commands named "config", "setconfig" and
"setup" and the command line options
endpoints found in the agent's failover list. This helps
provide a mechanism to quickly detect problems with the
public endpoints configured for all RHQ Servers.
+ The default is false.
-->
- <!--
- <entry key="rhq.agent.test-failover-list-at-startup"
value="false" />
- -->
+ <entry key="rhq.agent.test-failover-list-at-startup"
value="true" />
<!--
_______________________________________________________________
commit f6fa79311003284dae97bad94b6ba47e3c520d88
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Jun 4 09:20:22 2012 -0400
attempt to get auto-reconnecting working after a VPN connection is lost and then
recreated
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
index 08f715a..7b7b1b4 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -7,6 +7,8 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import sun.net.InetAddressCachePolicy;
+
import com.j2bugzilla.base.Bug;
import com.j2bugzilla.base.BugzillaConnector;
import com.j2bugzilla.base.BugzillaException;
@@ -15,6 +17,7 @@ import com.j2bugzilla.rpc.GetBug;
import org.apache.xmlrpc.XmlRpcException;
import org.pircbotx.PircBotX;
import org.pircbotx.User;
+import org.pircbotx.hooks.Listener;
import org.pircbotx.hooks.ListenerAdapter;
import org.pircbotx.hooks.events.DisconnectEvent;
import org.pircbotx.hooks.events.MessageEvent;
@@ -109,7 +112,16 @@ public class RhqIrcBot extends ListenerAdapter {
while (!connected) {
Thread.sleep(60 * 1000L); // 1 minute
try {
- disconnectEvent.getBot().reconnect();
+ PircBotX oldBot = disconnectEvent.getBot();
+ PircBotX newBot = createBot();
+ newBot.connect(oldBot.getServer());
+ for (String channel : oldBot.getChannelsNames()) {
+ newBot.joinChannel(channel);
+ }
+ Set<Listener> oldListeners = new
HashSet<Listener>(oldBot.getListenerManager().getListeners());
+ for (Listener oldListener : oldListeners) {
+ oldBot.getListenerManager().removeListener(oldListener);
+ }
connected = true;
} catch (Exception e) {
System.err.println("Failed to reconnect to " +
disconnectEvent.getBot().getServer() + " IRC server: " + e);
@@ -129,6 +141,16 @@ public class RhqIrcBot extends ListenerAdapter {
channel = '#' + channel;
}
+ PircBotX bot = createBot();
+ System.setProperty("networkaddress.cache.ttl",
String.valueOf(InetAddressCachePolicy.NEVER));
+ System.setProperty("networkaddress.cache.negative.ttl",
String.valueOf(InetAddressCachePolicy.NEVER));
+
+ // TODO: Try other Freenode IRC servers if this one is down.
+ bot.connect(server);
+ bot.joinChannel(channel);
+ }
+
+ private static PircBotX createBot() {
PircBotX bot = new PircBotX();
bot.setName("rhq-bot");
@@ -138,10 +160,7 @@ public class RhqIrcBot extends ListenerAdapter {
bot.setVerbose(true);
bot.getListenerManager().addListener(new RhqIrcBot());
bot.setSocketTimeout(1 * 60 * 1000); // 1 minute
-
- // TODO: Try other Freenode IRC servers if this one is down.
- bot.connect(server);
- bot.joinChannel(channel);
+ return bot;
}
}
commit 0e93f9ec5637eede5c5797c67ffe5efacdb7e638
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 4 11:50:07 2012 +0200
Comment out again. OpenJDK 6 does not have the com.sun.mirror classes.
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index d1bf943..87cbb59 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -516,12 +516,14 @@
<artifactId>swagger-annotations_2.9.1</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
+<!--
<dependency>
<groupId>org.rhq.helpers</groupId>
<artifactId>rest-docs-generator</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
+-->
<dependency>
<groupId>org.yaml</groupId>
@@ -780,6 +782,7 @@ Build-OS-Version=${os.version}
<!-- Document generation from the Annotations on the REST-API. -->
<!-- TODO move to a better suited processing phase -->
+<!--
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>apt-maven-plugin</artifactId>
@@ -792,7 +795,7 @@ Build-OS-Version=${os.version}
<id>create-rest-api-reports</id>
<phase>process-classes</phase>
<goals>
- <!-- We want to process the classes in src/ -->
+ <!– We want to process the classes in src/
–>
<goal>process</goal>
</goals>
</execution>
@@ -812,7 +815,7 @@ Build-OS-Version=${os.version}
<configuration>
<transformationSets>
<transformationSet>
- <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
+ <!– org.rhq.helpers.rest_docs_generator.test plugin
wrote to generated-resources, as we ran the process goal –>
<dir>target/generated-resources/apt</dir>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
<parameters>
@@ -829,7 +832,7 @@ Build-OS-Version=${os.version}
</fileMappers>
</transformationSet>
<transformationSet>
- <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
+ <!– org.rhq.helpers.rest_docs_generator.test plugin
wrote to generated-resources, as we ran the process goal –>
<dir>target/generated-resources/apt</dir>
<stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
<parameters>
@@ -868,6 +871,7 @@ Build-OS-Version=${os.version}
<generateToc>true</generateToc>
</configuration>
</plugin>
+-->
</plugins>
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index 7e30969..15554e0 100644
--- a/modules/helpers/pom.xml
+++ b/modules/helpers/pom.xml
@@ -37,7 +37,9 @@
<module>bundleGen</module>
<module>jeeGen</module>
<module>perftest-support</module>
+<!--
<module>rest-docs-generator</module>
+-->
<!-- Not built by default because people will need this only rarely when
developing tests. -->
<!-- <module>inventory-serializer</module> -->
commit 918ea3517700be9e5f0d7432eab51bee149527ef
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 4 09:38:04 2012 +0200
We need a repository, not a pluginRepository for the annotations.
diff --git a/modules/helpers/rest-docs-generator/pom.xml
b/modules/helpers/rest-docs-generator/pom.xml
index 6f9f81d..ed8a35e 100644
--- a/modules/helpers/rest-docs-generator/pom.xml
+++ b/modules/helpers/rest-docs-generator/pom.xml
@@ -102,15 +102,15 @@
</plugins>
</build>
- <pluginRepositories>
- <pluginRepository>
+ <repositories>
+ <repository>
<!-- TODO temporary for the swagger annotations -->
<id>sonatype-oss-snapshot</id>
<name>Sonatype OSS Snapshot repository</name>
<
url>https://oss.sonatype.org/content/repositories/snapshots</url>
- </pluginRepository>
+ </repository>
- </pluginRepositories>
+ </repositories>
<dependencies>
commit f7651ea14344812d4ae35e8da785efca9af9333d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 4 08:22:03 2012 +0200
We need a repository, not a pluginRepository for the annotations.
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index effab81..d1bf943 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -873,15 +873,15 @@ Build-OS-Version=${os.version}
</build>
- <pluginRepositories>
- <pluginRepository>
- <!-- TODO temporary for the swagger annotations -->
+ <repositories>
+ <repository>
+ <!-- TODO change when the annotations are puplished. This is temporary for the
swagger annotations for REST-docu -->
<id>sonatype-oss-snapshot</id>
<name>Sonatype OSS Snapshot repository</name>
<
url>https://oss.sonatype.org/content/repositories/snapshots</url>
- </pluginRepository>
+ </repository>
- </pluginRepositories>
+ </repositories>
<profiles>
commit 4a10a537aba70d22e11f4ea65e372c9aa6902857
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sun Jun 3 21:40:04 2012 +0200
Allow for start+end time when obtaining aggregates in the REST api.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
index bcc5db2..e8b5321 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
@@ -216,6 +216,10 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ long now = System.currentTimeMillis();
+ if (endTime==0)
+ endTime = now;
+
if (startTime==0) {
endTime = System.currentTimeMillis();
startTime = endTime - EIGHT_HOURS;
@@ -361,7 +365,15 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
}
@Override
- public List<MetricAggregate> getAggregatesForResource( int resourceId) {
+ public List<MetricAggregate> getAggregatesForResource(int resourceId, long
startTime, long endTime) {
+
+ long now = System.currentTimeMillis();
+ if (endTime==0)
+ endTime = now;
+ if (startTime==0) {
+ startTime = endTime - EIGHT_HOURS;
+ }
+
List<MeasurementSchedule> schedules =
scheduleManager.findSchedulesForResourceAndType(caller,
resourceId, DataType.MEASUREMENT, null,false);
@@ -370,11 +382,8 @@ public class MetricHandlerBean extends AbstractRestBean implements
MetricHandle
}
List<MetricAggregate> ret = new
ArrayList<MetricAggregate>(schedules.size());
- long now = System.currentTimeMillis();
- long then = now - EIGHT_HOURS;
-
for (MeasurementSchedule schedule: schedules) {
- MeasurementAggregate aggr =
dataManager.getAggregate(caller,schedule.getId(),then,now);
+ MeasurementAggregate aggr =
dataManager.getAggregate(caller,schedule.getId(),startTime,endTime);
MetricAggregate res = new MetricAggregate(schedule.getId(),
aggr.getMin(),aggr.getAvg(),aggr.getMax());
ret.add(res);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
index 977200b..b74e807 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
@@ -71,8 +71,8 @@ public interface MetricHandlerLocal {
@ApiOperation(value = "Get the bucketized metric values for the schedule
")
@ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
Response getMetricData(@ApiParam("Schedule Id of the values to query")
@PathParam("scheduleId") int scheduleId,
- @ApiParam("Start time since epoch")
@QueryParam("startTime") long startTime,
- @ApiParam("End time since epoch")
@QueryParam("endTime") long endTime,
+ @ApiParam(value="Start time since epoch.",
defaultValue = "End time - 8h") @QueryParam("startTime") long
startTime,
+ @ApiParam(value="End time since epoch.",
defaultValue = "Now") @QueryParam("endTime") long endTime,
@ApiParam("Number of buckets - currently fixed at
60") @QueryParam("dataPoints") @DefaultValue("60") int
dataPoints,
@QueryParam("hideEmpty") boolean hideEmpty,
@Context Request request,
@@ -94,7 +94,10 @@ public interface MetricHandlerLocal {
@Path("data/resource/{resourceId}")
@ApiOperation("Retrieve a list of high/low/average/data aggregate for the
resource")
@ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
- List<MetricAggregate> getAggregatesForResource(@ApiParam("Resource to
query") @PathParam("resourceId") int resourceId);
+ List<MetricAggregate> getAggregatesForResource(
+ @ApiParam("Resource to query") @PathParam("resourceId")
int resourceId,
+ @ApiParam(value = "Start time since epoch.", defaultValue="End
time - 8h") @QueryParam("startTime") long startTime,
+ @ApiParam(value = "End time since epoch.", defaultValue =
"Now") @QueryParam("endTime") long endTime);
/**
* Get information about the schedule
commit 0a26efc0293b6bc134150059a5f0bccaf1033d75
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 1 21:30:42 2012 +0200
Add creation of REST-api-documentation from the annotations.
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index a9507e1..effab81 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -516,14 +516,12 @@
<artifactId>swagger-annotations_2.9.1</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
-<!-- TODO comment in when it is clear where the APT will live - see also the build
phase below
<dependency>
- <groupId>com.wordnik</groupId>
- <artifactId>swagger-java-jaxrs-apt_2.9.1</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <groupId>org.rhq.helpers</groupId>
+ <artifactId>rest-docs-generator</artifactId>
+ <version>${project.version}</version>
<scope>compile</scope>
</dependency>
--->
<dependency>
<groupId>org.yaml</groupId>
@@ -779,21 +777,22 @@ Build-OS-Version=${os.version}
</execution>
</executions>
</plugin>
-<!-- TODO comment in when it is clear where the AptFactory is hosted.
+ <!-- Document generation from the Annotations on the REST-API. -->
+ <!-- TODO move to a better suited processing phase -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0-alpha-4</version>
<configuration>
-
<factory>com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory</factory>
+
<factory>org.rhq.helpers.rest_docs_generator.SwaggerAptFactory</factory>
</configuration>
<executions>
<execution>
<id>create-rest-api-reports</id>
<phase>process-classes</phase>
<goals>
- <!– We want to process the classes in test/
–>
+ <!-- We want to process the classes in src/ -->
<goal>process</goal>
</goals>
</execution>
@@ -813,7 +812,7 @@ Build-OS-Version=${os.version}
<configuration>
<transformationSets>
<transformationSet>
- <!– apt plugin wrote to generated-test-resources, as we
ran the test-process goal –>
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
<dir>target/generated-resources/apt</dir>
<stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
<parameters>
@@ -830,7 +829,7 @@ Build-OS-Version=${os.version}
</fileMappers>
</transformationSet>
<transformationSet>
- <!– apt plugin wrote to generated-test-resources, as we
ran the test-process goal –>
+ <!-- org.rhq.helpers.rest_docs_generator.test plugin wrote to
generated-resources, as we ran the process goal -->
<dir>target/generated-resources/apt</dir>
<stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
<parameters>
@@ -869,7 +868,6 @@ Build-OS-Version=${os.version}
<generateToc>true</generateToc>
</configuration>
</plugin>
--->
</plugins>
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
index fa9c124..a59e61b 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
@@ -18,7 +18,7 @@
-->
<!--
- Taken from
https://github.com/pilhuhn/swagger-core/blob/apt/modules/java-jaxrs-apt/s...
+ Taken from
https://github.com/pilhuhn/swagger-core/blob/org.rhq.helpers.rest_docs_ge...
and modified for docbook
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://docbook.org/ns/docbook"
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
index 0228bbe..65be683 100644
--- a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
@@ -1,5 +1,5 @@
<!--
- Taken from
https://github.com/pilhuhn/swagger-core/blob/apt/modules/java-jaxrs-apt/s...
+ Taken from
https://github.com/pilhuhn/swagger-core/blob/org.rhq.helpers.rest_docs_ge...
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index 79be378..7e30969 100644
--- a/modules/helpers/pom.xml
+++ b/modules/helpers/pom.xml
@@ -37,6 +37,7 @@
<module>bundleGen</module>
<module>jeeGen</module>
<module>perftest-support</module>
+ <module>rest-docs-generator</module>
<!-- Not built by default because people will need this only rarely when
developing tests. -->
<!-- <module>inventory-serializer</module> -->
diff --git a/modules/helpers/rest-docs-generator/pom.xml
b/modules/helpers/rest-docs-generator/pom.xml
new file mode 100644
index 0000000..6f9f81d
--- /dev/null
+++ b/modules/helpers/rest-docs-generator/pom.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ RHQ Management Platform
+ ~ Copyright (C) 2005-2012 Red Hat, Inc.
+ ~ All rights reserved.
+ ~
+ ~ This program is free software; you can redistribute it and/or modify
+ ~ it under the terms of the GNU General Public License as published by
+ ~ the Free Software Foundation version 2 of the License.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ along with this program; if not, write to the Free Software
+ ~ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ -->
+
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>rhq-helpers</artifactId>
+ <groupId>org.rhq.helpers</groupId>
+ <version>4.5.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.rhq.helpers</groupId>
+ <artifactId>rest-docs-generator</artifactId>
+ <packaging>jar</packaging>
+
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <defaultGoal>install</defaultGoal>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <testSourceDirectory>src/test/java</testSourceDirectory>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>animal-sniffer-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>apt-maven-plugin</artifactId>
+ <version>1.0-alpha-4</version>
+ <configuration>
+ <factory>com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory</factory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>create-rest-api-report</id>
+ <phase>process-classes</phase>
+ <goals>
+ <!-- We want to process the classes in test/ -->
+ <goal>test-process</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>xml-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <transformationSets>
+ <transformationSet>
+ <!-- apt plugin wrote to generated-test-resources, as we ran the
test-process goal -->
+ <dir>target/generated-test-resources/apt</dir>
+ <stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
+ <outputDir>${project.build.directory}</outputDir>
+ <fileMappers>
+ <fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+ <targetExtension>.html</targetExtension>
+ </fileMapper>
+ </fileMappers>
+ </transformationSet>
+ </transformationSets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <!-- TODO temporary for the swagger annotations -->
+ <id>sonatype-oss-snapshot</id>
+ <name>Sonatype OSS Snapshot repository</name>
+ <
url>https://oss.sonatype.org/content/repositories/snapshots</url>
+ </pluginRepository>
+
+ </pluginRepositories>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>jsr311-api</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>ejb-api</artifactId>
+ <version>3.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.wordnik</groupId>
+ <artifactId>swagger-annotations_2.9.1</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/modules/helpers/rest-docs-generator/readme.txt
b/modules/helpers/rest-docs-generator/readme.txt
new file mode 100644
index 0000000..3856763
--- /dev/null
+++ b/modules/helpers/rest-docs-generator/readme.txt
@@ -0,0 +1,11 @@
+This package has first been developed to be included to swagger.
+See
https://github.com/pilhuhn/swagger-core/tree/apt
+
+As the pull request (
https://github.com/wordnik/swagger-core/pull/28 ) was not
+ successful ( so far ) I've put the sources here, so we can continue
+ with documentation generation for the REST api.
+
+We may consider to remove the generator when the general Swagger adds the
+generator.
+
+ Heiko
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
new file mode 100644
index 0000000..421f266
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/ClassLevelProcessor.java
@@ -0,0 +1,422 @@
+package org.rhq.helpers.rest_docs_generator;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.Collection;
+
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import com.sun.mirror.apt.*;
+import com.sun.mirror.declaration.*;
+import com.sun.mirror.type.AnnotationType;
+import com.sun.mirror.type.TypeMirror;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiErrors;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * Processor for JAX-RS classes
+ * @author Heiko W. Rupp
+ */
+class ClassLevelProcessor implements AnnotationProcessor {
+
+ private static final String JAVAX_WS_RS = "javax.ws.rs.";
+ private static final String[] HTTP_METHODS =
{"GET","PUT","POST","HEAD","DELETE","OPTIONS"};
+ private static final String[] PARAM_SKIP_ANNOTATIONS =
{"javax.ws.rs.core.UriInfo","javax.ws.rs.core.HttpHeaders","javax.servlet.http.HttpServletRequest","javax.ws.rs.core.Request"};
+ private static final String API_OUT_XML = "rest-api-out.xml";
+ private static final String AT_PATH = "javax.ws.rs.Path";
+
+ private AnnotationProcessorEnvironment env;
+ private String targetDir;
+
+ Log log = LogFactory.getLog(getClass().getName());
+
+ public ClassLevelProcessor(AnnotationProcessorEnvironment env, String targetDir) {
+ this.env = env;
+ this.targetDir = targetDir;
+ }
+
+ @Override
+ public void process() {
+
+ Document doc;
+ DocumentBuilder documentBuilder;
+ try {
+ documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ doc = documentBuilder.newDocument();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+
+ Element root = doc.createElement("api");
+ doc.appendChild(root);
+
+ // Loop over all classes and find class level annotations we are interested in
+ processClass(doc, root);
+
+ try {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ transformerFactory.setAttribute("indent-number", 2); // xml indent
2 spaces
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // do xml
indent
+
+ // We initialize here for String writing to also see the result on stdout
TODO change later
+ StreamResult result = new StreamResult(new StringWriter());
+ DOMSource source = new DOMSource(doc);
+ transformer.transform(source, result);
+
+ String xmlString = result.getWriter().toString();
+// System.out.println(xmlString);
+
+ File f;
+ if (targetDir!=null) {
+ File td = new File(targetDir);
+ if (!td.exists())
+ td.mkdirs();
+
+ f = new File(td, API_OUT_XML);
+ }
+ else
+ f = new File(API_OUT_XML);
+
+ String path = f.getAbsolutePath();
+ log.info("... writing to " + path);
+ try {
+ FileWriter fw = new FileWriter(f);
+ fw.write(xmlString);
+ fw.flush();
+ fw.close();
+ } catch (IOException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+
+ } catch (TransformerException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+
+ }
+
+ private void processClass(Document doc, Element root) {
+ for (TypeDeclaration td : env.getSpecifiedTypeDeclarations()) {
+ String basePath = getPathValue(td);
+ if (basePath==null || basePath.isEmpty()) {
+ log.debug("No @Path found on " + td.getQualifiedName() + "
- skipping");
+ continue;
+ }
+
+ Element classElement = doc.createElement("class");
+ String className = td.toString();
+ classElement.setAttribute("name",className);
+ classElement.setAttribute("path",basePath);
+ Api api = td.getAnnotation(Api.class);
+ if (api!=null) {
+ String shortDescription = api.value();
+ setOptionalAttribute(classElement, "shortDesc",
shortDescription);
+ String longDescription = api.description();
+ setOptionalAttribute(classElement, "description",
longDescription);
+ String basePathAttr = api.basePath();
+ setOptionalAttribute(classElement, "basePath",basePathAttr);
+ }
+
+ root.appendChild(classElement);
+
+ // Loop over the methods on this class
+ processMethods(doc, td, classElement);
+ }
+ }
+
+
+ private void processMethods(Document doc, TypeDeclaration td, Element classElement)
{
+ for (MethodDeclaration m : td.getMethods()) {
+ String path = getPathValue(m);
+
+ Element methodElement = doc.createElement("method");
+ methodElement.setAttribute("path",path);
+ classElement.appendChild(methodElement);
+ methodElement.setAttribute("name", m.getSimpleName());
+ String httpMethod = getHttpMethod(m.getAnnotationMirrors());
+ methodElement.setAttribute("method",httpMethod);
+ String description = getValue(m, ApiOperation.class.getName(),
"value");
+ setOptionalAttribute(methodElement,"description",description);
+ String responseClass = getValue(m,ApiOperation.class.getName(),
"responseClass");
+
setOptionalAttribute(methodElement,"returnType",responseClass,m.getReturnType().toString());
+
+ // Loop over the parameters
+ processParams(doc, m, methodElement);
+
+ processErrors(doc,m, methodElement);
+
+ }
+ }
+
+ /**
+ * Process the parameters of a method.
+ * @param doc Xml Document to add the output to
+ * @param m Method to look for parameters
+ * @param parent The parent xml element to tack the results on
+ */
+ private void processParams(Document doc, MethodDeclaration m, Element parent) {
+ for (ParameterDeclaration p : m.getParameters()) {
+ TypeMirror t = p.getType();
+
+ if (skipParamType(t))
+ continue;
+ Element element = doc.createElement("param");
+ parent.appendChild(element);
+ // determine name
+ String name;
+ String paramType="-body-";
+ PathParam pp = p.getAnnotation(PathParam.class);
+ QueryParam qp = p.getAnnotation(QueryParam.class);
+ ApiParam ap = p.getAnnotation(ApiParam.class);
+ if (pp != null) {
+ name = pp.value();
+ paramType="Path";
+ }
+ else if (qp!=null) {
+ name = qp.value();
+ paramType="Query";
+ }
+ else if (ap!=null)
+ name = ap.name();
+ else
+ name = p.getSimpleName();
+
+ element.setAttribute("name",name);
+ element.setAttribute("paramType",paramType);
+ String description = getValue(p, ApiParam.class.getName(),
"value");
+ setOptionalAttribute(element, "description", description);
+ String required = getValue(p, ApiParam.class.getName(),
"required");
+ if (isPathParam(p)) // PathParams are always required
+ required="true";
+
+
setOptionalAttribute(element,"required",required,"false");
+ String allowedValues = getValue(p, ApiParam.class.getName(),
"allowableValues");
+
setOptionalAttribute(element,"allowableValues",allowedValues,"all");
+
+ String defaultValue;
+ DefaultValue dva = p.getAnnotation(DefaultValue.class);
+ if (dva!=null)
+ defaultValue = dva.value();
+ else if (ap!=null)
+ defaultValue = ap.defaultValue();
+ else
+ defaultValue = "-none-";
+
+ if (defaultValue!=null)
+ element.setAttribute("defaultValue",defaultValue);
+
+
+ element.setAttribute("type", t.toString());
+ }
+ }
+
+ /**
+ * Look at the ApiError(s) annotations and populate the output
+ * @param doc XML Document to add
+ * @param m MethodDeclaration to look at
+ * @param parent The parent xml element to attach the result to
+ */
+ private void processErrors(Document doc, MethodDeclaration m, Element parent) {
+ ApiError ae = m.getAnnotation(ApiError.class);
+ processError(doc,ae,parent);
+ ApiErrors aes = m.getAnnotation(ApiErrors.class);
+ if (aes != null) {
+ for (ApiError ae2 : aes.value()) {
+ processError(doc,ae2,parent);
+ }
+ }
+ }
+
+ /**
+ * Process a single @ApiError
+ * @param doc XML Document to add
+ * @param ae ApiError annotation to evaluate
+ * @param parent Parent XML element to tack the ApiError data on
+ */
+ private void processError(Document doc, ApiError ae, Element parent) {
+ if (ae==null)
+ return;
+
+ Element element = doc.createElement("error");
+ parent.appendChild(element);
+ element.setAttribute("code", String.valueOf(ae.code()));
+ element.setAttribute("reason",ae.reason());
+ }
+
+ /**
+ * Determine if the passed mirror belongs to an annotation that denotes a parameter
to be skipped
+ * @param t Type to analyze
+ * @return True if the type matches the blacklist
+ */
+ private boolean skipParamType(TypeMirror t) {
+ String name = t.toString();
+ boolean skip=false;
+ for (String toSkip : PARAM_SKIP_ANNOTATIONS) {
+ if (toSkip.equals(name)) {
+ skip=true;
+ break;
+ }
+ }
+ return skip;
+ }
+
+ /**
+ * Get the value of the @Path annotation. This is stripped from leading and trailing
slashed
+ * @param m Declaration to look at
+ * @return Path with leading and trailing slashes stripped or null on error
+ */
+ private String getPathValue(Declaration m) {
+ String path = getValue(m,AT_PATH,"value");
+ if (path==null)
+ return null;
+
+ if (path.startsWith("/"))
+ path = path.substring(1);
+ if (path.endsWith("/"))
+ path = path.substring(0,path.length()-1);
+
+ return path;
+ }
+
+
+
+ /**
+ * Get the value of a certain annotation on a declaration.
+ * Annotation is e.g. of the form
<pre>(a)com.acme.Annot(value"xyz")</pre>.
+ * @param declaration The declaration of class/method/param....
+ * @param annotationName Fully qualified name of the annotation - com.acme.Annot in
above example
+ * @param param The param of the annotation to query - value in above example. The
parameter name may end in ().
+ * If parens are not provided, they will be attached internally.
+ * @return The value of the param - or null it not found
+ */
+ private String getValue(Declaration declaration, String annotationName, String param)
{
+
+ if (!param.endsWith("()")) {
+ param = param+"()";
+ }
+
+ Collection<AnnotationMirror> mirrors = declaration.getAnnotationMirrors();
+
+ for (AnnotationMirror am : mirrors) {
+ AnnotationType annotationType = am.getAnnotationType();
+ AnnotationTypeDeclaration annotationTypeDeclaration =
annotationType.getDeclaration();
+ String qName = annotationTypeDeclaration.getQualifiedName();
+ if (qName.equals(annotationName)) {
+ // found the annotation, now get the parameter value
+ for (AnnotationTypeElementDeclaration decl :
am.getElementValues().keySet()) {
+ if (decl.toString().equals(param)) {
+ String s = am.getElementValues().get(decl).toString();
+ // remove quotes we get passed in
+ if (s.startsWith("\""))
+ s = s.substring(1);
+ if (s.endsWith("\""))
+ s = s.substring(0,s.length()-1);
+ return s;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isPathParam(Declaration decl) {
+ return hasAnnotation(decl,"javax.ws.rs.PathParam");
+ }
+
+ /**
+ * Check if a certain annoation is present or not
+ * @param declaration Declaration to look at
+ * @param annotationName Name of the annotation
+ * @return true if found, false otherwise
+ */
+ private boolean hasAnnotation(Declaration declaration, String annotationName) {
+
+ boolean found = false;
+
+ Collection<AnnotationMirror> mirrors = declaration.getAnnotationMirrors();
+
+ for (AnnotationMirror am : mirrors) {
+ AnnotationType annotationType = am.getAnnotationType();
+ AnnotationTypeDeclaration annotationTypeDeclaration =
annotationType.getDeclaration();
+ String qName = annotationTypeDeclaration.getQualifiedName();
+ if (qName.equals(annotationName)) {
+ found = true;
+ break;
+ }
+ }
+ return found;
+
+ }
+
+
+ /**
+ * Determine the http method (@GET, @PUT etc.) from the list of annotations on the
method
+ * @param annotationMirrors mirrors for the method
+ * @return The http method string or null if it can not be determined
+ */
+ private String getHttpMethod(Collection<AnnotationMirror> annotationMirrors) {
+ for (AnnotationMirror am : annotationMirrors) {
+ String qName = am.getAnnotationType().getDeclaration().getQualifiedName();
+ if (qName.startsWith(JAVAX_WS_RS)) {
+ qName = qName.substring(JAVAX_WS_RS.length());
+// System.out.println(" Checking qname " + qName);
+ for (String name : HTTP_METHODS) {
+ if (qName.equals(name))
+ return name;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Set the passed text as attribute name on the passed xmlElement if the text is not
empty
+ * @param xmlElement Element to set the attribute on
+ * @param name The name of the attribute
+ * @param text The text to set
+ */
+ private void setOptionalAttribute(Element xmlElement, String name, String text) {
+ if (text!=null && !text.isEmpty()) {
+ xmlElement.setAttribute(name, text);
+ }
+ }
+
+ /**
+ * Set the passed text as attribute name on the passed xmlElement if the text is not
empty
+ * @param xmlElement Element to set the attribute on
+ * @param name The name of the attribute
+ * @param text The text to set
+ * @param defaultValue Value to set if text is null or empty
+ */
+ private void setOptionalAttribute(Element xmlElement, String name, String text,String
defaultValue) {
+ if (text!=null && !text.isEmpty()) {
+ xmlElement.setAttribute(name, text);
+ }
+ else {
+ xmlElement.setAttribute(name,defaultValue);
+ }
+ }
+
+}
diff --git
a/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
new file mode 100644
index 0000000..244e2a1
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/main/java/org/rhq/helpers/rest_docs_generator/SwaggerAptFactory.java
@@ -0,0 +1,50 @@
+package org.rhq.helpers.rest_docs_generator;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import com.sun.mirror.apt.*;
+import com.sun.mirror.declaration.AnnotationTypeDeclaration;
+
+import org.rhq.helpers.rest_docs_generator.ClassLevelProcessor;
+
+/**
+ * Annotation Processor Factory that returns a processor for types we care,
+ * which are java.ws.rs.* and com.wordnik.swagger.annotations.*
+ * @author Heiko W. Rupp
+ */
+public class SwaggerAptFactory implements AnnotationProcessorFactory {
+
+ @Override
+ public Collection<String> supportedOptions() {
+ return Collections.emptySet(); // No options for the moment
+ }
+
+ @Override
+ public Collection<String> supportedAnnotationTypes() {
+ Set<String> types = new HashSet<String>();
+ types.add("com.wordnik.swagger.annotations.*");
+ types.add("javax.ws.rs.*");
+ return types;
+ }
+
+ @Override
+ public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration>
annotationTypeDeclarations,
+ AnnotationProcessorEnvironment env) {
+
+ Map<String,String> options = env.getOptions();
+ String targetDir = null;
+ if (options.containsKey("-d"))
+ targetDir = options.get("-d");
+
+ AnnotationProcessor ap;
+ if (annotationTypeDeclarations.isEmpty())
+ ap = AnnotationProcessors.NO_OP;
+ else
+ ap = new ClassLevelProcessor(env, targetDir);
+ return ap;
+ }
+}
diff --git
a/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
b/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
new file mode 100644
index 0000000..b351fe4
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
@@ -0,0 +1 @@
+com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory
\ No newline at end of file
diff --git a/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
b/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
new file mode 100644
index 0000000..a6516be
--- /dev/null
+++ b/modules/helpers/rest-docs-generator/src/main/xsl/apiout2html.xsl
@@ -0,0 +1,90 @@
+<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:template match="/api">
+ <html>
+ <head>
+ <title>Api documentation</title>
+ <style type="text/css">
+ h2 {background-color:#6464FF }
+ h3 {background-color:#42EE42 }
+ th {font-weight:bold; font-size:120% }
+ em {font-style:italic; font-size:110%; background-color:LightYellow}
+ </style>
+ </head>
+ <body>
+ <xsl:apply-templates>
+ <xsl:sort select="class/@path"/>
+ </xsl:apply-templates>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <h2>/<xsl:value-of select="@path"/>
+ <xsl:if test="@shortDesc">
+ : <xsl:value-of select="@shortDesc"/>
+ </xsl:if>
+ <xsl:if test="@basePath">
+ ( Base: <xsl:value-of select="@basePath"/> )
+ </xsl:if>
+ </h2>
+ Class: <xsl:value-of select="@name"/><br/>
+ <em><xsl:value-of select="@description"/></em>
+ <br/>
+ <xsl:if test="method">
+ Methods:<br/>
+ <xsl:apply-templates/>
+ </xsl:if>
+ <p/>
+ </xsl:template>
+
+ <xsl:template match="method">
+ <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>/<xsl:value-of
select="@path"/></h3>
+ <em><xsl:value-of select="@description"/></em>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="param">
+ Parameters:
+ <table>
+
<tr><th>Name</th><th>P.Type</th><th>Description</th><th>Required</th><th>Type</th><th>Allowed
values</th><th>Default value</th></tr>
+ <xsl:apply-templates select="param"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ This method has no parameters
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ Return type: <xsl:value-of select="@returnType"/>
+ <p/>
+ <xsl:if test="error">
+ Error codes:<br/>
+ <table>
+ <tr>
+ <th>Code</th><th>Reason</th>
+ </tr>
+ <xsl:apply-templates select="error"/>
+ </table>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="param">
+ <tr>
+ <td><xsl:value-of select="@name"/></td>
+ <td><xsl:value-of select="@paramType"/></td>
+ <td><xsl:value-of select="@description"/></td>
+ <td><xsl:value-of select="@required"/></td>
+ <td><xsl:value-of select="@type"/></td>
+ <td><xsl:value-of select="@allowableValues"/></td>
+ <td><xsl:value-of select="@defaultValue"/></td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="error">
+ <tr>
+ <td><xsl:value-of select="@code"/></td>
+ <td><xsl:value-of select="@reason"/></td>
+ </tr>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
new file mode 100644
index 0000000..e435524
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/FooBean.java
@@ -0,0 +1,42 @@
+package com.wordnik.swagger.test.jaxrs.apt;
+
+/**
+ * Just a sample bean
+ * @author Heiko W. Rupp
+ */
+public class FooBean {
+
+ int id;
+ String name;
+ double value;
+
+ public FooBean(int id, String name, double value) {
+ this.id = id;
+ this.name = name;
+ this.value = value;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getValue() {
+ return value;
+ }
+
+ public void setValue(double value) {
+ this.value = value;
+ }
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
new file mode 100644
index 0000000..f2f9d0e
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/MyBean.java
@@ -0,0 +1,33 @@
+package com.wordnik.swagger.test.jaxrs.apt;
+
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+@Api(value="My Foobar api", description = "This api does foo and bar and
baz and is uber cool")
+@Path("/foo")
+public interface MyBean {
+
+ @GET
+ @Path("/one")
+ @ApiOperation("This is the first method")
+ public String methodOne();
+
+ @PUT
+ @Path("/two/{pp}")
+ @ApiOperation("This is the second method")
+ public void methodTwo(
+ @ApiParam(value="The customer id") @PathParam("pp")
@DefaultValue("42") int pp,
+ @ApiParam(value="Hulla",required = false)
@QueryParam("qp") String qp);
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
new file mode 100644
index 0000000..ee28f9a
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SecondOne.java
@@ -0,0 +1,25 @@
+package com.wordnik.swagger.test.jaxrs.apt;
+
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiParam;
+
+/**
+ * Just an example class
+ * @author Heiko W. Rupp
+ */
+@Path("bla")
+public interface SecondOne {
+
+ @Path("bla")
+ @PUT
+ @ApiError(code=404,reason = "Resource with the passed key not found")
+ public Response putSomeData(
+ @ApiParam("The primary key") @PathParam("id")int id,
+ @ApiParam("The data to put") FooBean bean);
+
+}
diff --git
a/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
new file mode 100644
index 0000000..ee0cb24
--- /dev/null
+++
b/modules/helpers/rest-docs-generator/src/test/java/org.rhq.helpers.rest_docs_generator.test/SomeEjbInterface.java
@@ -0,0 +1,35 @@
+package com.wordnik.swagger.test.jaxrs.apt;
+
+import javax.ejb.Local;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiErrors;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponse;
+
+/**
+ * Another example of @Api* usage
+ * @author Heiko W. Rupp
+ */
+@Api(value = "My important business EJB", basePath =
"http://localhost:9999/other_path")
+@Local
+@Produces({"application/json","application/xml","text/html"})
+@Path("/biz-ejb")
+public interface SomeEjbInterface {
+
+ @ApiOperation(value="Gives the current status", responseClass =
"com.acme.MyResponse")
+ @ApiErrors({
+ @ApiError(code = 404,reason = "If there is no resource or group with the
passed id "),
+ @ApiError(code = 409,reason =" Resource type does not match the group
one")
+ })
+ @GET
+ @Path("/")
+ Response getStatus(@Context HttpHeaders httpHeaders);
+}
commit 3b338eb55800495663fc1bc98aa736d20f3ee547
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 1 14:49:46 2012 +0200
Some improvements to GroupDefinition handlingin the REST api
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
index 7997f91..7f13618 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
@@ -2,6 +2,7 @@ package org.rhq.enterprise.server.rest;
import java.net.URI;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -277,20 +278,14 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- public Response getDefinitions(@Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
+ public Response getGroupDefinitions(@Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo) {
PageList<GroupDefinition> gdlist =
definitionManager.getGroupDefinitions(caller,new PageControl());
List<GroupDefinitionRest> list = new
ArrayList<GroupDefinitionRest>(gdlist.getTotalSize());
for (GroupDefinition def: gdlist) {
- GroupDefinitionRest definitionRest = new
GroupDefinitionRest(def.getId(),def.getName(),def.getDescription(),
- def.getRecalculationInterval());
- definitionRest.setExpression(def.getExpressionAsList());
-
- List<Integer> generatedGroups = new
ArrayList<Integer>(def.getManagedResourceGroups().size());
- for (ResourceGroup group : def.getManagedResourceGroups() ) {
- generatedGroups.add(group.getId());
- }
- definitionRest.setGeneratedGroupIds(generatedGroups);
+ GroupDefinitionRest definitionRest = buildGDRestFromDefinition(def);
+ createLinksForGDRest(uriInfo,definitionRest);
list.add(definitionRest);
}
@@ -310,19 +305,14 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- public Response getDefinition(int definitionId, @Context Request request,
- @Context HttpHeaders headers, @Context UriInfo uriInfo)
{
+ public Response getGroupDefinition(int definitionId, @Context Request request,
+ @Context HttpHeaders headers, @Context UriInfo
uriInfo) {
try {
GroupDefinition def = definitionManager.getById(definitionId);
- GroupDefinitionRest gdr = new
GroupDefinitionRest(def.getId(),def.getName(),def.getDescription(),
def.getRecalculationInterval());
- gdr.setRecursive(def.isRecursive());
- List<Integer> generatedGroups = new
ArrayList<Integer>(def.getManagedResourceGroups().size());
- for (ResourceGroup group : def.getManagedResourceGroups() ) {
- generatedGroups.add(group.getId());
- }
- gdr.setGeneratedGroupIds(generatedGroups);
- gdr.setExpression(def.getExpressionAsList());
+ GroupDefinitionRest gdr = buildGDRestFromDefinition(def);
+
+ createLinksForGDRest(uriInfo,gdr);
MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
Response.ResponseBuilder builder;
@@ -338,26 +328,44 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
}
+ private GroupDefinitionRest buildGDRestFromDefinition(GroupDefinition def) {
+ GroupDefinitionRest gdr = new
GroupDefinitionRest(def.getId(),def.getName(),def.getDescription(),
def.getRecalculationInterval());
+ gdr.setRecursive(def.isRecursive());
+
+ List<Integer> generatedGroups;
+ if (def.getManagedResourceGroups()!=null) {
+ generatedGroups = new
ArrayList<Integer>(def.getManagedResourceGroups().size());
+ for (ResourceGroup group : def.getManagedResourceGroups() ) {
+ generatedGroups.add(group.getId());
+ }
+ } else {
+ generatedGroups = Collections.emptyList();
+ }
+ gdr.setGeneratedGroupIds(generatedGroups);
+ gdr.setExpression(def.getExpressionAsList());
+ return gdr;
+ }
+
@Override
- public Response deleteDefinition(int definitionId, @Context Request request,
- @Context HttpHeaders headers, @Context UriInfo
uriInfo) {
+ public Response deleteGroupDefinition(int definitionId, @Context Request request,
+ @Context HttpHeaders headers, @Context UriInfo
uriInfo) {
try {
GroupDefinition def = definitionManager.getById(definitionId);
definitionManager.removeGroupDefinition(caller,definitionId);
- return Response.ok().build();
+ return Response.noContent().build(); // Return 206, as we don't include a
body
} catch (GroupDefinitionNotFoundException e) {
// Idem potent
- return Response.ok().build();
+ return Response.noContent().build(); // Return 206, as we don't include a
body
} catch (GroupDefinitionDeleteException e) {
throw new StuffNotFoundException("Group definition with id " +
definitionId);
}
}
@Override
- public Response createDefinition(GroupDefinitionRest definition,
- @Context Request request, @Context HttpHeaders
headers,
- @Context UriInfo uriInfo) {
+ public Response createGroupDefinition(GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo) {
Response.ResponseBuilder builder = null;
@@ -386,7 +394,13 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
uriBuilder.path("/group/definition/{id}");
URI location = uriBuilder.build(res.getId());
+
+ Link link = new Link("edit",location.toString());
builder= Response.created(location);
+ GroupDefinitionRest gdr = buildGDRestFromDefinition(res);
+ createLinksForGDRest(uriInfo,gdr);
+
+ builder.entity(gdr);
} catch (GroupDefinitionAlreadyExistsException e) {
builder =Response.status(Response.Status.CONFLICT);
@@ -398,9 +412,10 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- public Response updateDefinition(int definitionId,
- boolean recalculate, GroupDefinitionRest
definition,
- @Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
+ public Response updateGroupDefinition(int definitionId,
+ boolean recalculate, GroupDefinitionRest
definition,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo) {
GroupDefinition gd;
try {
@@ -434,20 +449,38 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
return builder.build();
}
- String msg=null;
if (recalculate) {
try {
definitionManager.calculateGroupMembership(caller,gd.getId());
} catch (Exception e) {
- msg = e.getLocalizedMessage();
-// e.printStackTrace(); // TODO: Customise this generated block
}
}
- builder = Response.ok(gd);
- if (msg!=null) {
- builder.entity(msg);
+
+ try {
+ // Re-fetch, as groups may have changed
+ gd = definitionManager.getById(gd.getId());
+ GroupDefinitionRest gdr = buildGDRestFromDefinition(gd);
+ createLinksForGDRest(uriInfo, gdr);
+
+ builder = Response.ok(gdr);
+ } catch (GroupDefinitionNotFoundException e) {
+ throw new StuffNotFoundException("Group Definition with id " +
gd.getId());
}
return builder.build();
}
+
+ private void createLinksForGDRest(UriInfo uriInfo, GroupDefinitionRest gdr) {
+ UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/group/definition/{id}");
+ URI location = uriBuilder.build(gdr.getId());
+ Link link = new Link("edit",location.toString());
+ gdr.addLink(link);
+
+ uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/group/definition");
+ location = uriBuilder.build(new Object[]{});
+ link = new Link("create",location.toString());
+ gdr.addLink(link);
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
index 1061521..51ef85e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
@@ -111,48 +111,51 @@ public interface GroupHandlerLocal {
public Response removeResource(
@ApiParam("Id of the existing group") @PathParam("id")
int id,
@ApiParam("Id of the resource to remove")
@PathParam("resourceId") int resourceId,
- @Context Request request, @Context HttpHeaders
headers,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@GET
@Path("/definitions")
@ApiOperation(value="List all existing GroupDefinitions",multiValueResponse
= true)
- public Response getDefinitions(@Context Request request,@Context HttpHeaders
headers,
- @Context UriInfo uriInfo);
+ public Response getGroupDefinitions(@Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
@GET
@Path("/definition/{id}")
+ @Cache(isPrivate = true,maxAge = 60)
@ApiOperation(value = "Retrieve a single GroupDefinition by id")
- public Response getDefinition(
+ public Response getGroupDefinition(
@ApiParam("The id of the definition to retrieve")
@PathParam("id") int definitionId,
- @Context Request request, @Context HttpHeaders
headers,
- @Context UriInfo uriInfo);
+ @Context Request request, @Context HttpHeaders headers,
+ @Context UriInfo uriInfo);
+
@DELETE
@Path("/definition/{id}")
- @ApiOperation("Delete the group definition with the passed id")
- public Response deleteDefinition(
+ @ApiOperation("Delete the GroupDefinition with the passed id")
+ public Response deleteGroupDefinition(
@ApiParam("The id of the definition to delete")
@PathParam("id") int definitionId,
- @Context Request request, @Context HttpHeaders
headers,
- @Context UriInfo uriInfo);
+ @Context Request request, @Context HttpHeaders headers,
+ @Context UriInfo uriInfo);
@POST
@Path("/definitions")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- @ApiOperation("Create a new group definition. Returns the location of the new
definition in the header.")
- public Response createDefinition(
- GroupDefinitionRest definition,
- @Context Request request, @Context HttpHeaders
headers,
- @Context UriInfo uriInfo);
+ @ApiOperation("Create a new GroupDefinition. The name of the group is required
in the passed definition.")
+ public Response createGroupDefinition(
+ GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders headers,
+ @Context UriInfo uriInfo);
@PUT
@Path("/definition/{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- @ApiOperation("Update an existing group definition")
- public Response updateDefinition(
- @ApiParam("ID fo the definition to update")
@PathParam("id") int definitionId,
- @ApiParam("If true, trigger a re-calculation")
@QueryParam("recalculate") @DefaultValue("false") boolean
recalculate,
- GroupDefinitionRest definition,
- @Context Request request, @Context HttpHeaders
headers,
- @Context UriInfo uriInfo);
+ @ApiOperation("Update an existing GroupDefinition")
+ public Response updateGroupDefinition(
+ @ApiParam("Id fo the definition to update")
@PathParam("id") int definitionId,
+ @ApiParam("If true, trigger a re-calculation")
@QueryParam("recalculate") @DefaultValue(
+ "false") boolean recalculate,
+ GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders headers,
+ @Context UriInfo uriInfo);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
index 1fc7b25..93b715c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.server.rest.domain;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlID;
@@ -38,6 +39,7 @@ public class GroupDefinitionRest {
private long recalcInterval;
private boolean recursive=false;
List<Integer> generatedGroupIds;
+ List<Link> links = new ArrayList<Link>();
public GroupDefinitionRest() {
}
@@ -104,4 +106,17 @@ public class GroupDefinitionRest {
public void setRecursive(boolean recursive) {
this.recursive = recursive;
}
+
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ public void addLink(Link link) {
+ this.links.add(link);
+ }
+
}
commit 648b76776cc8c3f1bc56fed93de7bb7ff7a97728
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 7 10:30:49 2012 +0200
First cut at REST api documentation with tooling to convert to HTML and Docbook
Integrate resource and platform creation
Add tooling to convert to docbook
Swagger-annotations are now on a public repo.
Add more documentation.
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 86bc22d..a9507e1 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -84,7 +84,7 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
-
+
<dependency>
<groupId>com.googlecode.java-diff-utils</groupId>
<artifactId>diffutils</artifactId>
@@ -511,6 +511,19 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.wordnik</groupId>
+ <artifactId>swagger-annotations_2.9.1</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+<!-- TODO comment in when it is clear where the APT will live - see also the build
phase below
+ <dependency>
+ <groupId>com.wordnik</groupId>
+ <artifactId>swagger-java-jaxrs-apt_2.9.1</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+-->
<dependency>
<groupId>org.yaml</groupId>
@@ -766,9 +779,112 @@ Build-OS-Version=${os.version}
</execution>
</executions>
</plugin>
+<!-- TODO comment in when it is clear where the AptFactory is hosted.
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>apt-maven-plugin</artifactId>
+ <version>1.0-alpha-4</version>
+ <configuration>
+
<factory>com.wordnik.swagger.jaxrs.apt.SwaggerAptFactory</factory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>create-rest-api-reports</id>
+ <phase>process-classes</phase>
+ <goals>
+ <!– We want to process the classes in test/
–>
+ <goal>process</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>xml-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>transform</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <transformationSets>
+ <transformationSet>
+ <!– apt plugin wrote to generated-test-resources, as we
ran the test-process goal –>
+ <dir>target/generated-resources/apt</dir>
+ <stylesheet>src/main/xsl/apiout2html.xsl</stylesheet>
+ <parameters>
+ <parameter>
+ <name>basePath</name>
+ <value>http://localhost:7080/rest/1</value>
+ </parameter>
+ </parameters>
+ <outputDir>${project.build.directory}</outputDir>
+ <fileMappers>
+ <fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+ <targetExtension>.html</targetExtension>
+ </fileMapper>
+ </fileMappers>
+ </transformationSet>
+ <transformationSet>
+ <!– apt plugin wrote to generated-test-resources, as we
ran the test-process goal –>
+ <dir>target/generated-resources/apt</dir>
+ <stylesheet>src/main/xsl/apiout2docbook.xsl</stylesheet>
+ <parameters>
+ <parameter>
+ <name>basePath</name>
+ <value>http://localhost:7080/rest/1</value>
+ </parameter>
+ </parameters>
+ <outputDir>${project.build.directory}</outputDir>
+ <fileMappers>
+ <fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+ <targetExtension>.dbx.xml</targetExtension>
+ </fileMapper>
+ </fileMappers>
+ </transformationSet>
+ </transformationSets>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.agilejava.docbkx</groupId>
+ <artifactId>docbkx-maven-plugin</artifactId>
+ <version>2.0.9</version>
+ <executions>
+ <execution>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>generate-pdf</goal>
+ <goal>generate-html</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <sourceDirectory>target</sourceDirectory>
+ <includes>rest-api-out.dbx.xml</includes>
+ <hyphenate>false</hyphenate>
+ <generateToc>true</generateToc>
+ </configuration>
+ </plugin>
+-->
+
</plugins>
+
</build>
+ <pluginRepositories>
+ <pluginRepository>
+ <!-- TODO temporary for the swagger annotations -->
+ <id>sonatype-oss-snapshot</id>
+ <name>Sonatype OSS Snapshot repository</name>
+ <
url>https://oss.sonatype.org/content/repositories/snapshots</url>
+ </pluginRepository>
+
+ </pluginRepositories>
+
<profiles>
<profile>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
index aba52ec..cd17aa6 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertHandlerLocal.java
@@ -29,6 +29,10 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.jboss.resteasy.links.AddLinks;
import org.jboss.resteasy.links.LinkResource;
import org.jboss.resteasy.links.LinkResources;
@@ -44,41 +48,55 @@ import org.rhq.enterprise.server.rest.domain.ResourceWithType;
@Produces({"application/json","application/xml","text/plain"})
@Local
@Path("/alert")
+@Api(value = "Deal with Alerts",description = "This api deals with alerts
that have fired. It does not offer to create/update AlertDefinitions (yet)")
public interface AlertHandlerLocal {
@GET
@Path("/")
@AddLinks
@LinkResource(value = AlertRest.class)
- List<AlertRest> listAlerts(@QueryParam("page") int
page,@QueryParam("status") String status);
+ @ApiOperation("List all alerts")
+ List<AlertRest> listAlerts(
+ @ApiParam(value = "Page number", defaultValue = "0")
@QueryParam("page") int page,
+ @ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status);
@GET
@Path("/{id}")
@AddLinks
@LinkResource(value = AlertRest.class)
- AlertRest getAlert(@PathParam("id") int id);
+ @ApiOperation("Get one alert with the passed id")
+ AlertRest getAlert(@ApiParam("Id of the alert to retrieve")
@PathParam("id") int id);
@PUT
@Path("/{id}")
@LinkResource
- AlertRest ackAlert(@PathParam("id") int id);
+ @ApiOperation(value = "Mark the alert as acknowledged (by the caller)")
+ AlertRest ackAlert(
+ @ApiParam(value = "Id of the alert to acknowledge")
@PathParam("id") int id);
@DELETE
@Path("/{id}")
@LinkResource(value = AlertRest.class)
- void purgeAlert(@PathParam("id") int id);
+ @ApiOperation(value = "Remove the alert from the lit of alerts")
+ void purgeAlert(
+ @ApiParam(value = "Id of the alert to remove")
@PathParam("id") int id);
@GET
@LinkResource(rel="definition",value = AlertDefinitionRest.class)
@Path("/{id}/definition")
- AlertDefinitionRest getDefinitionForAlert(@PathParam("id") int alertId);
+ @ApiOperation("Get the alert definition (basics) for the alert")
+ AlertDefinitionRest getDefinitionForAlert(@ApiParam("Id of the alert to show the
definition") @PathParam("id") int alertId);
@GET
@Path("/definition")
- List<AlertDefinitionRest> listAlertDefinitions(@QueryParam("page")
int page,@QueryParam("status") String status);
+ @ApiOperation("List all Alert Definition")
+ List<AlertDefinitionRest> listAlertDefinitions(
+ @ApiParam(value = "Page number", defaultValue = "0")
@QueryParam("page") int page,
+ @ApiParam(value = "Limit to status, UNUSED AT THE MOMENT ")
@QueryParam("status") String status);
@GET
@Path("/definition/{id}")
- AlertDefinitionRest getAlertDefinition(@PathParam("id") int definitionId);
+ @ApiOperation("Get one AlertDefinition by id")
+ AlertDefinitionRest getAlertDefinition(@ApiParam("Id of the alert definition to
retrieve") @PathParam("id") int definitionId);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
index 405a439..7997f91 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
@@ -8,14 +8,6 @@ import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
@@ -98,9 +90,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @GET
- @Path("{id}")
- public Response getGroup(@PathParam("id") int id, @Context Request request,
@Context HttpHeaders headers,
+ public Response getGroup(int id, @Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo) {
ResourceGroup group = fetchGroup(id);
@@ -122,8 +112,6 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @POST
- @Path("/")
public Response createGroup(GroupRest group, @Context Request request, @Context
HttpHeaders headers, @Context UriInfo uriInfo) {
ResourceGroup newGroup = new ResourceGroup(group.getName());
@@ -156,9 +144,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @PUT
- @Path("{id}")
- public Response updateGroup(@PathParam("id") int id, GroupRest in, @Context
Request request,
+ public Response updateGroup(int id, GroupRest in, @Context Request request,
@Context HttpHeaders headers,
@Context UriInfo uriInfo) {
@@ -178,9 +164,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @DELETE
- @Path("{id}")
- public Response deleteGroup(@PathParam("id") int id, @Context Request
request, @Context HttpHeaders headers,
+ public Response deleteGroup(int id, @Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo) {
try {
@@ -194,9 +178,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @GET
- @Path("{id}/resources") // TODO introduce paging through the list
- public Response getResources(@PathParam("id") int id, @Context Request
request, @Context HttpHeaders headers,
+ public Response getResources(int id, @Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo) {
ResourceGroup resourceGroup = fetchGroup(id);
@@ -222,9 +204,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @PUT
- @Path("{id}/resource/{resourceId}")
- public Response addResource(@PathParam("id") int id,
@PathParam("resourceId") int resourceId,
+ public Response addResource(int id, int resourceId,
@Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo) {
ResourceGroup resourceGroup = fetchGroup(id);
@@ -235,7 +215,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
// A resource type is set for the group, so only allow to add resources with the
same type.
if (resourceGroup.getResourceType()!=null) {
if (!res.getResourceType().equals(resourceGroup.getResourceType()))
- return Response.status(Response.Status.NOT_ACCEPTABLE).build();
+ return Response.status(Response.Status.CONFLICT).build();
}
// TODO if comp group and no resourceTypeId set, shall we allow to have it change
to a mixed group?
@@ -246,9 +226,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @DELETE
- @Path("{id}/resource/{resourceId}")
- public Response removeResource(@PathParam("id") int id,
@PathParam("resourceId") int resourceId,
+ public Response removeResource(int id, int resourceId,
@Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
ResourceGroup resourceGroup = fetchGroup(id);
@@ -299,8 +277,6 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @GET
- @Path("/definitions")
public Response getDefinitions(@Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
PageList<GroupDefinition> gdlist =
definitionManager.getGroupDefinitions(caller,new PageControl());
@@ -334,9 +310,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @GET
- @Path("/definition/{id}")
- public Response getDefinition(@PathParam("id") int definitionId, @Context
Request request,
+ public Response getDefinition(int definitionId, @Context Request request,
@Context HttpHeaders headers, @Context UriInfo uriInfo)
{
try {
@@ -365,9 +339,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @DELETE
- @Path("/definition/{id}")
- public Response deleteDefinition(@PathParam("id") int definitionId,
@Context Request request,
+ public Response deleteDefinition(int definitionId, @Context Request request,
@Context HttpHeaders headers, @Context UriInfo
uriInfo) {
try {
@@ -383,10 +355,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @POST
- @Path("/definitions")
- public Response createDefinition(
- GroupDefinitionRest definition,
+ public Response createDefinition(GroupDefinitionRest definition,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo) {
@@ -429,9 +398,7 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
}
@Override
- @PUT
- @Path("/definition/{id}")
- public Response updateDefinition(@PathParam("id") int definitionId,
+ public Response updateDefinition(int definitionId,
boolean recalculate, GroupDefinitionRest
definition,
@Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
index 3d3a197..1061521 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
@@ -18,6 +18,12 @@ import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiErrors;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.jboss.resteasy.annotations.cache.Cache;
import org.rhq.enterprise.server.rest.domain.GroupDefinitionRest;
@@ -29,76 +35,110 @@ import org.rhq.enterprise.server.rest.domain.GroupRest;
*/
@Local
@Path("/group/")
+@Api(value="Deal with groups and DynaGroups", description = "Api that
deals with resource groups and group definitions")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML,
"application/yaml"})
public interface GroupHandlerLocal {
@GET
@Path("/")
+ @ApiOperation(value = "List all groups", multiValueResponse = true)
public Response getGroups(@Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@Cache(isPrivate = true,maxAge = 60)
@GET
@Path("{id}")
- public Response getGroup(@PathParam("id") int id,@Context Request request,
@Context HttpHeaders headers,
+ @ApiOperation(value = "Get the group with the passed id")
+ public Response getGroup(
+ @ApiParam(value = "Id of the group") @PathParam("id") int
id,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@POST
@Path("/")
- public Response createGroup(GroupRest group, @Context Request request, @Context
HttpHeaders headers,
+ @ApiOperation(value = "Create a new group")
+ public Response createGroup(
+ @ApiParam(value = "A GroupRest object containing at least a name for the
group") GroupRest group,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@PUT
@Path("{id}")
- public Response updateGroup(@PathParam("id") int id, GroupRest in, @Context
Request request,
+ @ApiOperation(value = "Update the passed group")
+ public Response updateGroup(
+ @ApiParam(value = "Id of the group to update")
@PathParam("id") int id,
+ @ApiParam(value="New version of the group") GroupRest in,
+ @Context Request request,
@Context HttpHeaders headers,
@Context UriInfo uriInfo);
@DELETE
@Path("{id}")
- public Response deleteGroup(@PathParam("id") int id,@Context Request
request, @Context HttpHeaders headers,
+ @ApiOperation(value="Delete the group with the passed id")
+ public Response deleteGroup(
+ @ApiParam("Id of the group to delete") @PathParam("id")
int id,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@GET
@Path("{id}/resources")
@Cache(isPrivate = true,maxAge = 60)
- public Response getResources(@PathParam("id") int id, @Context Request
request, @Context HttpHeaders headers,
+ @ApiOperation(value="Get the resources of the group", multiValueResponse =
true)
+ public Response getResources(
+ @ApiParam("Id of the group to retrieve the resources for")
@PathParam("id") int id,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@PUT
@Path("{id}/resource/{resourceId}")
- public Response addResource(@PathParam("id") int id,
@PathParam("resourceId") int resourceId,
+ @ApiOperation(value="Add a resource to an existing group")
+ @ApiErrors({
+ @ApiError(code = 404,reason = "If there is no resource or group with the
passed id "),
+ @ApiError(code = 409,reason =" Resource type does not match the group
one")
+ })
+ public Response addResource(
+ @ApiParam("Id of the existing group") @PathParam("id")
int id,
+ @ApiParam("Id of the resource to add")
@PathParam("resourceId") int resourceId,
@Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@DELETE
@Path("{id}/resource/{resourceId}")
- public Response removeResource(@PathParam("id") int id,
@PathParam("resourceId") int resourceId,
+ @ApiOperation("Remove the resource with the passed id from the group")
+ public Response removeResource(
+ @ApiParam("Id of the existing group") @PathParam("id")
int id,
+ @ApiParam("Id of the resource to remove")
@PathParam("resourceId") int resourceId,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo);
@GET
@Path("/definitions")
+ @ApiOperation(value="List all existing GroupDefinitions",multiValueResponse
= true)
public Response getDefinitions(@Context Request request,@Context HttpHeaders
headers,
@Context UriInfo uriInfo);
@GET
@Path("/definition/{id}")
- public Response getDefinition(@PathParam("id") int definitionId,
+ @ApiOperation(value = "Retrieve a single GroupDefinition by id")
+ public Response getDefinition(
+ @ApiParam("The id of the definition to retrieve")
@PathParam("id") int definitionId,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo);
@DELETE
@Path("/definition/{id}")
- public Response deleteDefinition(@PathParam("id") int definitionId,
+ @ApiOperation("Delete the group definition with the passed id")
+ public Response deleteDefinition(
+ @ApiParam("The id of the definition to delete")
@PathParam("id") int definitionId,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo);
@POST
@Path("/definitions")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @ApiOperation("Create a new group definition. Returns the location of the new
definition in the header.")
public Response createDefinition(
GroupDefinitionRest definition,
@Context Request request, @Context HttpHeaders
headers,
@@ -107,8 +147,10 @@ public interface GroupHandlerLocal {
@PUT
@Path("/definition/{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- public Response updateDefinition(@PathParam("id") int definitionId,
- @QueryParam("recalculate")
@DefaultValue("false") boolean recalculate,
+ @ApiOperation("Update an existing group definition")
+ public Response updateDefinition(
+ @ApiParam("ID fo the definition to update")
@PathParam("id") int definitionId,
+ @ApiParam("If true, trigger a re-calculation")
@QueryParam("recalculate") @DefaultValue("false") boolean
recalculate,
GroupDefinitionRest definition,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
index c6e9450..977200b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
@@ -39,6 +39,12 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiErrors;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.rhq.enterprise.server.rest.domain.Baseline;
import org.rhq.enterprise.server.rest.domain.MetricAggregate;
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
@@ -49,19 +55,25 @@ import org.rhq.enterprise.server.rest.domain.StringValue;
* Deal with metrics
* @author Heiko W. Rupp
*/
+@Api(value = "Deal with metrics",
+ description = "This part of the API deals with exporting metrics")
@Produces({"application/json","application/xml",
"text/html"})
@Path("/metric")
@Local
public interface MetricHandlerLocal {
+ static String NO_RESOURCE_FOR_ID = "If no resource with the passed id
exists";
+ static String NO_SCHEDULE_FOR_ID = "No schedule with the passed id
exists";
@GET
@Path("data/{scheduleId}")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML})
- Response getMetricData(@PathParam("scheduleId") int scheduleId,
- @QueryParam("startTime") long startTime,
- @QueryParam("endTime") long endTime,
- @QueryParam("dataPoints")
@DefaultValue("60") int dataPoints,
+ @ApiOperation(value = "Get the bucketized metric values for the schedule
")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Response getMetricData(@ApiParam("Schedule Id of the values to query")
@PathParam("scheduleId") int scheduleId,
+ @ApiParam("Start time since epoch")
@QueryParam("startTime") long startTime,
+ @ApiParam("End time since epoch")
@QueryParam("endTime") long endTime,
+ @ApiParam("Number of buckets - currently fixed at
60") @QueryParam("dataPoints") @DefaultValue("60") int
dataPoints,
@QueryParam("hideEmpty") boolean hideEmpty,
@Context Request request,
@Context HttpHeaders headers);
@@ -80,7 +92,9 @@ public interface MetricHandlerLocal {
@GET
@Path("data/resource/{resourceId}")
- List<MetricAggregate>
getAggregatesForResource(@PathParam("resourceId") int resourceId);
+ @ApiOperation("Retrieve a list of high/low/average/data aggregate for the
resource")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ List<MetricAggregate> getAggregatesForResource(@ApiParam("Resource to
query") @PathParam("resourceId") int resourceId);
/**
* Get information about the schedule
@@ -93,7 +107,10 @@ public interface MetricHandlerLocal {
@GET
@Path("/schedule/{id}")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML})
- Response getSchedule(@PathParam("id") int scheduleId, @Context Request
request, @Context HttpHeaders headers,
+ @ApiOperation("Get the metric schedule for the passed id")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Response getSchedule(@ApiParam("Schedule Id") @PathParam("id")
int scheduleId,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
/**
@@ -107,7 +124,11 @@ public interface MetricHandlerLocal {
@Path("/schedule/{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- Response updateSchedule(@PathParam("id") int scheduleId, MetricSchedule
in,@Context HttpHeaders headers);
+ @ApiOperation(value = "Update the schedule (enabled, interval) ",
responseClass = "MetricSchedule")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Response updateSchedule(@ApiParam("Id of the schedule to query")
@PathParam("id") int scheduleId,
+ @ApiParam(value = "New schedule data", required =
true) MetricSchedule in,
+ @Context HttpHeaders headers);
/**
* Expose the raw metrics for the given schedule
@@ -117,15 +138,20 @@ public interface MetricHandlerLocal {
* @param duration Duration in seconds. If duration=0, startTime is used
* @param request Injected Request headers
* @param headers Injected HttpHeaders
- * @return a JSON encoded stream of numerical values
+ * @return an encoded stream of numerical values
*/
+ @ApiOperation(value = "Expose the raw metrics of a single schedule. This can
only expose raw data, which means the start date may "
+ + "not be older than 7 days.")
@GET
@Path("data/{scheduleId}/raw")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,"text/csv",MediaType.TEXT_HTML})
- StreamingOutput getMetricDataRaw(@PathParam("scheduleId") int scheduleId,
- @QueryParam("startTime") long startTime,
- @QueryParam("endTime") long endTime,
- @QueryParam("duration") long duration,
+ @ApiErrors({
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ })
+ StreamingOutput getMetricDataRaw(@ApiParam(required = true)
@PathParam("scheduleId") int scheduleId,
+ @ApiParam(value="Start time since epoch",
defaultValue = "Now - 8h") @QueryParam("startTime") long startTime,
+ @ApiParam(value="End time since epoch",
defaultValue = "Now") @QueryParam("endTime") long endTime,
+ @ApiParam(defaultValue = "8h =
28800000ms", value = "Timespan in ms") @QueryParam("duration")
long duration,
@Context Request request,
@Context HttpHeaders headers);
@@ -142,8 +168,11 @@ public interface MetricHandlerLocal {
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Path("data/{scheduleId}/raw/{timeStamp}")
- Response putMetricValue(@PathParam("scheduleId") int scheduleId,
- @PathParam("timeStamp") long timestamp,
NumericDataPoint point,
+ @ApiOperation("Submit a single (numerical) metric to the server")
+ @ApiError(code=404, reason = NO_SCHEDULE_FOR_ID)
+ Response putMetricValue(@ApiParam("Id of the schedule")
@PathParam("scheduleId") int scheduleId,
+ @ApiParam("Timestamp of the metric")
@PathParam("timeStamp") long timestamp,
+ @ApiParam(value = "Data point", required = true)
NumericDataPoint point,
@Context HttpHeaders headers,
@Context UriInfo uriInfo);
@@ -156,19 +185,24 @@ public interface MetricHandlerLocal {
@POST
@Path("data/raw")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @ApiOperation("Submit a series of (numerical) metric values to the
server")
Response postMetricValues(Collection<NumericDataPoint> points, @Context
HttpHeaders headers);
@GET
@Path("data/{scheduleId}/baseline")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- Baseline getBaseline(@PathParam("scheduleId") int scheduleId,
+ @ApiOperation(value = "Get the current baseline for the schedule")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Baseline getBaseline(@ApiParam("Id of the schedule")
@PathParam("scheduleId") int scheduleId,
@Context HttpHeaders headers,
@Context UriInfo uriInfo);
@PUT
@Path("data/{scheduleId}/baseline")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- void setBaseline(@PathParam("scheduleId") int scheduleId,
+ @ApiOperation(value = "Set a new baseline for the schedule")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ void setBaseline(@ApiParam("Id of the schedule")
@PathParam("scheduleId") int scheduleId,
Baseline baseline,
@Context HttpHeaders headers,
@Context UriInfo uriInfo);
@@ -176,10 +210,14 @@ public interface MetricHandlerLocal {
@PUT
@Path("data/{scheduleId}/trait")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- Response putTraitValue(@PathParam("scheduleId") int scheduleId, StringValue
value);
+ @ApiOperation(value = "Submit a new trait value for the passed schedule
id")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Response putTraitValue(@ApiParam("Id of the schedule")
@PathParam("scheduleId") int scheduleId, StringValue value);
@GET
@Path("data/{scheduleId}/trait")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- Response getTraitValue(@PathParam("scheduleId") int scheduleId);
+ @ApiOperation(value="Get the current value of the trait with the passed schedule
id", responseClass = "StringValue")
+ @ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
+ Response getTraitValue(@ApiParam("Id of the schedule")
@PathParam("scheduleId") int scheduleId);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerBean.java
index be39ede..8b827b8 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerBean.java
@@ -27,13 +27,6 @@ import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
@@ -48,12 +41,10 @@ import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
-import org.rhq.core.domain.criteria.OperationHistoryCriteria;
import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria;
import org.rhq.core.domain.operation.HistoryJobId;
import org.rhq.core.domain.operation.JobId;
import org.rhq.core.domain.operation.OperationDefinition;
-import org.rhq.core.domain.operation.OperationHistory;
import org.rhq.core.domain.operation.ResourceOperationHistory;
import org.rhq.core.domain.operation.bean.ResourceOperationSchedule;
import org.rhq.core.domain.resource.Resource;
@@ -167,9 +158,7 @@ public class OperationsHandlerBean extends AbstractRestBean implements
Operation
}
@Override
- public Response createOperation(@PathParam("id") int definitionId,
- @QueryParam("resourceId") Integer
resourceId,
- UriInfo uriInfo) {
+ public Response createOperation(int definitionId, Integer resourceId, UriInfo
uriInfo) {
if (resourceId == null)
throw new ParameterMissingException("resourceId");
@@ -208,7 +197,7 @@ public class OperationsHandlerBean extends AbstractRestBean implements
Operation
}
@Override
- public Response getOperation(@PathParam("id") int operationId) {
+ public Response getOperation(int operationId) {
OperationRest op = getFromCache(operationId,OperationRest.class);
if (op==null)
throw new StuffNotFoundException("Operation with id " +
operationId);
@@ -217,10 +206,10 @@ public class OperationsHandlerBean extends AbstractRestBean
implements Operation
}
@Override
- public Response updateOperation(@PathParam("id") int operationId,
OperationRest operation, UriInfo uriInfo) {
+ public Response updateOperation(int operationId, OperationRest operation, UriInfo
uriInfo) {
if (operation.getState().equals("creating") &&
operation.getDefinitionId()>0 && !operation.getName().isEmpty()) {
- // TODO check all the required parameters for persence before allowing to
submit
+ // TODO check all the required parameters for presence before allowing to
submit
operation.setState("ready");
}
if (operation.getState().equals("ready")) {
@@ -256,10 +245,7 @@ public class OperationsHandlerBean extends AbstractRestBean
implements Operation
}
@Override
- @DELETE
- @Path("{id}")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response cancelOperation(@PathParam("id") int operationId) {
+ public Response cancelOperation(int operationId) {
log.info("Cancel called");
@@ -269,9 +255,7 @@ public class OperationsHandlerBean extends AbstractRestBean implements
Operation
}
@Override
- @GET
- @Path("history/{id}")
- public Response outcome(@PathParam("id") String jobName, @Context UriInfo
uriInfo) {
+ public Response outcome(String jobName, UriInfo uriInfo) {
ResourceOperationHistoryCriteria criteria = new
ResourceOperationHistoryCriteria();
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerLocal.java
index 79c20bb..a4268b7 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/OperationsHandlerLocal.java
@@ -18,8 +18,6 @@
*/
package org.rhq.enterprise.server.rest;
-import java.util.List;
-
import javax.ejb.Local;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -37,9 +35,11 @@ import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.jboss.resteasy.annotations.cache.Cache;
-import org.rhq.enterprise.server.rest.domain.OperationDefinitionRest;
import org.rhq.enterprise.server.rest.domain.OperationRest;
/**
@@ -55,40 +55,56 @@ public interface OperationsHandlerLocal {
@GET
@Path("definition/{id}")
@Cache(maxAge = 1200)
- public Response getOperationDefinition(@PathParam("id") int definitionId,
- @QueryParam("resourceId") Integer
resourceId,
- @Context UriInfo uriInfo,
- @Context Request request,
- @Context HttpHeaders httpHeaders);
+ @ApiOperation("Retrieve a single operation definition by its id")
+ public Response getOperationDefinition(
+ @ApiParam("Id of the definition to retrieve")
@PathParam("id") int definitionId,
+ @ApiParam("Id of a resource that supports this operation")
@QueryParam("resourceId") Integer resourceId,
+ @Context UriInfo uriInfo,
+ @Context Request request,
+ @Context HttpHeaders httpHeaders);
@GET
@Path("definitions")
@Cache(maxAge = 1200)
- public Response getOperationDefinitions(@QueryParam("resourceId") Integer
resourceId,
+ @ApiOperation("List all operation definitions for a resource")
+ public Response getOperationDefinitions(
+ @ApiParam(value = "Id of the resource",required = true)
@QueryParam("resourceId") Integer resourceId,
@Context UriInfo uriInfo,
@Context Request request
);
@POST
@Path("definition/{id}")
- public Response createOperation(@PathParam("id") int definitionId,
- @QueryParam("resourceId") Integer
resourceId,
+ @ApiOperation("Create a new (draft) operation from the passed definition id for
the passed resource")
+ public Response createOperation(
+ @ApiParam("Id of the definition") @PathParam("id") int
definitionId,
+ @ApiParam(value = "Id of the resource", required = true)
@QueryParam("resourceId") Integer resourceId,
@Context UriInfo uriInfo);
@GET
@Path("{id}")
- public Response getOperation(@PathParam("id") int operationId);
+ @ApiOperation("Return a (draft) operation")
+ public Response getOperation(
+ @ApiParam("Id of the operation to retrieve")
@PathParam("id") int operationId);
@PUT
@Path("{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
- public Response updateOperation(@PathParam("id") int operationId,
OperationRest operation, @Context UriInfo uriInfo);
+ @ApiOperation("Update a (draft) operation. If the state is set to
'ready', the operation will be scheduled")
+ public Response updateOperation(
+ @ApiParam("Id of the operation to update")
@PathParam("id") int operationId,
+ OperationRest operation, @Context UriInfo uriInfo);
@DELETE
@Path("{id}")
- public Response cancelOperation(@PathParam("id") int operationId);
+ @ApiOperation("Delete a (draft) operation")
+ public Response cancelOperation(
+ @ApiParam("Id of the operation to remove")
@PathParam("id") int operationId);
@GET
@Path("history/{id}")
- public Response outcome(@PathParam("id") String jobName, @Context UriInfo
uriInfo);
+ @ApiOperation("Return the outcome of the scheduled operation")
+ public Response outcome(
+ @ApiParam("Name of the submitted job.") @PathParam("id")
String jobName,
+ @Context UriInfo uriInfo);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index dde4380..4825b02 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -31,6 +31,10 @@ import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.GenericEntity;
@@ -49,19 +53,21 @@ import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.MeasurementSchedule;
+import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageControl;
+import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
+import org.rhq.enterprise.server.core.AgentManagerLocal;
import org.rhq.enterprise.server.measurement.AvailabilityManagerLocal;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal;
+import org.rhq.enterprise.server.resource.ResourceAlreadyExistsException;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
-import org.rhq.enterprise.server.rest.domain.AvailabilityRest;
-import org.rhq.enterprise.server.rest.domain.Link;
-import org.rhq.enterprise.server.rest.domain.MetricSchedule;
-import org.rhq.enterprise.server.rest.domain.ResourceWithChildren;
-import org.rhq.enterprise.server.rest.domain.ResourceWithType;
+import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
+import org.rhq.enterprise.server.rest.domain.*;
/**
* Class that deals with getting data about resources
@@ -79,6 +85,13 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
MeasurementScheduleManagerLocal scheduleManager;
@EJB
AlertManagerLocal alertManager;
+ @EJB
+ ResourceTypeManagerLocal resourceTypeManager;
+ @EJB
+ AgentManagerLocal agentMgr;
+
+ @PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME)
+ private EntityManager entityManager;
@Override
public Response getResource(int id, @Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
@@ -332,4 +345,139 @@ public class ResourceHandlerBean extends AbstractRestBean implements
ResourceHan
return res;
}
+
+
+ @Override
+ public Response createPlatform(@PathParam("name") String name, StringValue
typeValue, @Context UriInfo uriInfo) {
+ String typeName = typeValue.getValue();
+
+ ResourceType type =
resourceTypeManager.getResourceTypeByNameAndPlugin(typeName,"Platforms");
+ if (type==null) {
+ throw new StuffNotFoundException("Platform with type [" + typeName
+ "]");
+ }
+
+ String resourceKey = "p:" + name;
+ Resource r =
resMgr.getResourceByParentAndKey(caller,null,resourceKey,"Platforms",typeName);
+ if (r!=null) {
+ // platform exists - return it
+ ResourceWithType rwt = fillRWT(r,uriInfo);
+
+ UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/resource/{id}");
+ URI uri = uriBuilder.build(r.getId());
+
+
+ javax.ws.rs.core.Response.ResponseBuilder builder = Response.ok(rwt);
+ builder.location(uri);
+ return builder.build();
+
+ }
+
+ // Create a dummy agent per platform - otherwise we can't delete the platform
later
+ Agent agent ;
+ agent = new
Agent("dummy-agent:name"+name,"-dummy-p:"+name,12345,...;
+ agentMgr.createAgent(agent);
+
+
+
+ Resource platform = new Resource(resourceKey,name,type);
+ platform.setUuid(resourceKey);
+ platform.setAgent(agent);
+ platform.setInventoryStatus(InventoryStatus.COMMITTED);
+ platform.setModifiedBy(caller.getName());
+ platform.setDescription(type.getDescription() + ". Created via
REST-api");
+ platform.setItime(System.currentTimeMillis());
+
+ try {
+ resMgr.createResource(caller,platform,-1);
+
+ createSchedules(platform);
+
+ ResourceWithType rwt = fillRWT(platform,uriInfo);
+ UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/resource/{id}");
+ URI uri = uriBuilder.build(platform.getId());
+
+ javax.ws.rs.core.Response.ResponseBuilder builder = Response.created(uri);
+ builder.entity(rwt);
+ return builder.build();
+
+
+ } catch (ResourceAlreadyExistsException e) {
+ throw new IllegalArgumentException(e);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ private void createSchedules(Resource resource) {
+ ResourceType rt = resource.getResourceType();
+ Set<MeasurementDefinition> definitions = rt.getMetricDefinitions ();
+ for (MeasurementDefinition definition : definitions) {
+ MeasurementSchedule schedule = new MeasurementSchedule(definition,resource);
+ schedule.setEnabled(definition.isDefaultOn());
+ schedule.setInterval(definition.getDefaultInterval());
+ entityManager.persist(schedule);
+ }
+ }
+
+ @Override
+ public Response createResource(@PathParam("name") String name, StringValue
typeValue,
+ @QueryParam("plugin") String plugin, int
parentId, UriInfo uriInfo) {
+
+ Resource parent = resMgr.getResourceById(caller,parentId);
+ if (parent==null)
+ throw new StuffNotFoundException("Parent with id [" + parentId +
"]");
+
+ String typeName = typeValue.getValue();
+ ResourceType resType =
resourceTypeManager.getResourceTypeByNameAndPlugin(typeName,plugin);
+ if (resType==null)
+ throw new StuffNotFoundException("ResourceType with name [" +
typeName + "] and plugin [" + plugin + "]");
+
+ String resourceKey = "res:" + name + ":" + parentId;
+
+
+ Resource r =
resMgr.getResourceByParentAndKey(caller,null,resourceKey,plugin,typeName);
+ if (r!=null) {
+ // platform exists - return it
+ ResourceWithType rwt = fillRWT(r,uriInfo);
+
+ UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/resource/{id}");
+ URI uri = uriBuilder.build(r.getId());
+
+
+ javax.ws.rs.core.Response.ResponseBuilder builder = Response.ok(rwt);
+ builder.location(uri);
+ return builder.build();
+
+ }
+
+
+ Resource res = new Resource(resourceKey,name,resType);
+ res.setUuid(resourceKey);
+ res.setAgent(parent.getAgent());
+ res.setParentResource(parent);
+ res.setInventoryStatus(InventoryStatus.COMMITTED);
+ res.setDescription(resType.getDescription() + ". Created via
REST-api");
+
+ try {
+ resMgr.createResource(caller,res,parent.getId());
+
+ createSchedules(res);
+
+ ResourceWithType rwt = fillRWT(res,uriInfo);
+
+ javax.ws.rs.core.Response.ResponseBuilder builder = Response.ok(rwt);
+ return builder.build();
+
+
+ } catch (ResourceAlreadyExistsException e) {
+ throw new IllegalArgumentException(e);
+ }
+
+
+ }
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
index 4abe639..1b6ef0d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerLocal.java
@@ -23,6 +23,7 @@ import java.util.List;
import javax.ejb.Local;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
+import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@@ -35,16 +36,17 @@ import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiError;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.jboss.resteasy.annotations.cache.Cache;
import org.jboss.resteasy.links.AddLinks;
import org.jboss.resteasy.links.LinkResource;
import org.jboss.resteasy.links.LinkResources;
-import org.rhq.enterprise.server.rest.domain.AvailabilityRest;
-import org.rhq.enterprise.server.rest.domain.Link;
-import org.rhq.enterprise.server.rest.domain.MetricSchedule;
-import org.rhq.enterprise.server.rest.domain.ResourceWithChildren;
-import org.rhq.enterprise.server.rest.domain.ResourceWithType;
+import org.rhq.enterprise.server.rest.domain.*;
/**
* Interface class that describes the REST interface
@@ -53,8 +55,11 @@ import org.rhq.enterprise.server.rest.domain.ResourceWithType;
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML})
@Path("/resource")
@Local
+@Api(value="Resource related", description = "This endpoint deals with
single resources, not groups")
public interface ResourceHandlerLocal {
+ static String NO_RESOURCE_FOR_ID = "If no resource with the passed id
exists";
+
@AddLinks
@LinkResources({
@LinkResource(rel="children", value = ResourceWithType.class)
@@ -62,12 +67,17 @@ public interface ResourceHandlerLocal {
@GET
@Path("/{id}")
@Cache(isPrivate = true,maxAge = 120)
- Response getResource(@PathParam("id") int id, @Context Request request,
@Context HttpHeaders headers,
+ @ApiOperation(value = "Retrieve a single resource", responseClass =
"ResourceWithType")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ Response getResource(
+ @ApiParam("Id of the resource to retrieve")
@PathParam("id") int id,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@GET
@Path("/platforms")
- @Cache(isPrivate = true,maxAge = 300)
+ @Cache(isPrivate = true,maxAge = 300)
+ @ApiOperation(value = "List all platforms in the system",
multiValueResponse = true, responseClass = "ResourceWithType")
Response getPlatforms(@Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@@ -75,40 +85,81 @@ public interface ResourceHandlerLocal {
@GET
@Path("/{id}/hierarchy")
@Produces({"application/json","application/xml"})
- ResourceWithChildren getHierarchy(@PathParam("id")int baseResourceId);
+ @ApiOperation(value = "Retrieve the hierarchy of resources starting with the
passed one", multiValueResponse = true, responseClass =
"ResourceWithType")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ ResourceWithChildren getHierarchy(
+ @ApiParam("Id of the resource to start with")
@PathParam("id")int baseResourceId);
@LinkResource(rel = "availability", value = AvailabilityRest.class)
@GET
@Path("/{id}/availability")
- AvailabilityRest getAvailability(@PathParam("id") int resourceId);
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ @ApiOperation("Return the current availability for the passed resource")
+ AvailabilityRest getAvailability(
+ @ApiParam("Id of the resource to query") @PathParam("id")
int resourceId);
@PUT
@Path("/{id}/availability")
- public void reportAvailability(@PathParam("id") int resourceId,
AvailabilityRest avail);
+ @ApiOperation("Set the current availability of the passed resource")
+ public void reportAvailability(
+ @ApiParam("Id of the resource to update")
@PathParam("id") int resourceId,
+ @ApiParam(value= "New Availability setting", required = true)
AvailabilityRest avail);
@GET
@Path("/{id}/schedules")
@LinkResource(rel="schedules",value = MetricSchedule.class)
@Cache(isPrivate = true,maxAge = 60)
- Response getSchedules(@PathParam("id") int resourceId,
- @QueryParam("type")
@DefaultValue("all") String scheduleType,
- @QueryParam("enabledOnly")
@DefaultValue("true") boolean enabledOnly,
- @QueryParam("name") String name,
- @Context Request request,
- @Context HttpHeaders headers,
- @Context UriInfo uriInfo);
+ @ApiOperation(value ="Get the metric schedules of the passed resource id",
multiValueResponse = true, responseClass = "MetricSchedule")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ Response getSchedules(@ApiParam("Id of the resource to obtain the schedules
for") @PathParam("id") int resourceId,
+ @ApiParam(value = "Limit by type", allowableValues =
"<empty>, all, metric, trait, measurement" )@QueryParam("type")
@DefaultValue("all") String scheduleType,
+ @ApiParam(value = "Limit by enabled schedules")
@QueryParam("enabledOnly") @DefaultValue("true") boolean enabledOnly,
+ @ApiParam(value = "Limit by name") @QueryParam("name")
String name,
+ @Context Request request,
+ @Context HttpHeaders headers,
+ @Context UriInfo uriInfo);
@GET
@Path("/{id}/children")
@LinkResource(rel="children", value = ResourceWithType.class)
- Response getChildren(@PathParam("id") int id, @Context Request request,
@Context HttpHeaders headers,
+ @ApiOperation(value = "Get the direct children of the passed resource")
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ Response getChildren(
+ @ApiParam("Id of the resource to get children")
@PathParam("id") int id,
+ @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
@AddLinks
@GET
@Path(("/{id}/alerts"))
- List<Link> getAlertsForResource(@PathParam("id") int resourceId); //
TODO paging + status
+ @ApiError(code = 404, reason = NO_RESOURCE_FOR_ID)
+ @ApiOperation("Get a list of links to the alerts for the passed resource")
+ List<Link> getAlertsForResource(
+ @ApiParam("Id of the resource to query") @PathParam("id")
int resourceId); // TODO paging + status
+
+
+
+ @ApiOperation(value = "Creata a new platform in the Server. If the platform
already exists, this is a no-op." +
+ "The platform internally has a special name so that it will not clash
with one that was generated" +
+ "via a normal RHQ agent")
+ @POST
+ @Path("platform/{name}")
+ public Response createPlatform(
+ @ApiParam(value = "Name of the platform")
@PathParam("name") String name,
+ @ApiParam(value = "Type of the platform", allowableValues =
"Linux,Windows,... TODO") StringValue type,
+ @Context UriInfo uriInfo);
+
+ @ApiOperation(value = "Create a resource with a given type below a certain
parent")
+ @POST
+ @Path("{name}")
+ public javax.ws.rs.core.Response createResource(
+ @ApiParam("Name of the new resource") @PathParam("name")
String name,
+ @ApiParam("Name of the Resource tpye") StringValue type,
+ @ApiParam("Name of the plugin providing the type")
@QueryParam("plugin") String plugin,
+ @ApiParam("Id of the future parent to attach this to")
@QueryParam("parentId") int parentId,
+ @Context UriInfo uriInfo);
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
index 838fbad..0c316a9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/StatusHandlerLocal.java
@@ -26,15 +26,20 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+
/**
* Return some status information about the system
* @author Heiko W. Rupp
*/
+@Api(value = "Provide system status information")
@Path("/status")
@Local
@Produces({"application/json","application/xml","text/html"})
public interface StatusHandlerLocal {
+ @ApiOperation("Retrieve the current configured state of the server along with
some runtime information")
@GET
@Path("/")
Response getStatus(@Context HttpHeaders httpHeaders);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
index 9073f32..5093414 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/UserHandlerLocal.java
@@ -31,6 +31,10 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+
import org.rhq.enterprise.server.rest.domain.ResourceWithType;
/**
@@ -40,17 +44,25 @@ import org.rhq.enterprise.server.rest.domain.ResourceWithType;
@Produces({"application/json","application/xml","text/plain"})
@Path("/user")
@Local
+@Api(value="Api that deals with user related stuff")
public interface UserHandlerLocal {
@GET
@Path("favorites/resource")
+ @ApiOperation(value = "Return a list of favorite resources",
multiValueResponse = true)
public List<ResourceWithType> getFavorites(@Context UriInfo uriInfo);
@PUT
@Path("favorites/resource/{id}")
- public void addFavoriteResource(@PathParam("id") int id);
+ @ApiOperation(value = "Add a resource as favorite")
+ public void addFavoriteResource(
+ @ApiParam(name = "id", value = "Id of the resource")
+ @PathParam("id") int id);
@DELETE
@Path("favorites/resource/{id}")
- public void removeResourceFromFavorites(@PathParam("id") int id);
+ @ApiOperation(value="Remove a resource from favorites")
+ public void removeResourceFromFavorites(
+ @ApiParam(name="id", value = "Id of the resource")
+ @PathParam("id") int id);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/AlertDefinitionLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/AlertDefinitionLocal.java
index 8d3d4c2..f42c190 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/AlertDefinitionLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/AlertDefinitionLocal.java
@@ -5,12 +5,17 @@ import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+
@Path("/alertDefinitions")
@Local
+@Api(basePath="http://localhost:7080/coregui/reports", value = "The Alert
definitions report")
public interface AlertDefinitionLocal {
@GET
@Produces({"text/csv"})
+ @ApiOperation(value = "Export the AlertDefinitions in the system")
StreamingOutput alertDefinitions(@Context HttpServletRequest request);
}
diff --git a/modules/enterprise/server/jar/src/main/resources/docbook.rnc
b/modules/enterprise/server/jar/src/main/resources/docbook.rnc
new file mode 100644
index 0000000..104d46b
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/resources/docbook.rnc
@@ -0,0 +1,10643 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+default namespace db = "http://docbook.org/ns/docbook"
+namespace html = "http://www.w3.org/1999/xhtml"
+namespace mml = "http://www.w3.org/1998/Math/MathML"
+namespace rng = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace svg = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+s:ns [
+ prefix = "a"
+ uri = "http://relaxng.org/ns/compatibility/annotations/1.0"
+]
+s:ns [ prefix = "ctrl" uri =
"http://nwalsh.com/xmlns/schema-control/" ]
+s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ]
+s:ns [
+ prefix = "dbx"
+ uri =
+ "http://sourceforge.net/projects/docbook/defguide/schema/extra-markup"
+]
+s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ]
+s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ]
+s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ]
+s:ns [ prefix = "s" uri = "http://www.ascc.net/xml/schematron" ]
+s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ]
+s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ]
+# DocBook V5.0CR5
+
+# See
http://docbook.org/ns/docbook
+
+# This file is part of DocBook V5.0
+#
+# Copyright 1992-2008 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+#
+# Release: $Id: docbook.rnc 7661 2008-02-06 13:52:59Z nwalsh $
+#
+# Permission to use, copy, modify and distribute the DocBook schema
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies. The copyright
+# holders make no representation about the suitability of the schema
+# for any purpose. It is provided "as is" without expressed or implied
+# warranty.
+#
+# If you modify the DocBook schema in any way, label your schema as a
+# variant of DocBook. See the reference documentation
+# (
http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+# for more information.
+#
+# Please direct all questions, bug reports, or suggestions for changes
+# to the docbook(a)lists.oasis-open.org mailing list. For more
+# information, see
http://www.oasis-open.org/docbook/.
+#
+# ======================================================================
+start =
+ (db.set
+ | db.book
+ | db.divisions
+ | db.components
+ | db.navigation.components
+ | db.section
+ | db.para)
+ | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5)
+ | (db.refentry | db.refsection)
+ | (db.refsect1 | db.refsect2 | db.refsect3)
+ | db.setindex
+div {
+ db._any.attribute =
+
+ ## Any attribute including in any attribute in any namespace.
+ attribute * { text }
+ db._any =
+
+ ## Any element from almost any namespace
+ element * - (db:* | html:*) {
+ (db._any.attribute | text | db._any)*
+ }
+}
+db.arch.attribute =
+
+ ## Designates the computer or chip architecture to which the element applies
+ attribute arch { text }
+db.audience.attribute =
+
+ ## Designates the intended audience to which the element applies, for example, system
administrators, programmers, or new users.
+ attribute audience { text }
+db.condition.attribute =
+
+ ## provides a standard place for application-specific effectivity
+ attribute condition { text }
+db.conformance.attribute =
+
+ ## Indicates standards conformance characteristics of the element
+ attribute conformance { text }
+db.os.attribute =
+
+ ## Indicates the operating system to which the element is applicable
+ attribute os { text }
+db.revision.attribute =
+
+ ## Indicates the editorial revision to which the element belongs
+ attribute revision { text }
+db.security.attribute =
+
+ ## Indicates something about the security level associated with the element to which it
applies
+ attribute security { text }
+db.userlevel.attribute =
+
+ ## Indicates the level of user experience for which the element applies
+ attribute userlevel { text }
+db.vendor.attribute =
+
+ ## Indicates the computer vendor to which the element applies.
+ attribute vendor { text }
+db.wordsize.attribute =
+
+ ## Indicates the word size (width in bits) of the computer architecture to which the
element applies
+ attribute wordsize { text }
+db.effectivity.attributes =
+ db.arch.attribute?
+ & db.audience.attribute?
+ & db.condition.attribute?
+ & db.conformance.attribute?
+ & db.os.attribute?
+ & db.revision.attribute?
+ & db.security.attribute?
+ & db.userlevel.attribute?
+ & db.vendor.attribute?
+ & db.wordsize.attribute?
+db.endterm.attribute =
+
+ ## Points to the element whose content is to be used as the text of the link
+ attribute endterm { xsd:IDREF }
+db.linkend.attribute =
+
+ ## Points to an internal link target by identifying the value of its xml:id attribute
+ attribute linkend { xsd:IDREF }
+db.linkends.attribute =
+
+ ## Points to one or more internal link targets by identifying the value of their xml:id
attributes
+ attribute linkends { xsd:IDREFS }
+db.xlink.href.attribute =
+
+ ## Identifies a link target with a URI
+ attribute xlink:href { xsd:anyURI }
+db.xlink.type.attribute =
+
+ ## Identifies the XLink link type
+ attribute xlink:type {
+
+ ## An XLink simple link
+ "simple"
+ }
+db.xlink.role.attribute =
+
+ ## Identifies the XLink role of the link
+ attribute xlink:role { xsd:anyURI }
+db.xlink.arcrole.attribute =
+
+ ## Identifies the XLink arcrole of the link
+ attribute xlink:arcrole { xsd:anyURI }
+db.xlink.title.attribute =
+
+ ## Identifies the XLink title of the link
+ attribute xlink:title { text }?
+db.xlink.show.enumeration =
+
+ ## An application traversing to the ending resource should load it in a new window,
frame, pane, or other relevant presentation context.
+ "new"
+ |
+ ## An application traversing to the ending resource should load the resource in the
same window, frame, pane, or other relevant presentation context in which the starting
resource was loaded.
+ "replace"
+ |
+ ## An application traversing to the ending resource should load its presentation in
place of the presentation of the starting resource.
+ "embed"
+ |
+ ## The behavior of an application traversing to the ending resource is unconstrained
by XLink. The application should look for other markup present in the link to determine
the appropriate behavior.
+ "other"
+ |
+ ## The behavior of an application traversing to the ending resource is unconstrained
by this specification. No other markup is present to help the application determine the
appropriate behavior.
+ "none"
+db.xlink.show.attribute =
+
+ ## Identifies the XLink show behavior of the link
+ attribute xlink:show { db.xlink.show.enumeration }
+db.xlink.actuate.enumeration =
+
+ ## An application should traverse to the ending resource immediately on loading the
starting resource.
+ "onLoad"
+ |
+ ## An application should traverse from the starting resource to the ending resource
only on a post-loading event triggered for the purpose of traversal.
+ "onRequest"
+ |
+ ## The behavior of an application traversing to the ending resource is unconstrained
by this specification. The application should look for other markup present in the link to
determine the appropriate behavior.
+ "other"
+ |
+ ## The behavior of an application traversing to the ending resource is unconstrained
by this specification. No other markup is present to help the application determine the
appropriate behavior.
+ "none"
+db.xlink.actuate.attribute =
+
+ ## Identifies the XLink actuate behavior of the link
+ attribute xlink:actuate { db.xlink.actuate.enumeration }
+db.href.attributes =
+ db.xlink.href.attribute
+ & db.xlink.type.attribute?
+ & db.xlink.role.attribute?
+ & db.xlink.arcrole.attribute?
+ & db.xlink.title.attribute?
+ & db.xlink.show.attribute?
+ & db.xlink.actuate.attribute?
+db.xml.id.attribute =
+
+ ## Identifies the unique ID value of the element
+ attribute xml:id { xsd:ID }
+db.version.attribute =
+
+ ## Specifies the DocBook version of the element and its descendants
+ attribute version { text }
+db.xml.lang.attribute =
+
+ ## Specifies the natural language of the element and its descendants
+ attribute xml:lang { text }
+db.xml.base.attribute =
+
+ ## Specifies the base URI of the element and its descendants
+ attribute xml:base { xsd:anyURI }
+db.remap.attribute =
+
+ ## Provides the name or similar semantic identifier assigned to the content in some
previous markup scheme
+ attribute remap { text }
+db.xreflabel.attribute =
+
+ ## Provides the text that is to be generated for a cross reference to the element
+ attribute xreflabel { text }
+db.xrefstyle.attribute =
+
+ ## Specifies a keyword or keywords identifying additional style information
+ attribute xrefstyle { text }
+db.revisionflag.enumeration =
+
+ ## The element has been changed.
+ "changed"
+ |
+ ## The element is new (has been added to the document).
+ "added"
+ |
+ ## The element has been deleted.
+ "deleted"
+ |
+ ## Explicitly turns off revision markup for this element.
+ "off"
+db.revisionflag.attribute =
+
+ ## Identifies the revision status of the element
+ attribute revisionflag { db.revisionflag.enumeration }
+db.dir.enumeration =
+
+ ## Left-to-right text
+ "ltr"
+ |
+ ## Right-to-left text
+ "rtl"
+ |
+ ## Left-to-right override
+ "lro"
+ |
+ ## Right-to-left override
+ "rlo"
+db.dir.attribute =
+
+ ## Identifies the direction of text in an element
+ attribute dir { db.dir.enumeration }
+db.common.base.attributes =
+ db.version.attribute?
+ & db.xml.lang.attribute?
+ & db.xml.base.attribute?
+ & db.remap.attribute?
+ & db.xreflabel.attribute?
+ & db.revisionflag.attribute?
+ & db.dir.attribute?
+ & db.effectivity.attributes
+db.common.attributes =
+ db.xml.id.attribute?
+ & db.common.base.attributes
+ & db.annotations.attribute?
+db.common.idreq.attributes =
+ db.xml.id.attribute
+ & db.common.base.attributes
+ & db.annotations.attribute?
+db.common.linking.attributes =
+ (db.linkend.attribute | db.href.attributes)?
+db.common.req.linking.attributes =
+ db.linkend.attribute | db.href.attributes
+db.common.data.attributes =
+
+ ## Specifies the format of the data
+ attribute format { text }?,
+ (
+ ## Indentifies the location of the data by URI
+ attribute fileref { xsd:anyURI }
+ |
+ ## Identifies the location of the data by external identifier (entity name)
+ attribute entityref { xsd:ENTITY })
+db.verbatim.continuation.enumeration =
+
+ ## Line numbering continues from the immediately preceding element with the same name.
+ "continues"
+ |
+ ## Line numbering restarts (begins at 1, usually).
+ "restarts"
+db.verbatim.continuation.attribute =
+
+ ## Determines whether line numbering continues from the previous element or restarts.
+ attribute continuation { db.verbatim.continuation.enumeration }
+db.verbatim.linenumbering.enumeration =
+
+ ## Lines are numbered.
+ "numbered"
+ |
+ ## Lines are not numbered.
+ "unnumbered"
+db.verbatim.linenumbering.attribute =
+
+ ## Determines whether lines are numbered.
+ attribute linenumbering { db.verbatim.linenumbering.enumeration }
+db.verbatim.startinglinenumber.attribute =
+
+ ## Specifies the initial line number.
+ attribute startinglinenumber { xsd:integer }
+db.verbatim.language.attribute =
+
+ ## Identifies the language (i.e. programming language) of the verbatim content.
+ attribute language { text }
+db.verbatim.xml.space.attribute =
+
+ ## Can be used to indicate explicitly that whitespace in the verbatim environment is
preserved. Whitespace must always be preserved in verbatim environments whether this
attribute is specified or not.
+ attribute xml:space {
+
+ ## Whitespace must be preserved.
+ "preserve"
+ }
+db.verbatim.attributes =
+ db.verbatim.continuation.attribute?
+ & db.verbatim.linenumbering.attribute?
+ & db.verbatim.startinglinenumber.attribute?
+ & db.verbatim.language.attribute?
+ & db.verbatim.xml.space.attribute?
+db.label.attribute =
+
+ ## Specifies an identifying string for presentation purposes
+ attribute label { text }
+db.width.characters.attribute =
+
+ ## Specifies the width (in characters) of the element
+ attribute width { xsd:nonNegativeInteger }
+db.spacing.enumeration =
+
+ ## The spacing should be "compact".
+ "compact"
+ |
+ ## The spacing should be "normal".
+ "normal"
+db.spacing.attribute =
+
+ ## Specifies (a hint about) the spacing of the content
+ attribute spacing { db.spacing.enumeration }
+db.pgwide.enumeration =
+
+ ## The element should be rendered in the current text flow (with the flow column
width).
+ "0"
+ |
+ ## The element should be rendered across the full text page.
+ "1"
+db.pgwide.attribute =
+
+ ## Indicates if the element is rendered across the column or the page
+ attribute pgwide { db.pgwide.enumeration }
+db.language.attribute =
+
+ ## Identifies the language (i.e. programming language) of the content.
+ attribute language { text }
+db.performance.enumeration =
+
+ ## The content describes an optional step or steps.
+ "optional"
+ |
+ ## The content describes a required step or steps.
+ "required"
+db.performance.attribute =
+
+ ## Specifies if the content is required or optional.
+ attribute performance { db.performance.enumeration }
+db.floatstyle.attribute =
+
+ ## Specifies style information to be used when rendering the float
+ attribute floatstyle { text }
+db.width.attribute =
+
+ ## Specifies the width of the element
+ attribute width { text }
+db.depth.attribute =
+
+ ## Specifies the depth of the element
+ attribute depth { text }
+db.contentwidth.attribute =
+
+ ## Specifies the width of the content rectangle
+ attribute contentwidth { text }
+db.contentdepth.attribute =
+
+ ## Specifies the depth of the content rectangle
+ attribute contentdepth { text }
+db.scalefit.enumeration =
+
+ ## False (do not scale-to-fit; anamorphic scaling may occur)
+ "0"
+ |
+ ## True (scale-to-fit; anamorphic scaling is forbidden)
+ "1"
+db.scale.attribute =
+
+ ## Specifies the scaling factor
+ attribute scale { xsd:positiveInteger }
+db.halign.enumeration =
+
+ ## Centered horizontally
+ "center"
+ |
+ ## Aligned horizontally on the specified character
+ "char"
+ |
+ ## Fully justified (left and right margins or edges)
+ "justify"
+ |
+ ## Left aligned
+ "left"
+ |
+ ## Right aligned
+ "right"
+db.valign.enumeration =
+
+ ## Aligned on the bottom of the region
+ "bottom"
+ |
+ ## Centered vertically
+ "middle"
+ |
+ ## Aligned on the top of the region
+ "top"
+db.biblio.class.enumeration =
+
+ ## A document object identifier.
+ "doi"
+ |
+ ## An international standard book number.
+ "isbn"
+ |
+ ## An international standard technical report number (ISO 10444).
+ "isrn"
+ |
+ ## An international standard serial number.
+ "issn"
+ |
+ ## A Library of Congress reference number.
+ "libraryofcongress"
+ |
+ ## A publication number (an internal number or possibly organizational standard).
+ "pubsnumber"
+ |
+ ## A Uniform Resource Identifier
+ "uri"
+db.biblio.class-enum.attribute =
+
+ ## Identifies the kind of bibliographic identifier
+ attribute class { db.biblio.class.enumeration }?
+db.biblio.class-other.attribute =
+
+ ## Identifies the nature of the non-standard bibliographic identifier
+ attribute otherclass { xsd:NMTOKEN }
+db.biblio.class-other.attributes =
+
+ ## Identifies the kind of bibliographic identifier
+ attribute class {
+
+ ## Indicates that the identifier is some 'other' kind.
+ "other"
+ }
+ & db.biblio.class-other.attribute
+db.biblio.class.attribute =
+ db.biblio.class-enum.attribute | db.biblio.class-other.attributes
+db.ubiq.inlines =
+ (db.inlinemediaobject
+ | db.remark
+ | db.superscript
+ | db.subscript
+ | db.link.inlines
+ | db.alt)
+ | db.annotation
+ | db.indexterm
+db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
+db._title = db.title? & db.titleabbrev? & db.subtitle?
+db._title.req = db.title & db.titleabbrev? & db.subtitle?
+db._title.only = db.title? & db.titleabbrev?
+db._title.onlyreq = db.title & db.titleabbrev?
+db._info = (db._title, db.titleforbidden.info?) | db.info?
+db._info.title.req =
+ (db._title.req, db.titleforbidden.info?) | db.titlereq.info
+db._info.title.only =
+ (db._title.only, db.titleforbidden.info?) | db.titleonly.info
+db._info.title.onlyreq =
+ (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
+db._info.title.forbidden = db.titleforbidden.info?
+db.all.inlines =
+ text
+ | db.ubiq.inlines
+ | db.general.inlines
+ | db.domain.inlines
+ | db.extension.inlines
+db.general.inlines =
+ db.publishing.inlines
+ | db.product.inlines
+ | db.bibliography.inlines
+ | db.graphic.inlines
+ | db.indexing.inlines
+ | db.link.inlines
+db.domain.inlines =
+ db.technical.inlines
+ | db.math.inlines
+ | db.markup.inlines
+ | db.gui.inlines
+ | db.keyboard.inlines
+ | db.os.inlines
+ | db.programming.inlines
+ | db.error.inlines
+db.technical.inlines =
+ (db.replaceable | db.package | db.parameter)
+ | db.termdef
+ | db.nonterminal
+ | (db.systemitem | db.option | db.optional | db.property)
+db.product.inlines =
+ db.trademark
+ | (db.productnumber
+ | db.productname
+ | db.database
+ | db.application
+ | db.hardware)
+db.bibliography.inlines =
+ db.citation
+ | db.citerefentry
+ | db.citetitle
+ | db.citebiblioid
+ | db.author
+ | db.person
+ | db.personname
+ |
db.org
+ | db.orgname
+ | db.editor
+ | db.jobtitle
+db.publishing.inlines =
+ (db.abbrev
+ | db.acronym
+ | db.date
+ | db.emphasis
+ | db.footnote
+ | db.footnoteref
+ | db.foreignphrase
+ | db.phrase
+ | db.quote
+ | db.subscript
+ | db.superscript
+ | db.wordasword)
+ | db.glossary.inlines
+ | db.coref
+db.graphic.inlines = db.inlinemediaobject
+db.indexing.inlines = notAllowed | db.indexterm
+db.link.inlines =
+ (db.xref | db.link | db.olink | db.anchor) | db.biblioref
+db.extension.inlines = notAllowed
+db.nopara.blocks =
+ (db.list.blocks
+ | db.formal.blocks
+ | db.informal.blocks
+ | db.publishing.blocks
+ | db.graphic.blocks
+ | db.technical.blocks
+ | db.verbatim.blocks
+ | db.bridgehead
+ | db.remark
+ | db.revhistory)
+ | db.indexterm
+ | db.synopsis.blocks
+ | db.admonition.blocks
+db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
+db.all.blocks =
+ (db.nopara.blocks | db.para.blocks | db.extension.blocks)
+ | db.annotation
+db.formal.blocks = (db.example | db.figure | db.table) | db.equation
+db.informal.blocks =
+ (db.informalexample | db.informalfigure | db.informaltable)
+ | db.informalequation
+db.publishing.blocks =
+ db.sidebar | db.blockquote | db.address | db.epigraph
+db.graphic.blocks = db.mediaobject | db.screenshot
+db.technical.blocks =
+ db.procedure
+ | db.task
+ | (db.productionset | db.constraintdef)
+ | db.msgset
+db.list.blocks =
+ (db.itemizedlist
+ | db.orderedlist
+ | db.procedure
+ | db.simplelist
+ | db.variablelist
+ | db.segmentedlist)
+ | db.glosslist
+ | db.bibliolist
+ | db.calloutlist
+ | db.qandaset
+db.verbatim.blocks =
+ (db.screen | db.literallayout)
+ | (db.programlistingco | db.screenco)
+ | (db.programlisting | db.synopsis)
+db.extension.blocks = notAllowed
+db.info.extension = db._any
+db.info.elements =
+ (db.abstract
+ | db.address
+ | db.artpagenums
+ | db.author
+ | db.authorgroup
+ | db.authorinitials
+ | db.bibliocoverage
+ | db.biblioid
+ | db.bibliosource
+ | db.collab
+ | db.confgroup
+ | db.contractsponsor
+ | db.contractnum
+ | db.copyright
+ | db.cover
+ | db.date
+ | db.edition
+ | db.editor
+ | db.issuenum
+ | db.keywordset
+ | db.legalnotice
+ | db.mediaobject
+ |
db.org
+ | db.orgname
+ | db.othercredit
+ | db.pagenums
+ | db.printhistory
+ | db.pubdate
+ | db.publisher
+ | db.publishername
+ | db.releaseinfo
+ | db.revhistory
+ | db.seriesvolnums
+ | db.subjectset
+ | db.volumenum
+ | db.info.extension)
+ | db.annotation
+ | db.extendedlink
+ | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
+ | db.itermset
+ | (db.productname | db.productnumber)
+db.bibliographic.elements =
+ db.info.elements
+ | db.publishing.inlines
+ | db.citerefentry
+ | db.citetitle
+ | db.citebiblioid
+ | db.person
+ | db.personblurb
+ | db.personname
+ | db.subtitle
+ | db.title
+ | db.titleabbrev
+div {
+ db.title.role.attribute = attribute role { text }
+ db.title.attlist =
+ db.title.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.title =
+
+ ## The text of the title of a section of a document or of a formal block-level
element
+ element title { db.title.attlist, db.all.inlines* }
+}
+div {
+ db.titleabbrev.role.attribute = attribute role { text }
+ db.titleabbrev.attlist =
+ db.titleabbrev.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.titleabbrev =
+
+ ## The abbreviation of a title
+ element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
+}
+div {
+ db.subtitle.role.attribute = attribute role { text }
+ db.subtitle.attlist =
+ db.subtitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.subtitle =
+
+ ## The subtitle of a document
+ element subtitle { db.subtitle.attlist, db.all.inlines* }
+}
+div {
+ db.info.role.attribute = attribute role { text }
+ db.info.attlist = db.info.role.attribute? & db.common.attributes
+ db.info =
+
+ ## A wrapper for information about a component or other block
+ element info { db.info.attlist, (db._title & db.info.elements*) }
+}
+div {
+ db.titlereq.info.role.attribute = attribute role { text }
+ db.titlereq.info.attlist =
+ db.titlereq.info.role.attribute? & db.common.attributes
+ db.titlereq.info =
+
+ ## A wrapper for information about a component or other block with a required title
+ element info {
+ db.titlereq.info.attlist, (db._title.req & db.info.elements*)
+ }
+}
+div {
+ db.titleonly.info.role.attribute = attribute role { text }
+ db.titleonly.info.attlist =
+ db.titleonly.info.role.attribute? & db.common.attributes
+ db.titleonly.info =
+
+ ## A wrapper for information about a component or other block with only a title
+ element info {
+ db.titleonly.info.attlist, (db._title.only & db.info.elements*)
+ }
+}
+div {
+ db.titleonlyreq.info.role.attribute = attribute role { text }
+ db.titleonlyreq.info.attlist =
+ db.titleonlyreq.info.role.attribute? & db.common.attributes
+ db.titleonlyreq.info =
+
+ ## A wrapper for information about a component or other block with only a required
title
+ element info {
+ db.titleonlyreq.info.attlist,
+ (db._title.onlyreq & db.info.elements*)
+ }
+}
+div {
+ db.titleforbidden.info.role.attribute = attribute role { text }
+ db.titleforbidden.info.attlist =
+ db.titleforbidden.info.role.attribute? & db.common.attributes
+ db.titleforbidden.info =
+
+ ## A wrapper for information about a component or other block without a title
+ element info { db.titleforbidden.info.attlist, db.info.elements* }
+}
+div {
+ db.subjectset.role.attribute = attribute role { text }
+ db.subjectset.scheme.attribute =
+
+ ## Identifies the controlled vocabulary used by this set's terms
+ attribute scheme { xsd:NMTOKEN }
+ db.subjectset.attlist =
+ db.subjectset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.subjectset.scheme.attribute?
+ db.subjectset =
+
+ ## A set of terms describing the subject matter of a document
+ element subjectset { db.subjectset.attlist, db.subject+ }
+}
+div {
+ db.subject.role.attribute = attribute role { text }
+ db.subject.weight.attribute =
+
+ ## Specifies a ranking for this subject relative to other subjects in the same set
+ attribute weight { text }
+ db.subject.attlist =
+ db.subject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.subject.weight.attribute?
+ db.subject =
+
+ ## One of a group of terms describing the subject matter of a document
+ element subject { db.subject.attlist, db.subjectterm+ }
+}
+div {
+ db.subjectterm.role.attribute = attribute role { text }
+ db.subjectterm.attlist =
+ db.subjectterm.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.subjectterm =
+
+ ## A term in a group of terms describing the subject matter of a document
+ element subjectterm { db.subjectterm.attlist, text }
+}
+div {
+ db.keywordset.role.attribute = attribute role { text }
+ db.keywordset.attlist =
+ db.keywordset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.keywordset =
+
+ ## A set of keywords describing the content of a document
+ element keywordset { db.keywordset.attlist, db.keyword+ }
+}
+div {
+ db.keyword.role.attribute = attribute role { text }
+ db.keyword.attlist =
+ db.keyword.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.keyword =
+
+ ## One of a set of keywords describing the content of a document
+ element keyword { db.keyword.attlist, text }
+}
+db.table.choice = notAllowed | db.cals.table | db.html.table
+db.informaltable.choice =
+ notAllowed | db.cals.informaltable | db.html.informaltable
+db.table = db.table.choice
+db.informaltable = db.informaltable.choice
+div {
+ db.procedure.role.attribute = attribute role { text }
+ db.procedure.attlist =
+ db.procedure.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.procedure.info = db._info.title.only
+ db.procedure =
+
+ ## A list of operations to be performed in a well-defined sequence
+ element procedure {
+ db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
+ }
+}
+div {
+ db.step.role.attribute = attribute role { text }
+ db.step.attlist =
+ db.step.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.performance.attribute?
+ db.step.info = db._info.title.only
+ #
+ # This content model is blocks*, step|stepalternatives, blocks* but
+ # expressed this way it avoids UPA issues in XSD and DTD versions
+ db.step =
+
+ ## A unit of action in a procedure
+ element step {
+ db.step.attlist,
+ db.step.info,
+ ((db.all.blocks+,
+ ((db.substeps | db.stepalternatives), db.all.blocks*)?)
+ | ((db.substeps | db.stepalternatives), db.all.blocks*))
+ }
+}
+div {
+ db.stepalternatives.role.attribute = attribute role { text }
+ db.stepalternatives.attlist =
+ db.stepalternatives.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.performance.attribute?
+ db.stepalternatives.info = db._info.title.forbidden
+ db.stepalternatives =
+
+ ## Alternative steps in a procedure
+ element stepalternatives {
+ db.stepalternatives.attlist, db.stepalternatives.info, db.step+
+ }
+}
+div {
+ db.substeps.role.attribute = attribute role { text }
+ db.substeps.attlist =
+ db.substeps.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.performance.attribute?
+ db.substeps =
+
+ ## A wrapper for steps that occur within steps in a procedure
+ element substeps { db.substeps.attlist, db.step+ }
+}
+div {
+ db.sidebar.role.attribute = attribute role { text }
+ db.sidebar.attlist =
+ db.sidebar.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.sidebar.info = db._info.title.only
+ db.sidebar =
+
+ ## A portion of a document that is isolated from the main narrative flow
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:sidebar"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:sidebar)"
+ "sidebar must not occur in the descendants of sidebar"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sidebar {
+ db.sidebar.attlist, db.sidebar.info, db.all.blocks+
+ }
+}
+div {
+ db.abstract.role.attribute = attribute role { text }
+ db.abstract.attlist =
+ db.abstract.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.abstract.info = db._info.title.only
+ db.abstract =
+
+ ## A summary
+ element abstract {
+ db.abstract.attlist, db.abstract.info, db.para.blocks+
+ }
+}
+div {
+ db.personblurb.role.attribute = attribute role { text }
+ db.personblurb.attlist =
+ db.personblurb.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.personblurb.info = db._info.title.only
+ db.personblurb =
+
+ ## A short description or note about a person
+ element personblurb {
+ db.personblurb.attlist, db.personblurb.info, db.para.blocks+
+ }
+}
+div {
+ db.blockquote.role.attribute = attribute role { text }
+ db.blockquote.attlist =
+ db.blockquote.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.blockquote.info = db._info.title.only
+ db.blockquote =
+
+ ## A quotation set off from the main text
+ element blockquote {
+ db.blockquote.attlist,
+ db.blockquote.info,
+ db.attribution?,
+ db.all.blocks+
+ }
+}
+div {
+ db.attribution.role.attribute = attribute role { text }
+ db.attribution.attlist =
+ db.attribution.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.attribution =
+
+ ## The source of a block quote or epigraph
+ element attribution {
+ db.attribution.attlist,
+ (db._text
+ | db.person
+ | db.personname
+ | db.citetitle
+ | db.citation)*
+ }
+}
+div {
+ db.bridgehead.renderas.enumeration =
+
+ ## Render as a first-level section
+ "sect1"
+ |
+ ## Render as a second-level section
+ "sect2"
+ |
+ ## Render as a third-level section
+ "sect3"
+ |
+ ## Render as a fourth-level section
+ "sect4"
+ |
+ ## Render as a fifth-level section
+ "sect5"
+ db.bridgehead.renderas-enum.attribute =
+
+ ## Indicates how the bridge head should be rendered
+ attribute renderas { db.bridgehead.renderas.enumeration }?
+ db.bridgehead.renderas-other.attribute =
+
+ ## Identifies the nature of the non-standard rendering
+ attribute otherrenderas { xsd:NMTOKEN }
+ db.bridgehead.renderas-other.attributes =
+
+ ## Indicates how the bridge head should be rendered
+ attribute renderas {
+
+ ## Identifies a non-standard rendering
+ "other"
+ }
+ & db.bridgehead.renderas-other.attribute
+ db.bridgehead.renderas.attribute =
+ db.bridgehead.renderas-enum.attribute
+ | db.bridgehead.renderas-other.attributes
+ db.bridgehead.role.attribute = attribute role { text }
+ db.bridgehead.attlist =
+ db.bridgehead.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.bridgehead.renderas.attribute?
+ db.bridgehead =
+
+ ## A free-floating heading
+ element bridgehead { db.bridgehead.attlist, db.all.inlines* }
+}
+div {
+ db.remark.role.attribute = attribute role { text }
+ db.remark.attlist =
+ db.remark.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.remark =
+
+ ## A remark (or comment) intended for presentation in a draft manuscript
+ element remark { db.remark.attlist, db._text }
+}
+div {
+ db.epigraph.role.attribute = attribute role { text }
+ db.epigraph.attlist =
+ db.epigraph.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.epigraph.info = db._info.title.forbidden
+ db.epigraph =
+
+ ## A short inscription at the beginning of a document or component
+ element epigraph {
+ db.epigraph.attlist,
+ db.epigraph.info,
+ db.attribution?,
+ (db.para.blocks | db.literallayout)+
+ }
+}
+div {
+ db.footnote.role.attribute = attribute role { text }
+ db.footnote.label.attribute =
+
+ ## Identifies the desired footnote mark
+ attribute label { xsd:NMTOKEN }
+ db.footnote.attlist =
+ db.footnote.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.footnote.label.attribute?
+ db.footnote =
+
+ ## A footnote
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:footnote)"
+ "footnote must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:indexterm)"
+ "indexterm must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:sidebar)"
+ "sidebar must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:task)"
+ "task must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:epigraph)"
+ "epigraph must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnote"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of footnote"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element footnote { db.footnote.attlist, db.all.blocks+ }
+}
+div {
+ db.formalpara.role.attribute = attribute role { text }
+ db.formalpara.attlist =
+ db.formalpara.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.formalpara.info = db._info.title.onlyreq
+ db.formalpara =
+
+ ## A paragraph with a title
+ element formalpara {
+ db.formalpara.attlist,
+ db.formalpara.info,
+ db.indexing.inlines*,
+ db.para
+ }
+}
+div {
+ db.para.role.attribute = attribute role { text }
+ db.para.attlist =
+ db.para.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.para.info = db._info.title.forbidden
+ db.para =
+
+ ## A paragraph
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:para"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element para {
+ db.para.attlist,
+ db.para.info,
+ (db.all.inlines | db.nopara.blocks)*
+ }
+}
+div {
+ db.simpara.role.attribute = attribute role { text }
+ db.simpara.attlist =
+ db.simpara.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.simpara.info = db._info.title.forbidden
+ db.simpara =
+
+ ## A paragraph that contains only text and inline markup, no block elements
+ element simpara {
+ db.simpara.attlist, db.simpara.info, db.all.inlines*
+ }
+}
+div {
+ db.itemizedlist.role.attribute = attribute role { text }
+ db.itemizedlist.mark.attribute =
+
+ ## Identifies the type of mark to be used on items in this list
+ attribute mark { xsd:NMTOKEN }
+ db.itemizedlist.attlist =
+ db.itemizedlist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.spacing.attribute?
+ & db.itemizedlist.mark.attribute?
+ db.itemizedlist.info = db._info.title.only
+ db.itemizedlist =
+
+ ## A list in which each entry is marked with a bullet or other dingbat
+ element itemizedlist {
+ db.itemizedlist.attlist,
+ db.itemizedlist.info,
+ db.all.blocks*,
+ db.listitem+
+ }
+}
+div {
+ db.orderedlist.role.attribute = attribute role { text }
+ db.orderedlist.continuation.enumeration =
+
+ ## Specifies that numbering should begin where the preceding list left off
+ "continues"
+ |
+ ## Specifies that numbering should begin again at 1
+ "restarts"
+ db.orderedlist.continuation.attribute =
+
+ ## Indicates how list numbering should begin relative to the immediately preceding
list
+ attribute continuation { db.orderedlist.continuation.enumeration }
+ db.orderedlist.startingnumber.attribute =
+
+ ## Specifies the initial line number.
+ attribute startingnumber { xsd:integer }
+ db.orderedlist.inheritnum.enumeration =
+
+ ## Specifies that numbering should ignore list nesting
+ "ignore"
+ |
+ ## Specifies that numbering should inherit from outer-level lists
+ "inherit"
+ db.orderedlist.inheritnum.attribute =
+
+ ## Indicates whether or not item numbering should be influenced by list nesting
+ attribute inheritnum { db.orderedlist.inheritnum.enumeration }
+ db.orderedlist.numeration.enumeration =
+
+ ## Specifies Arabic numeration (1, 2, 3, …)
+ "arabic"
+ |
+ ## Specifies upper-case alphabetic numeration (A, B, C, …)
+ "upperalpha"
+ |
+ ## Specifies lower-case alphabetic numeration (a, b, c, …)
+ "loweralpha"
+ |
+ ## Specifies upper-case Roman numeration (I, II, III, …)
+ "upperroman"
+ |
+ ## Specifies lower-case Roman numeration (i, ii, iii …)
+ "lowerroman"
+ db.orderedlist.numeration.attribute =
+
+ ## Indicates the desired numeration
+ attribute numeration { db.orderedlist.numeration.enumeration }
+ db.orderedlist.attlist =
+ db.orderedlist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.spacing.attribute?
+ & (db.orderedlist.continuation.attribute
+ | db.orderedlist.startingnumber.attribute)?
+ & db.orderedlist.inheritnum.attribute?
+ & db.orderedlist.numeration.attribute?
+ db.orderedlist.info = db._info.title.only
+ db.orderedlist =
+
+ ## A list in which each entry is marked with a sequentially incremented label
+ element orderedlist {
+ db.orderedlist.attlist,
+ db.orderedlist.info,
+ db.all.blocks*,
+ db.listitem+
+ }
+}
+div {
+ db.listitem.role.attribute = attribute role { text }
+ db.listitem.override.attribute =
+
+ ## Specifies the keyword for the type of mark that should be used on this
+ ## item, instead of the mark that would be used by default
+ attribute override { xsd:NMTOKEN }
+ db.listitem.attlist =
+ db.listitem.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.listitem.override.attribute?
+ db.listitem =
+
+ ## A wrapper for the elements of a list item
+ element listitem { db.listitem.attlist, db.all.blocks+ }
+}
+div {
+ db.segmentedlist.role.attribute = attribute role { text }
+ db.segmentedlist.attlist =
+ db.segmentedlist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.segmentedlist.info = db._info.title.only
+ db.segmentedlist =
+
+ ## A segmented list, a list of sets of elements
+ element segmentedlist {
+ db.segmentedlist.attlist,
+ db.segmentedlist.info,
+ db.segtitle+,
+ db.seglistitem+
+ }
+}
+div {
+ db.segtitle.role.attribute = attribute role { text }
+ db.segtitle.attlist =
+ db.segtitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.segtitle =
+
+ ## The title of an element of a list item in a segmented list
+ element segtitle { db.segtitle.attlist, db.all.inlines* }
+}
+div {
+ db.seglistitem.role.attribute = attribute role { text }
+ db.seglistitem.attlist =
+ db.seglistitem.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.seglistitem =
+
+ ## A list item in a segmented list
+ [
+ s:pattern [
+ name = "Cardinality of segments and titles"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:seglistitem"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "count(db:seg) = count(../db:segtitle)"
+ "The number of seg elements must be the same as the number of segtitle
elements in the parent segmentedlist"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element seglistitem { db.seglistitem.attlist, db.seg+ }
+}
+div {
+ db.seg.role.attribute = attribute role { text }
+ db.seg.attlist =
+ db.seg.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.seg =
+
+ ## An element of a list item in a segmented list
+ element seg { db.seg.attlist, db.all.inlines* }
+}
+div {
+ db.simplelist.role.attribute = attribute role { text }
+ db.simplelist.type.enumeration =
+
+ ## A tabular presentation in row-major order.
+ "horiz"
+ |
+ ## A tabular presentation in column-major order.
+ "vert"
+ |
+ ## An inline presentation, usually a comma-delimited list.
+ "inline"
+ db.simplelist.type.attribute =
+
+ ## Specifies the type of list presentation.
+ [ a:defaultValue = "vert" ]
+ attribute type { db.simplelist.type.enumeration }
+ db.simplelist.columns.attribute =
+
+ ## Specifies the number of columns for horizontal or vertical presentation
+ attribute columns { xsd:integer }
+ db.simplelist.attlist =
+ db.simplelist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.simplelist.type.attribute?
+ & db.simplelist.columns.attribute?
+ db.simplelist =
+
+ ## An undecorated list of single words or short phrases
+ element simplelist { db.simplelist.attlist, db.member+ }
+}
+div {
+ db.member.role.attribute = attribute role { text }
+ db.member.attlist =
+ db.member.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.member =
+
+ ## An element of a simple list
+ element member { db.member.attlist, db.all.inlines* }
+}
+div {
+ db.variablelist.role.attribute = attribute role { text }
+ db.variablelist.termlength.attribute =
+
+ ## Indicates a length beyond which the presentation system may consider a term too
long and select an alternate presentation for that term, item, or list
+ attribute termlength { text }
+ db.variablelist.attlist =
+ db.variablelist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.spacing.attribute?
+ & db.variablelist.termlength.attribute?
+ db.variablelist.info = db._info.title.only
+ db.variablelist =
+
+ ## A list in which each entry is composed of a set of one or more terms and an
associated description
+ element variablelist {
+ db.variablelist.attlist,
+ db.variablelist.info,
+ db.all.blocks*,
+ db.varlistentry+
+ }
+}
+div {
+ db.varlistentry.role.attribute = attribute role { text }
+ db.varlistentry.attlist =
+ db.varlistentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.varlistentry =
+
+ ## A wrapper for a set of terms and the associated description in a variable list
+ element varlistentry {
+ db.varlistentry.attlist, db.term+, db.listitem
+ }
+}
+div {
+ db.term.role.attribute = attribute role { text }
+ db.term.attlist =
+ db.term.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.term =
+
+ ## The word or phrase being defined or described in a variable list
+ element term { db.term.attlist, db.all.inlines* }
+}
+div {
+ db.example.role.attribute = attribute role { text }
+ db.example.label.attribute = db.label.attribute
+ db.example.width.attribute = db.width.characters.attribute
+ db.example.pgwide.attribute = db.pgwide.attribute
+ db.example.floatstyle.attribute = db.floatstyle.attribute
+ db.example.attlist =
+ db.example.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.example.label.attribute?
+ & db.example.floatstyle.attribute?
+ & (db.example.width.attribute | db.example.pgwide.attribute)?
+ db.example.info = db._info.title.onlyreq
+ db.example =
+
+ ## A formal example, with a title
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:example"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of example"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element example {
+ db.example.attlist, db.example.info, db.all.blocks+, db.caption?
+ }
+}
+div {
+ db.informalexample.role.attribute = attribute role { text }
+ db.informalexample.width.attribute = db.width.characters.attribute
+ db.informalexample.floatstyle.attribute = db.floatstyle.attribute
+ db.informalexample.attlist =
+ db.informalexample.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.informalexample.floatstyle.attribute?
+ & db.informalexample.width.attribute?
+ db.informalexample.info = db._info.title.forbidden
+ db.informalexample =
+
+ ## A displayed example without a title
+ element informalexample {
+ db.informalexample.attlist,
+ db.informalexample.info,
+ db.all.blocks+,
+ db.caption?
+ }
+}
+db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
+db.verbatim.contentmodel =
+ db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
+div {
+ db.literallayout.role.attribute = attribute role { text }
+ db.literallayout.class.enumeration =
+
+ ## The literal layout should be formatted with a monospaced font
+ "monospaced"
+ |
+ ## The literal layout should be formatted with the current font
+ "normal"
+ db.literallayout.class.attribute =
+
+ ## Specifies the class of literal layout
+ attribute class { db.literallayout.class.enumeration }
+ db.literallayout.attlist =
+ db.literallayout.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ & db.literallayout.class.attribute?
+ db.literallayout =
+
+ ## A block of text in which line breaks and white space are to be reproduced
faithfully
+ element literallayout {
+ db.literallayout.attlist, db.verbatim.contentmodel
+ }
+}
+div {
+ db.screen.role.attribute = attribute role { text }
+ db.screen.width.attribute = db.width.characters.attribute
+ db.screen.attlist =
+ db.screen.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ & db.screen.width.attribute?
+ db.screen =
+
+ ## Text that a user sees or might see on a computer screen
+ element screen { db.screen.attlist, db.verbatim.contentmodel }
+}
+div {
+ db.screenshot.role.attribute = attribute role { text }
+ db.screenshot.attlist =
+ db.screenshot.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.screenshot.info = db._info
+ db.screenshot =
+
+ ## A representation of what the user sees or might see on a computer screen
+ element screenshot {
+ db.screenshot.attlist, db.screenshot.info, db.mediaobject
+ }
+}
+div {
+ db.figure.role.attribute = attribute role { text }
+ db.figure.label.attribute = db.label.attribute
+ db.figure.pgwide.attribute = db.pgwide.attribute
+ db.figure.floatstyle.attribute = db.floatstyle.attribute
+ db.figure.attlist =
+ db.figure.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.figure.label.attribute?
+ & db.figure.pgwide.attribute?
+ & db.figure.floatstyle.attribute?
+ db.figure.info = db._info.title.onlyreq
+ db.figure =
+
+ ## A formal figure, generally an illustration, with a title
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:figure"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of figure"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element figure {
+ db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
+ }
+}
+div {
+ db.informalfigure.role.attribute = attribute role { text }
+ db.informalfigure.label.attribute = db.label.attribute
+ db.informalfigure.pgwide.attribute = db.pgwide.attribute
+ db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
+ db.informalfigure.attlist =
+ db.informalfigure.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.informalfigure.label.attribute?
+ & db.informalfigure.pgwide.attribute?
+ & db.informalfigure.floatstyle.attribute?
+ db.informalfigure.info = db._info.title.forbidden
+ db.informalfigure =
+
+ ## A untitled figure
+ element informalfigure {
+ db.informalfigure.attlist,
+ db.informalfigure.info,
+ db.all.blocks+,
+ db.caption?
+ }
+}
+db.mediaobject.content =
+ (db.videoobject | db.audioobject | db.imageobject | db.textobject)
+ | db.imageobjectco
+div {
+ db.mediaobject.role.attribute = attribute role { text }
+ db.mediaobject.attlist =
+ db.mediaobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.mediaobject.info = db._info.title.forbidden
+ db.mediaobject =
+
+ ## A displayed media object (video, audio, image, etc.)
+ element mediaobject {
+ db.mediaobject.attlist,
+ db.mediaobject.info,
+ db.alt?,
+ db.mediaobject.content+,
+ db.caption?
+ }
+}
+div {
+ db.inlinemediaobject.role.attribute = attribute role { text }
+ db.inlinemediaobject.attlist =
+ db.inlinemediaobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.inlinemediaobject.info = db._info.title.forbidden
+ db.inlinemediaobject =
+
+ ## An inline media object (video, audio, image, and so on)
+ element inlinemediaobject {
+ db.inlinemediaobject.attlist,
+ db.inlinemediaobject.info,
+ db.alt?,
+ db.mediaobject.content+
+ }
+}
+div {
+ db.videoobject.role.attribute = attribute role { text }
+ db.videoobject.attlist =
+ db.videoobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.videoobject.info = db._info.title.forbidden
+ db.videoobject =
+
+ ## A wrapper for video data and its associated meta-information
+ element videoobject {
+ db.videoobject.attlist, db.videoobject.info, db.videodata
+ }
+}
+div {
+ db.audioobject.role.attribute = attribute role { text }
+ db.audioobject.attlist =
+ db.audioobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.audioobject.info = db._info.title.forbidden
+ db.audioobject =
+
+ ## A wrapper for audio data and its associated meta-information
+ element audioobject {
+ db.audioobject.attlist, db.audioobject.info, db.audiodata
+ }
+}
+db.imageobject.content =
+ db.imagedata | db.imagedata.mathml | db.imagedata.svg
+div {
+ db.imageobject.role.attribute = attribute role { text }
+ db.imageobject.attlist =
+ db.imageobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.imageobject.info = db._info.title.forbidden
+ db.imageobject =
+
+ ## A wrapper for image data and its associated meta-information
+ element imageobject {
+ db.imageobject.attlist,
+ db.imageobject.info,
+ db.imageobject.content
+ }
+}
+div {
+ db.textobject.role.attribute = attribute role { text }
+ db.textobject.attlist =
+ db.textobject.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.textobject.info = db._info.title.forbidden
+ db.textobject =
+
+ ## A wrapper for a text description of an object and its associated meta-information
+ element textobject {
+ db.textobject.attlist,
+ db.textobject.info,
+ (db.phrase | db.textdata | db.all.blocks+)
+ }
+}
+div {
+ db.videodata.role.attribute = attribute role { text }
+ db.videodata.align.enumeration = db.halign.enumeration
+ db.videodata.align.attribute =
+
+ ## Specifies the (horizontal) alignment of the video data
+ attribute align { db.videodata.align.enumeration }
+ db.videodata.valign.enumeration = db.valign.enumeration
+ db.videodata.valign.attribute =
+
+ ## Specifies the vertical alignment of the video data
+ attribute valign { db.videodata.valign.enumeration }
+ db.videodata.width.attribute = db.width.attribute
+ db.videodata.depth.attribute = db.depth.attribute
+ db.videodata.contentwidth.attribute = db.contentwidth.attribute
+ db.videodata.contentdepth.attribute = db.contentdepth.attribute
+ db.videodata.scalefit.enumeration = db.scalefit.enumeration
+ db.videodata.scalefit.attribute =
+
+ ## Determines if anamorphic scaling is forbidden
+ attribute scalefit { db.videodata.scalefit.enumeration }
+ db.videodata.scale.attribute = db.scale.attribute
+ db.videodata.attlist =
+ db.videodata.role.attribute?
+ & db.common.attributes
+ & db.common.data.attributes
+ & db.videodata.align.attribute?
+ & db.videodata.valign.attribute?
+ & db.videodata.width.attribute?
+ & db.videodata.contentwidth.attribute?
+ & db.videodata.scalefit.attribute?
+ & db.videodata.scale.attribute?
+ & db.videodata.depth.attribute?
+ & db.videodata.contentdepth.attribute?
+ db.videodata.info = db._info.title.forbidden
+ db.videodata =
+
+ ## Pointer to external video data
+ element videodata { db.videodata.attlist, db.videodata.info }
+}
+div {
+ db.audiodata.role.attribute = attribute role { text }
+ db.audiodata.attlist =
+ db.audiodata.role.attribute?
+ & db.common.attributes
+ & db.common.data.attributes
+ db.audiodata.info = db._info.title.forbidden
+ db.audiodata =
+
+ ## Pointer to external audio data
+ element audiodata { db.audiodata.attlist, db.audiodata.info }
+}
+div {
+ db.imagedata.role.attribute = attribute role { text }
+ db.imagedata.align.enumeration = db.halign.enumeration
+ db.imagedata.align.attribute =
+
+ ## Specifies the (horizontal) alignment of the image data
+ attribute align { db.imagedata.align.enumeration }
+ db.imagedata.valign.enumeration = db.valign.enumeration
+ db.imagedata.valign.attribute =
+
+ ## Specifies the vertical alignment of the image data
+ attribute valign { db.imagedata.valign.enumeration }
+ db.imagedata.width.attribute = db.width.attribute
+ db.imagedata.depth.attribute = db.depth.attribute
+ db.imagedata.contentwidth.attribute = db.contentwidth.attribute
+ db.imagedata.contentdepth.attribute = db.contentdepth.attribute
+ db.imagedata.scalefit.enumeration = db.scalefit.enumeration
+ db.imagedata.scalefit.attribute =
+
+ ## Determines if anamorphic scaling is forbidden
+ attribute scalefit { db.imagedata.scalefit.enumeration }
+ db.imagedata.scale.attribute = db.scale.attribute
+ db.imagedata.attlist =
+ db.imagedata.role.attribute?
+ & db.common.attributes
+ & db.common.data.attributes
+ & db.imagedata.align.attribute?
+ & db.imagedata.valign.attribute?
+ & db.imagedata.width.attribute?
+ & db.imagedata.contentwidth.attribute?
+ & db.imagedata.scalefit.attribute?
+ & db.imagedata.scale.attribute?
+ & db.imagedata.depth.attribute?
+ & db.imagedata.contentdepth.attribute?
+ db.imagedata.info = db._info.title.forbidden
+ db.imagedata =
+
+ ## Pointer to external image data
+ element imagedata { db.imagedata.attlist, db.imagedata.info }
+}
+div {
+ db.textdata.role.attribute = attribute role { text }
+ db.textdata.encoding.attribute =
+
+ ## Identifies the encoding of the text in the external file
+ attribute encoding { text }
+ db.textdata.attlist =
+ db.textdata.role.attribute?
+ & db.common.attributes
+ & db.common.data.attributes
+ & db.textdata.encoding.attribute?
+ db.textdata.info = db._info.title.forbidden
+ db.textdata =
+
+ ## Pointer to external text data
+ element textdata { db.textdata.attlist, db.textdata.info }
+}
+div {
+ db.caption.role.attribute = attribute role { text }
+ db.caption.attlist =
+ db.caption.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.caption.info = db._info.title.forbidden
+ db.caption =
+
+ ## A caption
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:sidebar)"
+ "sidebar must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:task)"
+ "task must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element caption {
+ db.caption.attlist, db.caption.info, db.all.blocks+
+ }
+}
+div {
+ db.address.role.attribute = attribute role { text }
+ db.address.attlist =
+ db.address.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ db.address =
+
+ ## A real-world address, generally a postal address
+ element address {
+ db.address.attlist,
+ (db._text
+ | db.personname
+ | db.pob
+ | db.street
+ | db.city
+ | db.state
+ | db.postcode
+ | db.country
+ | db.phone
+ | db.fax
+ | db.email
+ | db.uri
+ | db.otheraddr)*
+ }
+}
+div {
+ db.street.role.attribute = attribute role { text }
+ db.street.attlist =
+ db.street.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.street =
+
+ ## A street address in an address
+ element street { db.street.attlist, db._text }
+}
+div {
+ db.pob.role.attribute = attribute role { text }
+ db.pob.attlist =
+ db.pob.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.pob =
+
+ ## A post office box in an address
+ element pob { db.pob.attlist, db._text }
+}
+div {
+ db.postcode.role.attribute = attribute role { text }
+ db.postcode.attlist =
+ db.postcode.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.postcode =
+
+ ## A postal code in an address
+ element postcode { db.postcode.attlist, db._text }
+}
+div {
+ db.city.role.attribute = attribute role { text }
+ db.city.attlist =
+ db.city.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.city =
+
+ ## The name of a city in an address
+ element city { db.city.attlist, db._text }
+}
+div {
+ db.state.role.attribute = attribute role { text }
+ db.state.attlist =
+ db.state.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.state =
+
+ ## A state or province in an address
+ element state { db.state.attlist, db._text }
+}
+div {
+ db.country.role.attribute = attribute role { text }
+ db.country.attlist =
+ db.country.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.country =
+
+ ## The name of a country
+ element country { db.country.attlist, db._text }
+}
+div {
+ db.phone.role.attribute = attribute role { text }
+ db.phone.attlist =
+ db.phone.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.phone =
+
+ ## A telephone number
+ element phone { db.phone.attlist, db._text }
+}
+div {
+ db.fax.role.attribute = attribute role { text }
+ db.fax.attlist =
+ db.fax.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.fax =
+
+ ## A fax number
+ element fax { db.fax.attlist, db._text }
+}
+div {
+ db.otheraddr.role.attribute = attribute role { text }
+ db.otheraddr.attlist =
+ db.otheraddr.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.otheraddr =
+
+ ## Uncategorized information in address
+ element otheraddr { db.otheraddr.attlist, db._text }
+}
+div {
+ db.affiliation.role.attribute = attribute role { text }
+ db.affiliation.attlist =
+ db.affiliation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.affiliation =
+
+ ## The institutional affiliation of an individual
+ element affiliation {
+ db.affiliation.attlist,
+ db.shortaffil?,
+ db.jobtitle*,
+ (db.org? | (db.orgname?, db.orgdiv*, db.address*))
+ }
+}
+div {
+ db.shortaffil.role.attribute = attribute role { text }
+ db.shortaffil.attlist =
+ db.shortaffil.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.shortaffil =
+
+ ## A brief description of an affiliation
+ element shortaffil { db.shortaffil.attlist, db._text }
+}
+div {
+ db.jobtitle.role.attribute = attribute role { text }
+ db.jobtitle.attlist =
+ db.jobtitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.jobtitle =
+
+ ## The title of an individual in an organization
+ element jobtitle { db.jobtitle.attlist, db._text }
+}
+div {
+ db.orgname.class.enumeration =
+
+ ## A consortium
+ "consortium"
+ |
+ ## A corporation
+ "corporation"
+ |
+ ## An informal organization
+ "informal"
+ |
+ ## A non-profit organization
+ "nonprofit"
+ db.orgname.class-enum.attribute =
+
+ ## Specifies the nature of the organization
+ attribute class { db.orgname.class.enumeration }
+ db.orgname.class-other.attributes =
+
+ ## Specifies the nature of the organization
+ attribute class {
+
+ ## Indicates a non-standard organization class
+ "other"
+ },
+
+ ## Identifies the non-standard nature of the organization
+ attribute otherclass { text }
+ db.orgname.class.attribute =
+ db.orgname.class-enum.attribute | db.orgname.class-other.attributes
+ db.orgname.role.attribute = attribute role { text }
+ db.orgname.attlist =
+ db.orgname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.orgname.class.attribute?
+ db.orgname =
+
+ ## The name of an organization
+ element orgname { db.orgname.attlist, db._text }
+}
+div {
+ db.orgdiv.role.attribute = attribute role { text }
+ db.orgdiv.attlist =
+ db.orgdiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.orgdiv =
+
+ ## A division of an organization
+ element orgdiv { db.orgdiv.attlist, db.all.inlines* }
+}
+div {
+ db.artpagenums.role.attribute = attribute role { text }
+ db.artpagenums.attlist =
+ db.artpagenums.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.artpagenums =
+
+ ## The page numbers of an article as published
+ element artpagenums { db.artpagenums.attlist, db._text }
+}
+div {
+ db.personname.role.attribute = attribute role { text }
+ db.personname.attlist =
+ db.personname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.personname =
+
+ ## The personal name of an individual
+ element personname {
+ db.personname.attlist,
+ (db._text
+ | (db.honorific
+ | db.firstname
+ | db.surname
+ | db.lineage
+ | db.othername)+)
+ }
+}
+db.person.author.contentmodel =
+ db.personname,
+ (db.personblurb
+ | db.affiliation
+ | db.email
+ | db.uri
+ | db.address
+ | db.contrib)*
+db.org.author.contentmodel =
+ db.orgname,
+ (db.orgdiv
+ | db.affiliation
+ | db.email
+ | db.uri
+ | db.address
+ | db.contrib)*
+db.credit.contentmodel =
+ db.person.author.contentmodel | db.org.author.contentmodel
+div {
+ db.author.role.attribute = attribute role { text }
+ db.author.attlist =
+ db.author.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.author =
+
+ ## The name of an individual author
+ element author { db.author.attlist, db.credit.contentmodel }
+}
+div {
+ db.authorgroup.role.attribute = attribute role { text }
+ db.authorgroup.attlist =
+ db.authorgroup.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.authorgroup =
+
+ ## Wrapper for author information when a document has multiple authors or
collabarators
+ element authorgroup {
+ db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+
+ }
+}
+div {
+ db.collab.role.attribute = attribute role { text }
+ db.collab.attlist =
+ db.collab.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.collab =
+
+ ## Identifies a collaborator
+ element collab {
+ db.collab.attlist,
+ (db.person | db.personname |
db.org | db.orgname)+,
+ db.affiliation*
+ }
+}
+div {
+ db.authorinitials.role.attribute = attribute role { text }
+ db.authorinitials.attlist =
+ db.authorinitials.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.authorinitials =
+
+ ## The initials or other short identifier for an author
+ element authorinitials { db.authorinitials.attlist, db._text }
+}
+div {
+ db.person.role.attribute = attribute role { text }
+ db.person.attlist =
+ db.person.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.person =
+
+ ## A person and associated metadata
+ element person {
+ db.person.attlist,
+ db.personname,
+ (db.address
+ | db.affiliation
+ | db.email
+ | db.uri
+ | db.personblurb)*
+ }
+}
+div {
+ db.org.role.attribute = attribute role { text }
+ db.org.attlist =
+ db.org.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+
db.org =
+
+ ## An organization and associated metadata
+ element org {
+ db.org.attlist,
+ db.orgname,
+ (db.address | db.affiliation | db.email | db.uri | db.orgdiv)*
+ }
+}
+div {
+ db.confgroup.role.attribute = attribute role { text }
+ db.confgroup.attlist =
+ db.confgroup.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.confgroup =
+
+ ## A wrapper for document meta-information about a conference
+ element confgroup {
+ db.confgroup.attlist,
+ (db.confdates
+ | db.conftitle
+ | db.confnum
+ | db.confsponsor
+ | db.address)*
+ }
+}
+div {
+ db.confdates.role.attribute = attribute role { text }
+ db.confdates.attlist =
+ db.confdates.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.confdates =
+
+ ## The dates of a conference for which a document was written
+ element confdates { db.confdates.attlist, db._text }
+}
+div {
+ db.conftitle.role.attribute = attribute role { text }
+ db.conftitle.attlist =
+ db.conftitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.conftitle =
+
+ ## The title of a conference for which a document was written
+ element conftitle { db.conftitle.attlist, db._text }
+}
+div {
+ db.confnum.role.attribute = attribute role { text }
+ db.confnum.attlist =
+ db.confnum.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.confnum =
+
+ ## An identifier, frequently numerical, associated with a conference for which a
document was written
+ element confnum { db.confnum.attlist, db._text }
+}
+div {
+ db.confsponsor.role.attribute = attribute role { text }
+ db.confsponsor.attlist =
+ db.confsponsor.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.confsponsor =
+
+ ## The sponsor of a conference for which a document was written
+ element confsponsor { db.confsponsor.attlist, db._text }
+}
+div {
+ db.contractnum.role.attribute = attribute role { text }
+ db.contractnum.attlist =
+ db.contractnum.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.contractnum =
+
+ ## The contract number of a document
+ element contractnum { db.contractnum.attlist, db._text }
+}
+div {
+ db.contractsponsor.role.attribute = attribute role { text }
+ db.contractsponsor.attlist =
+ db.contractsponsor.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.contractsponsor =
+
+ ## The sponsor of a contract
+ element contractsponsor { db.contractsponsor.attlist, db._text }
+}
+div {
+ db.copyright.role.attribute = attribute role { text }
+ db.copyright.attlist =
+ db.copyright.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.copyright =
+
+ ## Copyright information about a document
+ element copyright { db.copyright.attlist, db.year+, db.holder* }
+}
+div {
+ db.year.role.attribute = attribute role { text }
+ db.year.attlist =
+ db.year.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.year =
+
+ ## The year of publication of a document
+ element year { db.year.attlist, db._text }
+}
+div {
+ db.holder.role.attribute = attribute role { text }
+ db.holder.attlist =
+ db.holder.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.holder =
+
+ ## The name of the individual or organization that holds a copyright
+ element holder { db.holder.attlist, db._text }
+}
+db.cover.contentmodel =
+ (db.para.blocks
+ | db.extension.blocks
+ | db.list.blocks
+ | db.informal.blocks
+ | db.publishing.blocks
+ | db.graphic.blocks
+ | db.technical.blocks
+ | db.verbatim.blocks
+ | db.bridgehead
+ | db.remark
+ | db.revhistory)
+ | db.synopsis.blocks
+div {
+ db.cover.role.attribute = attribute role { text }
+ db.cover.attlist =
+ db.cover.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.cover =
+
+ ## Additional content for the cover of a publication
+ element cover { db.cover.attlist, db.cover.contentmodel+ }
+}
+db.date.contentmodel =
+ xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text
+div {
+ db.date.role.attribute = attribute role { text }
+ db.date.attlist =
+ db.date.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.date =
+
+ ## The date of publication or revision of a document
+ element date { db.date.attlist, db.date.contentmodel }
+}
+div {
+ db.edition.role.attribute = attribute role { text }
+ db.edition.attlist =
+ db.edition.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.edition =
+
+ ## The name or number of an edition of a document
+ element edition { db.edition.attlist, db._text }
+}
+div {
+ db.editor.role.attribute = attribute role { text }
+ db.editor.attlist =
+ db.editor.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.editor =
+
+ ## The name of the editor of a document
+ element editor { db.editor.attlist, db.credit.contentmodel }
+}
+div {
+ db.biblioid.role.attribute = attribute role { text }
+ db.biblioid.attlist =
+ db.biblioid.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.biblio.class.attribute
+ db.biblioid =
+
+ ## An identifier for a document
+ element biblioid { db.biblioid.attlist, db._text }
+}
+div {
+ db.citebiblioid.role.attribute = attribute role { text }
+ db.citebiblioid.attlist =
+ db.citebiblioid.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.biblio.class.attribute
+ db.citebiblioid =
+
+ ## A citation of a bibliographic identifier
+ element citebiblioid { db.citebiblioid.attlist, db._text }
+}
+div {
+ db.bibliosource.role.attribute = attribute role { text }
+ db.bibliosource.attlist =
+ db.bibliosource.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.biblio.class.attribute
+ db.bibliosource =
+
+ ## The source of a document
+ element bibliosource { db.bibliosource.attlist, db._text }
+}
+div {
+ db.bibliorelation.type.enumeration =
+
+ ## The described resource pre-existed the referenced resource, which is essentially
the same intellectual content presented in another format
+ "hasformat"
+ |
+ ## The described resource includes the referenced resource either physically or
logically
+ "haspart"
+ |
+ ## The described resource has a version, edition, or adaptation, namely, the
referenced resource
+ "hasversion"
+ |
+ ## The described resource is the same intellectual content of the referenced
resource, but presented in another format
+ "isformatof"
+ |
+ ## The described resource is a physical or logical part of the referenced resource
+ "ispartof"
+ |
+ ## The described resource is referenced, cited, or otherwise pointed to by the
referenced resource
+ "isreferencedby"
+ |
+ ## The described resource is supplanted, displaced, or superceded by the referenced
resource
+ "isreplacedby"
+ |
+ ## The described resource is required by the referenced resource, either physically
or logically
+ "isrequiredby"
+ |
+ ## The described resource is a version, edition, or adaptation of the referenced
resource; changes in version imply substantive changes in content rather than differences
in format
+ "isversionof"
+ |
+ ## The described resource references, cites, or otherwise points to the referenced
resource
+ "references"
+ |
+ ## The described resource supplants, displaces, or supersedes the referenced
resource
+ "replaces"
+ |
+ ## The described resource requires the referenced resource to support its function,
delivery, or coherence of content
+ "requires"
+ db.bibliorelation.type-enum.attribute =
+
+ ## Identifies the type of relationship
+ attribute type { db.bibliorelation.type.enumeration }?
+ db.bibliorelation.type-other.attributes =
+
+ ## Identifies the type of relationship
+ attribute type {
+
+ ## The described resource has a non-standard relationship with the referenced
resource
+ "othertype"
+ }?,
+
+ ## A keyword that identififes the type of the non-standard relationship
+ attribute othertype { xsd:NMTOKEN }
+ db.bibliorelation.type.attribute =
+ db.bibliorelation.type-enum.attribute
+ | db.bibliorelation.type-other.attributes
+ db.bibliorelation.role.attribute = attribute role { text }
+ db.bibliorelation.attlist =
+ db.bibliorelation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.biblio.class.attribute
+ & db.bibliorelation.type.attribute
+ db.bibliorelation =
+
+ ## The relationship of a document to another
+ element bibliorelation { db.bibliorelation.attlist, db._text }
+}
+div {
+ db.bibliocoverage.spacial.enumeration =
+
+ ## The DCMI Point identifies a point in space using its geographic coordinates
+ "dcmipoint"
+ |
+ ## ISO 3166 Codes for the representation of names of countries
+ "iso3166"
+ |
+ ## The DCMI Box identifies a region of space using its geographic limits
+ "dcmibox"
+ |
+ ## The Getty Thesaurus of Geographic Names
+ "tgn"
+ db.bibliocoverage.spatial-enum.attribute =
+
+ ## Specifies the type of spatial coverage
+ attribute spatial { db.bibliocoverage.spacial.enumeration }?
+ db.bibliocoverage.spatial-other.attributes =
+
+ ## Specifies the type of spatial coverage
+ attribute spatial {
+
+ ## Identifies a non-standard type of coverage
+ "otherspatial"
+ }?,
+
+ ## A keyword that identifies the type of non-standard coverage
+ attribute otherspatial { xsd:NMTOKEN }
+ db.bibliocoverage.spatial.attribute =
+ db.bibliocoverage.spatial-enum.attribute
+ | db.bibliocoverage.spatial-other.attributes
+ db.bibliocoverage.temporal.enumeration =
+
+ ## A specification of the limits of a time interval
+ "dcmiperiod"
+ |
+ ## W3C Encoding rules for dates and times—a profile based on ISO 8601
+ "w3c-dtf"
+ db.bibliocoverage.temporal-enum.attribute =
+
+ ## Specifies the type of temporal coverage
+ attribute temporal { db.bibliocoverage.temporal.enumeration }?
+ db.bibliocoverage.temporal-other.attributes =
+
+ ## Specifies the type of temporal coverage
+ attribute temporal {
+
+ ## Specifies a non-standard type of coverage
+ "othertemporal"
+ }?,
+
+ ## A keyword that identifies the type of non-standard coverage
+ attribute othertemporal { xsd:NMTOKEN }
+ db.bibliocoverage.temporal.attribute =
+ db.bibliocoverage.temporal-enum.attribute
+ | db.bibliocoverage.temporal-other.attributes
+ db.bibliocoverage.coverage.attrib =
+ db.bibliocoverage.spatial.attribute
+ & db.bibliocoverage.temporal.attribute
+ db.bibliocoverage.role.attribute = attribute role { text }
+ db.bibliocoverage.attlist =
+ db.bibliocoverage.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.bibliocoverage.coverage.attrib
+ db.bibliocoverage =
+
+ ## The spatial or temporal coverage of a document
+ element bibliocoverage { db.bibliocoverage.attlist, db._text }
+}
+div {
+ db.legalnotice.role.attribute = attribute role { text }
+ db.legalnotice.attlist =
+ db.legalnotice.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.legalnotice.info = db._info.title.only
+ db.legalnotice =
+
+ ## A statement of legal obligations or requirements
+ element legalnotice {
+ db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+
+ }
+}
+div {
+ db.othercredit.class.enumeration =
+
+ ## A copy editor
+ "copyeditor"
+ |
+ ## A graphic designer
+ "graphicdesigner"
+ |
+ ## Some other contributor
+ "other"
+ |
+ ## A production editor
+ "productioneditor"
+ |
+ ## A technical editor
+ "technicaleditor"
+ |
+ ## A translator
+ "translator"
+ db.othercredit.class-enum.attribute =
+
+ ## Identifies the nature of the contributor
+ attribute class { db.othercredit.class.enumeration }?
+ db.othercredit.class-other.attribute =
+
+ ## Identifies the nature of the non-standard contribution
+ attribute otherclass { xsd:NMTOKEN }
+ db.othercredit.class-other.attributes =
+
+ ## Identifies the nature of the contributor
+ attribute class {
+
+ ## Identifies a non-standard contribution
+ "other"
+ }
+ & db.othercredit.class-other.attribute
+ db.othercredit.class.attribute =
+ db.othercredit.class-enum.attribute
+ | db.othercredit.class-other.attributes
+ db.othercredit.role.attribute = attribute role { text }
+ db.othercredit.attlist =
+ db.othercredit.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.othercredit.class.attribute
+ db.othercredit =
+
+ ## A person or entity, other than an author or editor, credited in a document
+ element othercredit {
+ db.othercredit.attlist, db.credit.contentmodel
+ }
+}
+div {
+ db.pagenums.role.attribute = attribute role { text }
+ db.pagenums.attlist =
+ db.pagenums.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.pagenums =
+
+ ## The numbers of the pages in a book, for use in a bibliographic entry
+ element pagenums { db.pagenums.attlist, db._text }
+}
+div {
+ db.contrib.role.attribute = attribute role { text }
+ db.contrib.attlist =
+ db.contrib.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.contrib =
+
+ ## A summary of the contributions made to a document by a credited source
+ element contrib { db.contrib.attlist, db._text }
+}
+div {
+ db.honorific.role.attribute = attribute role { text }
+ db.honorific.attlist =
+ db.honorific.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.honorific =
+
+ ## The title of a person
+ element honorific { db.honorific.attlist, db._text }
+}
+div {
+ db.firstname.role.attribute = attribute role { text }
+ db.firstname.attlist =
+ db.firstname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.firstname =
+
+ ## The first name of a person
+ element firstname { db.firstname.attlist, db._text }
+}
+div {
+ db.surname.role.attribute = attribute role { text }
+ db.surname.attlist =
+ db.surname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.surname =
+
+ ## A family name; in western cultures the last name
+ element surname { db.surname.attlist, db._text }
+}
+div {
+ db.lineage.role.attribute = attribute role { text }
+ db.lineage.attlist =
+ db.lineage.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.lineage =
+
+ ## The portion of a person's name indicating a relationship to ancestors
+ element lineage { db.lineage.attlist, db._text }
+}
+div {
+ db.othername.role.attribute = attribute role { text }
+ db.othername.attlist =
+ db.othername.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.othername =
+
+ ## A component of a persons name that is not a first name, surname, or lineage
+ element othername { db.othername.attlist, db._text }
+}
+div {
+ db.printhistory.role.attribute = attribute role { text }
+ db.printhistory.attlist =
+ db.printhistory.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.printhistory =
+
+ ## The printing history of a document
+ element printhistory { db.printhistory.attlist, db.para.blocks+ }
+}
+div {
+ db.pubdate.role.attribute = attribute role { text }
+ db.pubdate.attlist =
+ db.pubdate.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.pubdate =
+
+ ## The date of publication of a document
+ element pubdate { db.pubdate.attlist, db.date.contentmodel }
+}
+div {
+ db.publisher.role.attribute = attribute role { text }
+ db.publisher.attlist =
+ db.publisher.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.publisher =
+
+ ## The publisher of a document
+ element publisher {
+ db.publisher.attlist, db.publishername, db.address*
+ }
+}
+div {
+ db.publishername.role.attribute = attribute role { text }
+ db.publishername.attlist =
+ db.publishername.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.publishername =
+
+ ## The name of the publisher of a document
+ element publishername { db.publishername.attlist, db._text }
+}
+div {
+ db.releaseinfo.role.attribute = attribute role { text }
+ db.releaseinfo.attlist =
+ db.releaseinfo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.releaseinfo =
+
+ ## Information about a particular release of a document
+ element releaseinfo { db.releaseinfo.attlist, db._text }
+}
+div {
+ db.revhistory.role.attribute = attribute role { text }
+ db.revhistory.attlist =
+ db.revhistory.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.revhistory.info = db._info.title.only
+ db.revhistory =
+
+ ## A history of the revisions to a document
+ element revhistory {
+ db.revhistory.attlist, db.revhistory.info, db.revision+
+ }
+}
+div {
+ db.revision.role.attribute = attribute role { text }
+ db.revision.attlist =
+ db.revision.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.revision =
+
+ ## An entry describing a single revision in the history of the revisions to a
document
+ element revision {
+ db.revision.attlist,
+ db.revnumber?,
+ db.date,
+ (db.authorinitials | db.author)*,
+ (db.revremark | db.revdescription)?
+ }
+}
+div {
+ db.revnumber.role.attribute = attribute role { text }
+ db.revnumber.attlist =
+ db.revnumber.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.revnumber =
+
+ ## A document revision number
+ element revnumber { db.revnumber.attlist, db._text }
+}
+div {
+ db.revremark.role.attribute = attribute role { text }
+ db.revremark.attlist =
+ db.revremark.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.revremark =
+
+ ## A description of a revision to a document
+ element revremark { db.revremark.attlist, db._text }
+}
+div {
+ db.revdescription.role.attribute = attribute role { text }
+ db.revdescription.attlist =
+ db.revdescription.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.revdescription =
+
+ ## A extended description of a revision to a document
+ element revdescription { db.revdescription.attlist, db.all.blocks* }
+}
+div {
+ db.seriesvolnums.role.attribute = attribute role { text }
+ db.seriesvolnums.attlist =
+ db.seriesvolnums.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.seriesvolnums =
+
+ ## Numbers of the volumes in a series of books
+ element seriesvolnums { db.seriesvolnums.attlist, db._text }
+}
+div {
+ db.volumenum.role.attribute = attribute role { text }
+ db.volumenum.attlist =
+ db.volumenum.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.volumenum =
+
+ ## The volume number of a document in a set (as of books in a set or articles in a
journal)
+ element volumenum { db.volumenum.attlist, db._text }
+}
+div {
+ db.issuenum.role.attribute = attribute role { text }
+ db.issuenum.attlist =
+ db.issuenum.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.issuenum =
+
+ ## The number of an issue of a journal
+ element issuenum { db.issuenum.attlist, db._text }
+}
+div {
+ db.package.role.attribute = attribute role { text }
+ db.package.attlist =
+ db.package.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.package =
+
+ ## A software or application package
+ element package { db.package.attlist, db._text }
+}
+div {
+ db.email.role.attribute = attribute role { text }
+ db.email.attlist =
+ db.email.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.email =
+
+ ## An email address
+ element email { db.email.attlist, db._text }
+}
+div {
+ db.lineannotation.role.attribute = attribute role { text }
+ db.lineannotation.attlist =
+ db.lineannotation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.lineannotation =
+
+ ## A comment on a line in a verbatim listing
+ element lineannotation { db.lineannotation.attlist, db._text }
+}
+div {
+ db.parameter.class.enumeration =
+
+ ## A command
+ "command"
+ |
+ ## A function
+ "function"
+ |
+ ## An option
+ "option"
+ db.parameter.class.attribute =
+
+ ## Identifies the class of parameter
+ attribute class { db.parameter.class.enumeration }
+ db.parameter.role.attribute = attribute role { text }
+ db.parameter.attlist =
+ db.parameter.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.parameter.class.attribute?
+ db.parameter =
+
+ ## A value or a symbolic reference to a value
+ element parameter { db.parameter.attlist, db._text }
+}
+db.replaceable.inlines = db._text | db.co
+div {
+ db.replaceable.class.enumeration =
+
+ ## A command
+ "command"
+ |
+ ## A function
+ "function"
+ |
+ ## An option
+ "option"
+ |
+ ## A parameter
+ "parameter"
+ db.replaceable.class.attribute =
+
+ ## Identifies the nature of the replaceable text
+ attribute class { db.replaceable.class.enumeration }
+ db.replaceable.role.attribute = attribute role { text }
+ db.replaceable.attlist =
+ db.replaceable.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.replaceable.class.attribute?
+ db.replaceable =
+
+ ## Content that may or must be replaced by the user
+ element replaceable {
+ db.replaceable.attlist, db.replaceable.inlines*
+ }
+}
+div {
+ db.uri.type.attribute =
+
+ ## Identifies the type of URI specified
+ attribute type { text }?
+ db.uri.role.attribute = attribute role { text }
+ db.uri.attlist =
+ db.uri.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.uri.type.attribute
+ db.uri =
+
+ ## A Uniform Resource Identifier
+ element uri { db.uri.attlist, db._text }
+}
+div {
+ db.abbrev.role.attribute = attribute role { text }
+ db.abbrev.attlist =
+ db.abbrev.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.abbrev =
+
+ ## An abbreviation, especially one followed by a period
+ element abbrev {
+ db.abbrev.attlist,
+ (db._text | db.superscript | db.subscript | db.trademark)*
+ }
+}
+div {
+ db.acronym.role.attribute = attribute role { text }
+ db.acronym.attlist =
+ db.acronym.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.acronym =
+
+ ## An often pronounceable word made from the initial (or selected) letters of a name
or phrase
+ element acronym {
+ db.acronym.attlist,
+ (db._text | db.superscript | db.subscript | db.trademark)*
+ }
+}
+div {
+ db.citation.role.attribute = attribute role { text }
+ db.citation.attlist =
+ db.citation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.citation =
+
+ ## An inline bibliographic reference to another published work
+ element citation { db.citation.attlist, db.all.inlines* }
+}
+div {
+ db.citerefentry.role.attribute = attribute role { text }
+ db.citerefentry.attlist =
+ db.citerefentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.citerefentry =
+
+ ## A citation to a reference page
+ element citerefentry {
+ db.citerefentry.attlist, db.refentrytitle, db.manvolnum?
+ }
+}
+div {
+ db.refentrytitle.role.attribute = attribute role { text }
+ db.refentrytitle.attlist =
+ db.refentrytitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refentrytitle =
+
+ ## The title of a reference page
+ element refentrytitle { db.refentrytitle.attlist, db.all.inlines* }
+}
+div {
+ db.manvolnum.role.attribute = attribute role { text }
+ db.manvolnum.attlist =
+ db.manvolnum.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.manvolnum =
+
+ ## A reference volume number
+ element manvolnum { db.manvolnum.attlist, db._text }
+}
+div {
+ db.citetitle.pubwork.enumeration =
+
+ ## An article
+ "article"
+ |
+ ## A bulletin board system
+ "bbs"
+ |
+ ## A book
+ "book"
+ |
+ ## A CD-ROM
+ "cdrom"
+ |
+ ## A chapter (as of a book)
+ "chapter"
+ |
+ ## A DVD
+ "dvd"
+ |
+ ## An email message
+ "emailmessage"
+ |
+ ## A gopher page
+ "gopher"
+ |
+ ## A journal
+ "journal"
+ |
+ ## A manuscript
+ "manuscript"
+ |
+ ## A posting to a newsgroup
+ "newsposting"
+ |
+ ## A part (as of a book)
+ "part"
+ |
+ ## A reference entry
+ "refentry"
+ |
+ ## A section (as of a book or article)
+ "section"
+ |
+ ## A series
+ "series"
+ |
+ ## A set (as of books)
+ "set"
+ |
+ ## A web page
+ "webpage"
+ |
+ ## A wiki page
+ "wiki"
+ db.citetitle.pubwork.attribute =
+
+ ## Identifies the nature of the publication being cited
+ attribute pubwork { db.citetitle.pubwork.enumeration }
+ db.citetitle.role.attribute = attribute role { text }
+ db.citetitle.attlist =
+ db.citetitle.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.citetitle.pubwork.attribute?
+ db.citetitle =
+
+ ## The title of a cited work
+ element citetitle { db.citetitle.attlist, db.all.inlines* }
+}
+div {
+ db.emphasis.role.attribute = attribute role { text }
+ db.emphasis.attlist =
+ db.emphasis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.emphasis =
+
+ ## Emphasized text
+ element emphasis { db.emphasis.attlist, db.all.inlines* }
+}
+div {
+ db._emphasis =
+
+ ## A limited span of emphasized text
+ element emphasis { db.emphasis.attlist, (db._text | db._emphasis)* }
+}
+div {
+ db.foreignphrase.role.attribute = attribute role { text }
+ db.foreignphrase.attlist =
+ db.foreignphrase.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.foreignphrase =
+
+ ## A word or phrase in a language other than the primary language of the document
+ element foreignphrase {
+ db.foreignphrase.attlist, (text | db.general.inlines)*
+ }
+}
+div {
+ db.phrase.role.attribute = attribute role { text }
+ db.phrase.attlist =
+ db.phrase.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.phrase =
+
+ ## A span of text
+ element phrase { db.phrase.attlist, db.all.inlines* }
+}
+div {
+ db._phrase =
+
+ ## A limited span of text
+ element phrase { db.phrase.attlist, db._text }
+}
+div {
+ db.quote.role.attribute = attribute role { text }
+ db.quote.attlist =
+ db.quote.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.quote =
+
+ ## An inline quotation
+ element quote { db.quote.attlist, db.all.inlines* }
+}
+div {
+ db.subscript.role.attribute = attribute role { text }
+ db.subscript.attlist =
+ db.subscript.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.subscript =
+
+ ## A subscript (as in H2
+ ## O, the molecular formula for water)
+ element subscript { db.subscript.attlist, db._text }
+}
+div {
+ db.superscript.role.attribute = attribute role { text }
+ db.superscript.attlist =
+ db.superscript.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.superscript =
+
+ ## A superscript (as in x^2, the mathematical notation for x multiplied by itself)
+ element superscript { db.superscript.attlist, db._text }
+}
+div {
+ db.trademark.class.enumeration =
+
+ ## A copyright
+ "copyright"
+ |
+ ## A registered copyright
+ "registered"
+ |
+ ## A service
+ "service"
+ |
+ ## A trademark
+ "trade"
+ db.trademark.class.attribute =
+
+ ## Identifies the class of trade mark
+ attribute class { db.trademark.class.enumeration }
+ db.trademark.role.attribute = attribute role { text }
+ db.trademark.attlist =
+ db.trademark.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.trademark.class.attribute?
+ db.trademark =
+
+ ## A trademark
+ element trademark { db.trademark.attlist, db._text }
+}
+div {
+ db.wordasword.role.attribute = attribute role { text }
+ db.wordasword.attlist =
+ db.wordasword.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.wordasword =
+
+ ## A word meant specifically as a word and not representing anything else
+ element wordasword { db.wordasword.attlist, db._text }
+}
+div {
+ db.footnoteref.role.attribute = attribute role { text }
+ db.footnoteref.label.attribute = db.label.attribute
+ db.footnoteref.attlist =
+ db.footnoteref.role.attribute?
+ & db.common.attributes
+ & db.linkend.attribute
+ & db.footnoteref.label.attribute?
+ db.footnoteref =
+
+ ## A cross reference to a footnote (a footnote mark)
+ [
+ s:pattern [
+ name = "Footnote reference type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:footnoteref"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and
namespace-uri(//*[@xml:id=current()/@linkend]) =
'http://docbook.org/ns/docbook'"
+ "@linkend on footnoteref must point to a footnote."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element footnoteref { db.footnoteref.attlist, empty }
+}
+div {
+ db.xref.role.attribute = attribute role { text }
+ db.xref.xrefstyle.attribute = db.xrefstyle.attribute
+ db.xref.endterm.attribute = db.endterm.attribute
+ db.xref.attlist =
+ db.xref.role.attribute?
+ & db.common.attributes
+ & db.common.req.linking.attributes
+ & db.xref.xrefstyle.attribute?
+ & db.xref.endterm.attribute?
+ db.xref =
+
+ ## A cross reference to another part of the document
+ element xref { db.xref.attlist, empty }
+}
+div {
+ db.link.role.attribute = attribute role { text }
+ db.link.xrefstyle.attribute = db.xrefstyle.attribute
+ db.link.endterm.attribute = db.endterm.attribute
+ db.link.attlist =
+ db.link.role.attribute?
+ & db.common.attributes
+ & db.common.req.linking.attributes
+ & db.link.xrefstyle.attribute?
+ & db.link.endterm.attribute?
+ db.link =
+
+ ## A hypertext link
+ element link { db.link.attlist, db.all.inlines* }
+}
+div {
+ db.olink.role.attribute = attribute role { text }
+ db.olink.xrefstyle.attribute = db.xrefstyle.attribute
+ db.olink.localinfo.attribute =
+
+ ## Holds additional information that may be used by the applicatoin when resolving
the link
+ attribute localinfo { text }
+ db.olink.targetdoc.attribute =
+
+ ## Specifies the URI of the document in which the link target appears
+ attribute targetdoc { xsd:anyURI }
+ db.olink.targetptr.attribute =
+
+ ## Specifies the location of the link target in the document
+ attribute targetptr { text }
+ db.olink.type.attribute =
+
+ ## Identifies application-specific customization of the link behavior
+ attribute type { text }
+ db.olink.attlist =
+ db.common.attributes
+ & db.olink.targetdoc.attribute?
+ & db.olink.role.attribute?
+ & db.olink.xrefstyle.attribute?
+ & db.olink.localinfo.attribute?
+ & db.olink.targetptr.attribute?
+ & db.olink.type.attribute?
+ db.olink =
+
+ ## A link that addresses its target indirectly
+ element olink { db.olink.attlist, db.all.inlines* }
+}
+div {
+ db.anchor.role.attribute = attribute role { text }
+ db.anchor.attlist =
+ db.anchor.role.attribute? & db.common.idreq.attributes
+ db.anchor =
+
+ ## A spot in the document
+ element anchor { db.anchor.attlist, empty }
+}
+div {
+ db.alt.role.attribute = attribute role { text }
+ db.alt.attlist = db.alt.role.attribute? & db.common.attributes
+ db.alt =
+
+ ## A text-only annotation, often used for accessibility
+ element alt { db.alt.attlist, (text | db.inlinemediaobject)* }
+}
+db.status.attribute =
+
+ ## Identifies the editorial or publication status of the element on which it occurs
+ attribute status { text }
+db.toplevel.sections =
+ ((db.section+, db.simplesect*) | db.simplesect+)
+ | (db.sect1+, db.simplesect*)
+ | db.refentry+
+db.toplevel.blocks.or.sections =
+ (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections
+db.recursive.sections =
+ ((db.section+, db.simplesect*) | db.simplesect+)
+ | db.refentry+
+db.recursive.blocks.or.sections =
+ (db.all.blocks+, db.recursive.sections?) | db.recursive.sections
+db.divisions = db.part | db.reference
+db.components =
+ db.dedication
+ | db.acknowledgements
+ | db.preface
+ | db.chapter
+ | db.appendix
+ | db.article
+ | db.colophon
+db.navigation.components =
+ notAllowed | db.glossary | db.bibliography | db.index | db.toc
+db.component.contentmodel =
+ db.navigation.components*,
+ db.toplevel.blocks.or.sections,
+ db.navigation.components*
+db.setindex.components = notAllowed | db.setindex
+db.toc.components = notAllowed | db.toc
+db.set.components = db.set | db.book
+div {
+ db.set.status.attribute = db.status.attribute
+ db.set.role.attribute = attribute role { text }
+ db.set.attlist =
+ db.set.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.set.status.attribute?
+ db.set.info = db._info.title.req
+ db.set =
+
+ ## A collection of books
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:set"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element set {
+ db.set.attlist,
+ db.set.info,
+ db.toc.components?,
+ db.set.components+,
+ db.setindex.components?
+ }
+}
+div {
+ db.book.status.attribute = db.status.attribute
+ db.book.role.attribute = attribute role { text }
+ db.book.attlist =
+ db.book.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.book.status.attribute?
+ db.book.info = db._info
+ db.book =
+
+ ## A book
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:book"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element book {
+ db.book.attlist,
+ db.book.info,
+ (db.navigation.components | db.components | db.divisions)*
+ }
+}
+div {
+ db.dedication.status.attribute = db.status.attribute
+ db.dedication.role.attribute = attribute role { text }
+ db.dedication.attlist =
+ db.dedication.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.dedication.status.attribute?
+ db.dedication.info = db._info
+ db.dedication =
+
+ ## The dedication of a book or other component
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:dedication"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element dedication {
+ db.dedication.attlist, db.dedication.info, db.all.blocks+
+ }
+}
+div {
+ db.acknowledgements.status.attribute = db.status.attribute
+ db.acknowledgements.role.attribute = attribute role { text }
+ db.acknowledgements.attlist =
+ db.acknowledgements.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.acknowledgements.status.attribute?
+ db.acknowledgements.info = db._info
+ db.acknowledgements =
+
+ ## Acknowledgements of a book or other component
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:acknowledgements"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element acknowledgements {
+ db.acknowledgements.attlist,
+ db.acknowledgements.info,
+ db.all.blocks+
+ }
+}
+div {
+ db.colophon.status.attribute = db.status.attribute
+ db.colophon.role.attribute = attribute role { text }
+ db.colophon.attlist =
+ db.colophon.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.colophon.status.attribute?
+ db.colophon.info = db._info
+ db.colophon =
+
+ ## Text at the back of a book describing facts about its production
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:colophon"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element colophon {
+ db.colophon.attlist, db.colophon.info, db.all.blocks+
+ }
+}
+div {
+ db.appendix.status.attribute = db.status.attribute
+ db.appendix.role.attribute = attribute role { text }
+ db.appendix.attlist =
+ db.appendix.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.appendix.status.attribute?
+ db.appendix.info = db._info.title.req
+ db.appendix =
+
+ ## An appendix in a Book or Article
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:appendix"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element appendix {
+ db.appendix.attlist, db.appendix.info, db.component.contentmodel
+ }
+}
+div {
+ db.chapter.status.attribute = db.status.attribute
+ db.chapter.role.attribute = attribute role { text }
+ db.chapter.attlist =
+ db.chapter.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.chapter.status.attribute?
+ db.chapter.info = db._info.title.req
+ db.chapter =
+
+ ## A chapter, as of a book
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:chapter"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element chapter {
+ db.chapter.attlist, db.chapter.info, db.component.contentmodel
+ }
+}
+db.part.components =
+ (db.navigation.components | db.components)
+ | (db.refentry | db.reference)
+div {
+ db.part.status.attribute = db.status.attribute
+ db.part.role.attribute = attribute role { text }
+ db.part.attlist =
+ db.part.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.part.status.attribute?
+ db.part.info = db._info.title.req
+ db.part =
+
+ ## A division in a book
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:part"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element part {
+ db.part.attlist, db.part.info, db.partintro?, db.part.components+
+ }
+}
+div {
+ db.preface.status.attribute = db.status.attribute
+ db.preface.role.attribute = attribute role { text }
+ db.preface.attlist =
+ db.preface.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.preface.status.attribute?
+ db.preface.info = db._info.title.req
+ db.preface =
+
+ ## Introductory matter preceding the first chapter of a book
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:preface"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element preface {
+ db.preface.attlist, db.preface.info, db.component.contentmodel
+ }
+}
+div {
+ db.partintro.status.attribute = db.status.attribute
+ db.partintro.role.attribute = attribute role { text }
+ db.partintro.attlist =
+ db.partintro.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.partintro.status.attribute?
+ db.partintro.info = db._info
+ db.partintro =
+
+ ## An introduction to the contents of a part
+ element partintro {
+ db.partintro.attlist,
+ db.partintro.info,
+ db.toplevel.blocks.or.sections
+ }
+}
+div {
+ db.section.status.attribute = db.status.attribute
+ db.section.role.attribute = attribute role { text }
+ db.section.attlist =
+ db.section.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.section.status.attribute?
+ db.section.info = db._info.title.req
+ db.section =
+
+ ## A recursive section
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:section"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element section {
+ db.section.attlist,
+ db.section.info,
+ db.recursive.blocks.or.sections,
+ db.navigation.components*
+ }
+}
+div {
+ db.simplesect.status.attribute = db.status.attribute
+ db.simplesect.role.attribute = attribute role { text }
+ db.simplesect.attlist =
+ db.simplesect.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.simplesect.status.attribute?
+ db.simplesect.info = db._info.title.req
+ db.simplesect =
+
+ ## A section of a document with no subdivisions
+ element simplesect {
+ db.simplesect.attlist, db.simplesect.info, db.all.blocks+
+ }
+}
+db.article.components = db.toplevel.sections
+div {
+ db.article.status.attribute = db.status.attribute
+ db.article.class.enumeration =
+
+ ## A collection of frequently asked questions.
+ "faq"
+ |
+ ## An article in a journal or other periodical.
+ "journalarticle"
+ |
+ ## A description of a product.
+ "productsheet"
+ |
+ ## A specification.
+ "specification"
+ |
+ ## A technical report.
+ "techreport"
+ |
+ ## A white paper.
+ "whitepaper"
+ db.article.class.attribute =
+
+ ## Identifies the nature of the article
+ attribute class { db.article.class.enumeration }
+ db.article.role.attribute = attribute role { text }
+ db.article.attlist =
+ db.article.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.article.status.attribute?
+ & db.article.class.attribute?
+ db.article.info = db._info.title.req
+ db.article =
+
+ ## An article
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:article"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element article {
+ db.article.attlist,
+ db.article.info,
+ (db.navigation.components
+ | db.appendix
+ | db.acknowledgements
+ | db.colophon)*,
+ ((db.all.blocks+, db.article.components?)
+ | db.article.components),
+ (db.navigation.components
+ | db.appendix
+ | db.acknowledgements
+ | db.colophon)*
+ }
+}
+db.annotations.attribute =
+
+ ## Identifies one or more annotations that apply to this element
+ attribute annotations { text }
+div {
+ db.annotation.role.attribute = attribute role { text }
+ db.annotation.annotates.attribute =
+
+ ## Identifies one ore more elements to which this annotation applies
+ attribute annotates { text }
+ db.annotation.attlist =
+ db.annotation.role.attribute?
+ & db.annotation.annotates.attribute?
+ & db.common.attributes
+ db.annotation.info = db._info.title.only
+ db.annotation =
+
+ ## An annotation
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:annotation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:annotation)"
+ "annotation must not occur in the descendants of annotation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element annotation {
+ db.annotation.attlist, db.annotation.info, db.all.blocks+
+ }
+}
+db.xlink.from.attribute =
+
+ ## Specifies the XLink traversal-from
+ attribute xlink:from { xsd:NMTOKEN }?
+db.xlink.label.attribute =
+
+ ## Specifies the XLink label
+ attribute xlink:label { xsd:NMTOKEN }?
+db.xlink.to.attribute =
+
+ ## Specifies the XLink traversal-to
+ attribute xlink:to { xsd:NMTOKEN }?
+div {
+ db.extendedlink.role.attribute = attribute role { text }
+ db.extendedlink.attlist =
+ db.extendedlink.role.attribute?
+ & db.common.attributes
+ &
+ ## Identifies the XLink link type
+ [ a:defaultValue = "extended" ]
+ attribute xlink:type {
+
+ ## An XLink extended link
+ "extended"
+ }?
+ & db.xlink.role.attribute?
+ & db.xlink.title.attribute?
+ db.extendedlink =
+
+ ## An XLink extended link
+ element extendedlink {
+ db.extendedlink.attlist, (db.locator | db.arc)+
+ }
+}
+div {
+ db.locator.role.attribute = attribute role { text }
+ db.locator.attlist =
+ db.locator.role.attribute?
+ & db.common.attributes
+ &
+ ## Identifies the XLink link type
+ [ a:defaultValue = "locator" ]
+ attribute xlink:type {
+
+ ## An XLink locator link
+ "locator"
+ }?
+ & db.xlink.href.attribute
+ & db.xlink.role.attribute?
+ & db.xlink.title.attribute?
+ & db.xlink.label.attribute?
+ db.locator =
+
+ ## An XLink locator in an extendedlink
+ element locator { db.locator.attlist, empty }
+}
+div {
+ db.arc.role.attribute = attribute role { text }
+ db.arc.attlist =
+ db.arc.role.attribute?
+ & db.common.attributes
+ &
+ ## Identifies the XLink link type
+ [ a:defaultValue = "arc" ]
+ attribute xlink:type {
+
+ ## An XLink arc link
+ "arc"
+ }?
+ & db.xlink.arcrole.attribute?
+ & db.xlink.title.attribute?
+ & db.xlink.show.attribute?
+ & db.xlink.actuate.attribute?
+ & db.xlink.from.attribute?
+ & db.xlink.to.attribute?
+ db.arc =
+
+ ## An XLink arc in an extendedlink
+ element arc { db.arc.attlist, empty }
+}
+db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+
+div {
+ db.sect1.status.attribute = db.status.attribute
+ db.sect1.role.attribute = attribute role { text }
+ db.sect1.attlist =
+ db.sect1.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.sect1.status.attribute?
+ db.sect1.info = db._info.title.req
+ db.sect1 =
+
+ ## A top-level section of document
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:sect1"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sect1 {
+ db.sect1.attlist,
+ db.sect1.info,
+ ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections),
+ db.navigation.components*
+ }
+}
+db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+
+div {
+ db.sect2.status.attribute = db.status.attribute
+ db.sect2.role.attribute = attribute role { text }
+ db.sect2.attlist =
+ db.sect2.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.sect2.status.attribute?
+ db.sect2.info = db._info.title.req
+ db.sect2 =
+
+ ## A subsection within a Sect1
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:sect2"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sect2 {
+ db.sect2.attlist,
+ db.sect2.info,
+ ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections),
+ db.navigation.components*
+ }
+}
+db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+
+div {
+ db.sect3.status.attribute = db.status.attribute
+ db.sect3.role.attribute = attribute role { text }
+ db.sect3.attlist =
+ db.sect3.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.sect3.status.attribute?
+ db.sect3.info = db._info.title.req
+ db.sect3 =
+
+ ## A subsection within a Sect2
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:sect3"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sect3 {
+ db.sect3.attlist,
+ db.sect3.info,
+ ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections),
+ db.navigation.components*
+ }
+}
+db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+
+div {
+ db.sect4.status.attribute = db.status.attribute
+ db.sect4.role.attribute = attribute role { text }
+ db.sect4.attlist =
+ db.sect4.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.sect4.status.attribute?
+ db.sect4.info = db._info.title.req
+ db.sect4 =
+
+ ## A subsection within a Sect3
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:sect4"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sect4 {
+ db.sect4.attlist,
+ db.sect4.info,
+ ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections),
+ db.navigation.components*
+ }
+}
+db.sect5.sections = db.simplesect+
+div {
+ db.sect5.status.attribute = db.status.attribute
+ db.sect5.role.attribute = attribute role { text }
+ db.sect5.attlist =
+ db.sect5.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.sect5.status.attribute?
+ db.sect5.info = db._info.title.req
+ db.sect5 =
+
+ ## A subsection within a Sect4
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:sect5"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element sect5 {
+ db.sect5.attlist,
+ db.sect5.info,
+ ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections),
+ db.navigation.components*
+ }
+}
+db.toplevel.refsection = db.refsection+ | db.refsect1+
+db.secondlevel.refsection = db.refsection+ | db.refsect2+
+db.reference.components = db.refentry
+div {
+ db.reference.role.attribute = attribute role { text }
+ db.reference.attlist =
+ db.reference.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.status.attribute?
+ & db.label.attribute?
+ db.reference.info = db._info.title.req
+ db.reference =
+
+ ## A collection of reference entries
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:reference"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element reference {
+ db.reference.attlist,
+ db.reference.info,
+ db.partintro?,
+ db.reference.components+
+ }
+}
+div {
+ db.refentry.role.attribute = attribute role { text }
+ db.refentry.attlist =
+ db.refentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.status.attribute?
+ & db.label.attribute?
+ db.refentry.info = db._info.title.forbidden
+ db.refentry =
+
+ ## A reference page (originally a UNIX man-style reference page)
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:refentry"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element refentry {
+ db.refentry.attlist,
+ db.indexterm*,
+ db.refentry.info,
+ db.refmeta?,
+ db.refnamediv+,
+ db.refsynopsisdiv?,
+ db.toplevel.refsection
+ }
+}
+div {
+ db.refmeta.role.attribute = attribute role { text }
+ db.refmeta.attlist =
+ db.refmeta.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refmeta =
+
+ ## Meta-information for a reference entry
+ element refmeta {
+ db.refmeta.attlist,
+ db.indexterm*,
+ db.refentrytitle,
+ db.manvolnum?,
+ db.refmiscinfo*,
+ db.indexterm*
+ }
+}
+db.refmiscinfo.class.enumeration =
+
+ ## The name of the software product or component to which this topic applies
+ "source"
+ |
+ ## The version of the software product or component to which this topic applies
+ "version"
+ |
+ ## The section title of the reference page (e.g., User Commands)
+ "manual"
+ |
+ ## The section title of the reference page (believed synonymous with
"manual" but in wide use)
+ "sectdesc"
+ |
+ ## The name of the software product or component to which this topic applies (e.g.,
SunOS x.y; believed synonymous with "source" but in wide use)
+ "software"
+db.refmiscinfo.class-enum.attribute =
+
+ ## Identifies the kind of miscellaneous information
+ attribute class { db.refmiscinfo.class.enumeration }?
+db.refmiscinfo.class-other.attribute =
+
+ ## Identifies the nature of non-standard miscellaneous information
+ attribute otherclass { text }
+db.refmiscinfo.class-other.attributes =
+
+ ## Identifies the kind of miscellaneious information
+ attribute class {
+
+ ## Indicates that the information is some 'other' kind.
+ "other"
+ }
+ & db.refmiscinfo.class-other.attribute
+db.refmiscinfo.class.attribute =
+ db.refmiscinfo.class-enum.attribute
+ | db.refmiscinfo.class-other.attributes
+div {
+ db.refmiscinfo.role.attribute = attribute role { text }
+ db.refmiscinfo.attlist =
+ db.refmiscinfo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.refmiscinfo.class.attribute?
+ db.refmiscinfo =
+
+ ## Meta-information for a reference entry other than the title and volume number
+ element refmiscinfo { db.refmiscinfo.attlist, db._text }
+}
+div {
+ db.refnamediv.role.attribute = attribute role { text }
+ db.refnamediv.attlist =
+ db.refnamediv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refnamediv =
+
+ ## The name, purpose, and classification of a reference page
+ element refnamediv {
+ db.refnamediv.attlist,
+ db.refdescriptor?,
+ db.refname+,
+ db.refpurpose,
+ db.refclass*
+ }
+}
+div {
+ db.refdescriptor.role.attribute = attribute role { text }
+ db.refdescriptor.attlist =
+ db.refdescriptor.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refdescriptor =
+
+ ## A description of the topic of a reference page
+ element refdescriptor { db.refdescriptor.attlist, db.all.inlines* }
+}
+div {
+ db.refname.role.attribute = attribute role { text }
+ db.refname.attlist =
+ db.refname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refname =
+
+ ## The name of (one of) the subject(s) of a reference page
+ element refname { db.refname.attlist, db.all.inlines* }
+}
+div {
+ db.refpurpose.role.attribute = attribute role { text }
+ db.refpurpose.attlist =
+ db.refpurpose.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refpurpose =
+
+ ## A short (one sentence) synopsis of the topic of a reference page
+ element refpurpose { db.refpurpose.attlist, db.all.inlines* }
+}
+div {
+ db.refclass.role.attribute = attribute role { text }
+ db.refclass.attlist =
+ db.refclass.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refclass =
+
+ ## The scope or other indication of applicability of a reference entry
+ element refclass { db.refclass.attlist, (text | db.application)* }
+}
+div {
+ db.refsynopsisdiv.role.attribute = attribute role { text }
+ db.refsynopsisdiv.attlist =
+ db.refsynopsisdiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.refsynopsisdiv.info = db._info
+ db.refsynopsisdiv =
+
+ ## A syntactic synopsis of the subject of the reference page
+ element refsynopsisdiv {
+ db.refsynopsisdiv.attlist,
+ db.refsynopsisdiv.info,
+ ((db.all.blocks+, db.secondlevel.refsection?)
+ | db.secondlevel.refsection)
+ }
+}
+div {
+ db.refsection.role.attribute = attribute role { text }
+ db.refsection.attlist =
+ db.refsection.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.status.attribute?
+ & db.label.attribute?
+ db.refsection.info = db._info.title.req
+ db.refsection =
+
+ ## A recursive section in a refentry
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:refsection"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element refsection {
+ db.refsection.attlist,
+ db.refsection.info,
+ ((db.all.blocks+, db.refsection*) | db.refsection+)
+ }
+}
+db.refsect1.sections = db.refsect2+
+div {
+ db.refsect1.status.attribute = db.status.attribute
+ db.refsect1.role.attribute = attribute role { text }
+ db.refsect1.attlist =
+ db.refsect1.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.refsect1.status.attribute?
+ db.refsect1.info = db._info.title.req
+ db.refsect1 =
+
+ ## A major subsection of a reference entry
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:refsect1"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element refsect1 {
+ db.refsect1.attlist,
+ db.refsect1.info,
+ ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections)
+ }
+}
+db.refsect2.sections = db.refsect3+
+div {
+ db.refsect2.status.attribute = db.status.attribute
+ db.refsect2.role.attribute = attribute role { text }
+ db.refsect2.attlist =
+ db.refsect2.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.refsect2.status.attribute?
+ db.refsect2.info = db._info.title.req
+ db.refsect2 =
+
+ ## A subsection of a refsect1
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:refsect2"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element refsect2 {
+ db.refsect2.attlist,
+ db.refsect2.info,
+ ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections)
+ }
+}
+div {
+ db.refsect3.status.attribute = db.status.attribute
+ db.refsect3.role.attribute = attribute role { text }
+ db.refsect3.attlist =
+ db.refsect3.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.refsect3.status.attribute?
+ db.refsect3.info = db._info.title.req
+ db.refsect3 =
+
+ ## A subsection of a refsect2
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:refsect3"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element refsect3 {
+ db.refsect3.attlist, db.refsect3.info, db.all.blocks+
+ }
+}
+db.glossary.inlines = db.firstterm | db.glossterm
+db.baseform.attribute =
+
+ ## Specifies the base form of the term, the one that appears in the glossary. This
allows adjectival, plural, and other variations of the term to appear in the element. The
element content is the default base form.
+ attribute baseform { text }?
+div {
+ db.glosslist.role.attribute = attribute role { text }
+ db.glosslist.attlist =
+ db.glosslist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.glosslist.info = db._info.title.only
+ db.glosslist =
+
+ ## A wrapper for a list of glossary entries
+ element glosslist {
+ db.glosslist.attlist,
+ db.glosslist.info?,
+ db.all.blocks*,
+ db.glossentry+
+ }
+}
+div {
+ db.glossentry.role.attribute = attribute role { text }
+ db.glossentry.sortas.attribute =
+
+ ## Specifies the string by which the element's content is to be sorted; if
unspecified, the content is used
+ attribute sortas { text }
+ db.glossentry.attlist =
+ db.glossentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.glossentry.sortas.attribute?
+ db.glossentry =
+
+ ## An entry in a Glossary or GlossList
+ element glossentry {
+ db.glossentry.attlist,
+ db.glossterm,
+ db.acronym?,
+ db.abbrev?,
+ db.indexterm*,
+ (db.glosssee | db.glossdef+)
+ }
+}
+div {
+ db.glossdef.role.attribute = attribute role { text }
+ db.glossdef.subject.attribute =
+
+ ## Specifies a list of keywords for the definition
+ attribute subject { text }
+ db.glossdef.attlist =
+ db.glossdef.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.glossdef.subject.attribute?
+ db.glossdef =
+
+ ## A definition in a GlossEntry
+ element glossdef {
+ db.glossdef.attlist, db.all.blocks+, db.glossseealso*
+ }
+}
+div {
+ db.glosssee.role.attribute = attribute role { text }
+ db.glosssee.otherterm.attribute =
+
+ ## Identifies the other term
+ attribute otherterm { xsd:IDREF }
+ db.glosssee.attlist =
+ db.glosssee.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.glosssee.otherterm.attribute?
+ db.glosssee =
+
+ ## A cross-reference from one glossentry
+ ## to another
+ [
+ s:pattern [
+ name = "Glosssary 'see' type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:glosssee[@otherterm]"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry'
and namespace-uri(//*[@xml:id=current()/@otherterm]) =
'http://docbook.org/ns/docbook'"
+ "@otherterm on glosssee must point to a glossentry."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element glosssee { db.glosssee.attlist, db.all.inlines* }
+}
+div {
+ db.glossseealso.role.attribute = attribute role { text }
+ db.glossseealso.otherterm.attribute =
+
+ ## Identifies the other term
+ attribute otherterm { xsd:IDREF }
+ db.glossseealso.attlist =
+ db.glossseealso.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.glossseealso.otherterm.attribute?
+ db.glossseealso =
+
+ ## A cross-reference from one GlossEntry to another
+ [
+ s:pattern [
+ name = "Glossary 'seealso' type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:glossseealso[@otherterm]"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry'
and namespace-uri(//*[@xml:id=current()/@otherterm]) =
'http://docbook.org/ns/docbook'"
+ "@otherterm on glossseealso must point to a glossentry."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element glossseealso { db.glossseealso.attlist, db.all.inlines* }
+}
+div {
+ db.firstterm.role.attribute = attribute role { text }
+ db.firstterm.attlist =
+ db.firstterm.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.baseform.attribute
+ db.firstterm =
+
+ ## The first occurrence of a term
+ [
+ s:pattern [
+ name = "Glossary 'firstterm' type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:firstterm[@linkend]"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry'
and namespace-uri(//*[@xml:id=current()/@linkend]) =
'http://docbook.org/ns/docbook'"
+ "@linkend on firstterm must point to a glossentry."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element firstterm { db.firstterm.attlist, db.all.inlines* }
+}
+div {
+ db.glossterm.role.attribute = attribute role { text }
+ db.glossterm.attlist =
+ db.glossterm.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.baseform.attribute
+ db.glossterm =
+
+ ## A glossary term
+ [
+ s:pattern [
+ name = "Glossary 'glossterm' type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:glossterm[@linkend]"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry'
and namespace-uri(//*[@xml:id=current()/@linkend]) =
'http://docbook.org/ns/docbook'"
+ "@linkend on glossterm must point to a glossentry."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element glossterm { db.glossterm.attlist, db.all.inlines* }
+}
+div {
+ db.glossary.status.attribute = db.status.attribute
+ db.glossary.role.attribute = attribute role { text }
+ db.glossary.attlist =
+ db.glossary.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.glossary.status.attribute?
+ db.glossary.info = db._info
+ db.glossary =
+
+ ## A glossary
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:glossary"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element glossary {
+ db.glossary.attlist,
+ db.glossary.info,
+ db.all.blocks*,
+ (db.glossdiv* | db.glossentry*),
+ db.bibliography?
+ }
+}
+div {
+ db.glossdiv.status.attribute = db.status.attribute
+ db.glossdiv.role.attribute = attribute role { text }
+ db.glossdiv.attlist =
+ db.glossdiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.glossdiv.status.attribute?
+ db.glossdiv.info = db._info.title.req
+ db.glossdiv =
+
+ ## A division in a Glossary
+ element glossdiv {
+ db.glossdiv.attlist,
+ db.glossdiv.info,
+ db.all.blocks*,
+ db.glossentry+
+ }
+}
+div {
+ db.termdef.role.attribute = attribute role { text }
+ db.termdef.attlist =
+ db.termdef.role.attribute?
+ & db.glossentry.sortas.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.baseform.attribute
+ db.termdef =
+
+ ## An inline definition of a term
+ [
+ s:pattern [
+ name = "Glossary term definition constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:termdef"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "count(db:firstterm) = 1"
+ "A termdef must contain exactly one firstterm"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element termdef { db.termdef.attlist, db.all.inlines* }
+}
+db.relation.attribute =
+
+ ## Identifies the relationship between the bibliographic elemnts
+ attribute relation { text }
+div {
+ db.biblioentry.role.attribute = attribute role { text }
+ db.biblioentry.attlist =
+ db.biblioentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.biblioentry =
+
+ ## An entry in a Bibliography
+ element biblioentry {
+ db.biblioentry.attlist, db.bibliographic.elements+
+ }
+}
+div {
+ db.bibliomixed.role.attribute = attribute role { text }
+ db.bibliomixed.attlist =
+ db.bibliomixed.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.bibliomixed =
+
+ ## An entry in a Bibliography
+ element bibliomixed {
+ db.bibliomixed.attlist, (text | db.bibliographic.elements)*
+ }
+}
+div {
+ db.biblioset.relation.attribute = db.relation.attribute
+ db.biblioset.role.attribute = attribute role { text }
+ db.biblioset.attlist =
+ db.biblioset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.biblioset.relation.attribute?
+ db.biblioset =
+
+ ## A raw container for related bibliographic information
+ element biblioset {
+ db.biblioset.attlist, db.bibliographic.elements+
+ }
+}
+div {
+ db.bibliomset.relation.attribute = db.relation.attribute
+ db.bibliomset.role.attribute = attribute role { text }
+ db.bibliomset.attlist =
+ db.bibliomset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.bibliomset.relation.attribute?
+ db.bibliomset =
+
+ ## A cooked container for related bibliographic information
+ element bibliomset {
+ db.bibliomset.attlist, (db._text | db.bibliographic.elements)*
+ }
+}
+div {
+ db.bibliomisc.role.attribute = attribute role { text }
+ db.bibliomisc.attlist =
+ db.bibliomisc.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.bibliomisc =
+
+ ## Untyped bibliographic information
+ element bibliomisc { db.bibliomisc.attlist, db._text }
+}
+div {
+ db.bibliography.status.attrib = db.status.attribute
+ db.bibliography.role.attribute = attribute role { text }
+ db.bibliography.attlist =
+ db.bibliography.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.bibliography.status.attrib?
+ db.bibliography.info = db._info
+ db.bibliography =
+
+ ## A bibliography
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:bibliography"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element bibliography {
+ db.bibliography.attlist,
+ db.bibliography.info,
+ db.all.blocks*,
+ (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+)
+ }
+}
+div {
+ db.bibliodiv.status.attrib = db.status.attribute
+ db.bibliodiv.role.attribute = attribute role { text }
+ db.bibliodiv.attlist =
+ db.bibliodiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.bibliodiv.status.attrib?
+ db.bibliodiv.info = db._info.title.req
+ db.bibliodiv =
+
+ ## A section of a Bibliography
+ element bibliodiv {
+ db.bibliodiv.attlist,
+ db.bibliodiv.info,
+ db.all.blocks*,
+ (db.biblioentry | db.bibliomixed)+
+ }
+}
+div {
+ db.bibliolist.role.attribute = attribute role { text }
+ db.bibliolist.attlist =
+ db.bibliolist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.bibliolist.info = db._info.title.only
+ db.bibliolist =
+
+ ## A wrapper for a list of bibliography entries
+ element bibliolist {
+ db.bibliolist.attlist,
+ db.bibliolist.info?,
+ db.all.blocks*,
+ (db.biblioentry | db.bibliomixed)+
+ }
+}
+div {
+ db.biblioref.role.attribute = attribute role { text }
+ db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute
+ db.biblioref.endterm.attribute = db.endterm.attribute
+ db.biblioref.units.attribute =
+
+ ## The units (for example, pages) used to identify the beginning and ending of a
reference.
+ attribute units { xsd:token }
+ db.biblioref.begin.attribute =
+
+ ## Identifies the beginning of a reference; the location within the work that is
being referenced.
+ attribute begin { xsd:token }
+ db.biblioref.end.attribute =
+
+ ## Identifies the end of a reference.
+ attribute end { xsd:token }
+ db.biblioref.attlist =
+ db.biblioref.role.attribute?
+ & db.common.attributes
+ & db.common.req.linking.attributes
+ & db.biblioref.xrefstyle.attribute?
+ & db.biblioref.endterm.attribute?
+ & db.biblioref.units.attribute?
+ & db.biblioref.begin.attribute?
+ & db.biblioref.end.attribute?
+ db.biblioref =
+
+ ## A cross-reference to a bibliographic entry
+ element biblioref { db.biblioref.attlist, empty }
+}
+db.significance.enumeration =
+
+ ## Normal
+ "normal"
+ |
+ ## Preferred
+ "preferred"
+db.significance.attribute =
+
+ ## Specifies the significance of the term
+ attribute significance { db.significance.enumeration }
+db.zone.attribute =
+
+ ## Specifies the IDs of the elements to which this term applies
+ attribute zone { xsd:IDREFS }
+db.indexterm.pagenum.attribute =
+
+ ## Indicates the page on which this index term occurs in some version of the printed
document
+ attribute pagenum { text }
+db.scope.enumeration =
+
+ ## All indexes
+ "all"
+ |
+ ## The global index (as for a combined index of a set of box)
+ "global"
+ |
+ ## The local index (the index for this document only)
+ "local"
+db.scope.attribute =
+
+ ## Specifies the scope of the index term
+ attribute scope { db.scope.enumeration }
+db.sortas.attribute =
+
+ ## Specifies the string by which the term is to be sorted; if unspecified, the term
content is used
+ attribute sortas { text }
+db.index.type.attribute =
+
+ ## Specifies the target index for this term
+ attribute type { text }
+div {
+ db.itermset.role.attribute = attribute role { text }
+ db.itermset.attlist =
+ db.itermset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.itermset =
+
+ ## A set of index terms in the meta-information of a document
+ element itermset { db.itermset.attlist, db.indexterm.singular+ }
+}
+db.indexterm.contentmodel =
+ db.primary?,
+ ((db.secondary,
+ ((db.tertiary, (db.see | db.seealso+)?)
+ | db.see
+ | db.seealso+)?)
+ | db.see
+ | db.seealso+)?
+div {
+ db.indexterm.singular.role.attribute = attribute role { text }
+ db.indexterm.singular.class.attribute =
+
+ ## Identifies the class of index term
+ attribute class {
+
+ ## A singular index term
+ "singular"
+ }
+ db.indexterm.singular.attlist =
+ db.indexterm.singular.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.significance.attribute?
+ & db.zone.attribute?
+ & db.indexterm.pagenum.attribute?
+ & db.scope.attribute?
+ & db.index.type.attribute?
+ & db.indexterm.singular.class.attribute?
+ db.indexterm.singular =
+
+ ## A wrapper for an indexed term
+ element indexterm {
+ db.indexterm.singular.attlist, db.indexterm.contentmodel
+ }
+}
+div {
+ db.indexterm.startofrange.role.attribute = attribute role { text }
+ db.indexterm.startofrange.class.attribute =
+
+ ## Identifies the class of index term
+ attribute class {
+
+ ## The start of a range
+ "startofrange"
+ }
+ db.indexterm.startofrange.attlist =
+ db.indexterm.startofrange.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.significance.attribute?
+ & db.zone.attribute?
+ & db.indexterm.pagenum.attribute?
+ & db.scope.attribute?
+ & db.index.type.attribute?
+ & db.indexterm.startofrange.class.attribute
+ db.indexterm.startofrange =
+
+ ## A wrapper for an indexed term that covers a range
+ element indexterm {
+ db.indexterm.startofrange.attlist, db.indexterm.contentmodel
+ }
+}
+div {
+ db.indexterm.endofrange.role.attribute = attribute role { text }
+ db.indexterm.endofrange.class.attribute =
+
+ ## Identifies the class of index term
+ attribute class {
+
+ ## The end of a range
+ "endofrange"
+ }
+ db.indexterm.endofrange.startref.attribute =
+
+ ## Points to the start of the range
+ attribute startref { xsd:IDREF }
+ db.indexterm.endofrange.attlist =
+ db.indexterm.endofrange.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.indexterm.endofrange.class.attribute
+ & db.indexterm.endofrange.startref.attribute
+ db.indexterm.endofrange =
+
+ ## Identifies the end of a range associated with an indexed term
+ element indexterm { db.indexterm.endofrange.attlist, empty }
+}
+div {
+ db.indexterm =
+ db.indexterm.singular
+ | db.indexterm.startofrange
+ | db.indexterm.endofrange
+}
+div {
+ db.primary.role.attribute = attribute role { text }
+ db.primary.attlist =
+ db.primary.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.sortas.attribute?
+ db.primary =
+
+ ## The primary word or phrase under which an index term should be sorted
+ element primary { db.primary.attlist, db.all.inlines* }
+}
+div {
+ db.secondary.role.attribute = attribute role { text }
+ db.secondary.attlist =
+ db.secondary.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.sortas.attribute?
+ db.secondary =
+
+ ## A secondary word or phrase in an index term
+ element secondary { db.secondary.attlist, db.all.inlines* }
+}
+div {
+ db.tertiary.role.attribute = attribute role { text }
+ db.tertiary.attlist =
+ db.tertiary.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.sortas.attribute?
+ db.tertiary =
+
+ ## A tertiary word or phrase in an index term
+ element tertiary { db.tertiary.attlist, db.all.inlines* }
+}
+div {
+ db.see.role.attribute = attribute role { text }
+ db.see.attlist =
+ db.see.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.see =
+
+ ## Part of an index term directing the reader instead to another entry in the index
+ element see { db.see.attlist, db.all.inlines* }
+}
+div {
+ db.seealso.role.attribute = attribute role { text }
+ db.seealso.attlist =
+ db.seealso.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.seealso =
+
+ ## Part of an index term directing the reader also to another entry in the index
+ element seealso { db.seealso.attlist, db.all.inlines* }
+}
+div {
+ db.index.status.attribute = db.status.attribute
+ db.index.role.attribute = attribute role { text }
+ db.index.attlist =
+ db.index.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.index.status.attribute?
+ & db.index.type.attribute?
+ db.index.info = db._info
+ #
+ # Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
+ # Authors can use an empty index to indicate where a generated index should
+ # appear.
+ db.index =
+
+ ## An index to a book or part of a book
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:index"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element index {
+ db.index.attlist,
+ db.index.info,
+ db.all.blocks*,
+ (db.indexdiv* | db.indexentry* | db.segmentedlist)
+ }
+}
+div {
+ db.setindex.status.attribute = db.status.attribute
+ db.setindex.role.attribute = attribute role { text }
+ db.setindex.attlist =
+ db.setindex.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.setindex.status.attribute?
+ & db.index.type.attribute?
+ db.setindex.info = db._info
+ db.setindex =
+
+ ## An index to a set of books
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:setindex"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element setindex {
+ db.setindex.attlist,
+ db.setindex.info,
+ db.all.blocks*,
+ (db.indexdiv* | db.indexentry*)
+ }
+}
+div {
+ db.indexdiv.status.attribute = db.status.attribute
+ db.indexdiv.role.attribute = attribute role { text }
+ db.indexdiv.attlist =
+ db.indexdiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & db.indexdiv.status.attribute?
+ db.indexdiv.info = db._info.title.req
+ db.indexdiv =
+
+ ## A division in an index
+ element indexdiv {
+ db.indexdiv.attlist,
+ db.indexdiv.info,
+ db.all.blocks*,
+ (db.indexentry+ | db.segmentedlist)
+ }
+}
+div {
+ db.indexentry.role.attribute = attribute role { text }
+ db.indexentry.attlist =
+ db.indexentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.indexentry =
+
+ ## An entry in an index
+ element indexentry {
+ db.indexentry.attlist,
+ db.primaryie,
+ (db.seeie | db.seealsoie)*,
+ (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)*
+ }
+}
+div {
+ db.primaryie.role.attribute = attribute role { text }
+ db.primaryie.attlist =
+ db.primaryie.role.attribute?
+ & db.common.attributes
+ & db.linkends.attribute?
+ db.primaryie =
+
+ ## A primary term in an index entry, not in the text
+ element primaryie { db.primaryie.attlist, db.all.inlines* }
+}
+div {
+ db.secondaryie.role.attribute = attribute role { text }
+ db.secondaryie.attlist =
+ db.secondaryie.role.attribute?
+ & db.common.attributes
+ & db.linkends.attribute?
+ db.secondaryie =
+
+ ## A secondary term in an index entry, rather than in the text
+ element secondaryie { db.secondaryie.attlist, db.all.inlines* }
+}
+div {
+ db.tertiaryie.role.attribute = attribute role { text }
+ db.tertiaryie.attlist =
+ db.tertiaryie.role.attribute?
+ & db.common.attributes
+ & db.linkends.attribute?
+ db.tertiaryie =
+
+ ## A tertiary term in an index entry, rather than in the text
+ element tertiaryie { db.tertiaryie.attlist, db.all.inlines* }
+}
+div {
+ db.seeie.role.attribute = attribute role { text }
+ db.seeie.attlist =
+ db.seeie.role.attribute?
+ & db.common.attributes
+ & db.linkend.attribute?
+ db.seeie =
+
+ ## A See
+ ## entry in an index, rather than in the text
+ element seeie { db.seeie.attlist, db.all.inlines* }
+}
+div {
+ db.seealsoie.role.attribute = attribute role { text }
+ db.seealsoie.attlist =
+ db.seealsoie.role.attribute?
+ & db.common.attributes
+ & db.linkends.attribute?
+ db.seealsoie =
+
+ ## A See also
+ ## entry in an index, rather than in the text
+ element seealsoie { db.seealsoie.attlist, db.all.inlines* }
+}
+db.toc.pagenum.attribute =
+
+ ## Indicates the page on which this element occurs in some version of the printed
document
+ attribute pagenum { text }
+div {
+ db.toc.role.attribute = attribute role { text }
+ db.toc.attlist =
+ db.toc.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.toc.info = db._info.title.only
+ db.toc =
+
+ ## A table of contents
+ [
+ s:pattern [
+ name = "Root must have version"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "/db:toc"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "@version"
+ "The root element must have a version attribute."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element toc {
+ db.toc.attlist,
+ db.toc.info,
+ db.all.blocks*,
+ (db.tocdiv | db.tocentry)*
+ }
+}
+div {
+ db.tocdiv.role.attribute = attribute role { text }
+ db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute
+ db.tocdiv.attlist =
+ db.tocdiv.role.attribute?
+ & db.common.attributes
+ & db.tocdiv.pagenum.attribute?
+ & db.linkend.attribute?
+ db.tocdiv.info = db._info
+ db.tocdiv =
+
+ ## A division in a table of contents
+ element tocdiv {
+ db.tocdiv.attlist,
+ db.tocdiv.info,
+ db.all.blocks*,
+ (db.tocdiv | db.tocentry)+
+ }
+}
+div {
+ db.tocentry.role.attribute = attribute role { text }
+ db.tocentry.pagenum.attribute = db.toc.pagenum.attribute
+ db.tocentry.attlist =
+ db.tocentry.role.attribute?
+ & db.common.attributes
+ & db.tocentry.pagenum.attribute?
+ & db.linkend.attribute?
+ db.tocentry =
+
+ ## A component title in a table of contents
+ element tocentry { db.tocentry.attlist, db.all.inlines* }
+}
+db.task.info = db._info.title.req
+div {
+ db.task.role.attribute = attribute role { text }
+ db.task.attlist =
+ db.task.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.task =
+
+ ## A task to be completed
+ element task {
+ db.task.attlist,
+ db.task.info,
+ db.tasksummary?,
+ db.taskprerequisites?,
+ db.procedure,
+ db.example*,
+ db.taskrelated?
+ }
+}
+div {
+ db.tasksummary.role.attribute = attribute role { text }
+ db.tasksummary.attlist =
+ db.tasksummary.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.tasksummary.info = db._info.title.only
+ db.tasksummary =
+
+ ## A summary of a task
+ element tasksummary {
+ db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+
+ }
+}
+div {
+ db.taskprerequisites.role.attribute = attribute role { text }
+ db.taskprerequisites.attlist =
+ db.taskprerequisites.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.taskprerequisites.info = db._info.title.only
+ db.taskprerequisites =
+
+ ## The prerequisites for a task
+ element taskprerequisites {
+ db.taskprerequisites.attlist,
+ db.taskprerequisites.info,
+ db.all.blocks+
+ }
+}
+div {
+ db.taskrelated.role.attribute = attribute role { text }
+ db.taskrelated.attlist =
+ db.taskrelated.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.taskrelated.info = db._info.title.only
+ db.taskrelated =
+
+ ## Information related to a task
+ element taskrelated {
+ db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+
+ }
+}
+db.area.units.enumeration =
+
+ ## Coordinates expressed as a pair of CALS graphic coordinates.
+ "calspair"
+ |
+ ## Coordinates expressed as a line and column.
+ "linecolumn"
+ |
+ ## Coordinates expressed as a pair of lines and columns.
+ "linecolumnpair"
+ |
+ ## Coordinates expressed as a line range.
+ "linerange"
+db.area.units-enum.attribute =
+
+ ## Identifies the units used in the coords attribute The default units vary according
to the type of callout specified: calspair
+ ## for graphics and linecolumn
+ ## for line-oriented elements.
+ attribute units { db.area.units.enumeration }?
+db.area.units-other.attributes =
+
+ ## Indicates that non-standard units are used for this area
+ ## . In this case otherunits
+ ## must be specified.
+ attribute units {
+
+ ## Coordinates expressed in some non-standard units.
+ "other"
+ }?,
+
+ ## Identifies the units used in the coords
+ ## attribute when the units
+ ## attribute is other
+ ## . This attribute is forbidden otherwise.
+ attribute otherunits { xsd:NMTOKEN }
+db.area.units.attribute =
+ db.area.units-enum.attribute | db.area.units-other.attributes
+div {
+ db.calloutlist.role.attribute = attribute role { text }
+ db.calloutlist.attlist =
+ db.calloutlist.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.calloutlist.info = db._info.title.only
+ db.calloutlist =
+
+ ## A list of callout
+ ## s
+ element calloutlist {
+ db.calloutlist.attlist,
+ db.calloutlist.info,
+ db.all.blocks*,
+ db.callout+
+ }
+}
+div {
+ db.callout.role.attribute = attribute role { text }
+ db.callout.arearefs.attribute =
+
+ ## Identifies the areas described by this callout.
+ attribute arearefs { xsd:IDREFS }
+ db.callout.attlist =
+ db.callout.role.attribute?
+ & db.common.attributes
+ & db.callout.arearefs.attribute
+ db.callout =
+
+ ## A called out
+ ## description of a marked Area
+ element callout { db.callout.attlist, db.all.blocks+ }
+}
+div {
+ db.programlistingco.role.attribute = attribute role { text }
+ db.programlistingco.attlist =
+ db.programlistingco.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.programlistingco.info = db._info.title.forbidden
+ db.programlistingco =
+
+ ## A program listing with associated areas used in callouts
+ element programlistingco {
+ db.programlistingco.attlist,
+ db.programlistingco.info,
+ db.areaspec,
+ db.programlisting,
+ db.calloutlist*
+ }
+}
+div {
+ db.areaspec.role.attribute = attribute role { text }
+ db.areaspec.attlist =
+ db.areaspec.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.area.units.attribute
+ db.areaspec =
+
+ ## A collection of regions in a graphic or code example
+ element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ }
+}
+div {
+ db.area.role.attribute = attribute role { text }
+ db.area.linkends.attribute =
+
+ ## Point to the callout
+ ## s which refer to this area. (This provides bidirectional linking which may be
useful in online presentation.)
+ attribute linkends { xsd:IDREFS }
+ db.area.label.attribute =
+
+ ## Specifies an identifying number or string that may be used in presentation. The
area label might be drawn on top of the figure, for example, at the position indicated by
the coords attribute.
+ attribute label { text }
+ db.area.coords.attribute =
+
+ ## Provides the coordinates of the area. The coordinates must be interpreted using
the units
+ ## specified.
+ attribute coords { text }
+ db.area.attlist =
+ db.area.role.attribute?
+ & db.common.idreq.attributes
+ & db.area.units.attribute
+ & (db.area.linkends.attribute | db.href.attributes)?
+ & db.area.label.attribute?
+ & db.area.coords.attribute
+ db.area =
+
+ ## A region defined for a Callout in a graphic or code example
+ element area { db.area.attlist, db.alt? }
+}
+div {
+ # The only difference is that xml:id is optional
+ db.area.inareaset.attlist =
+ db.area.role.attribute?
+ & db.common.attributes
+ & db.area.units.attribute
+ & (db.area.linkends.attribute | db.href.attributes)?
+ & db.area.label.attribute?
+ & db.area.coords.attribute
+ db.area.inareaset =
+
+ ## A region defined for a Callout in a graphic or code example
+ element area { db.area.inareaset.attlist, db.alt? }
+}
+div {
+ db.areaset.role.attribute = attribute role { text }
+ db.areaset.linkends.attribute = db.linkends.attribute
+ db.areaset.label.attribute = db.label.attribute
+ db.areaset.attlist =
+ db.areaset.role.attribute?
+ & db.common.idreq.attributes
+ & db.area.units.attribute
+ & (db.areaset.linkends.attribute | db.href.attributes)?
+ & db.areaset.label.attribute?
+ db.areaset =
+
+ ## A set of related areas in a graphic or code example
+ element areaset { db.areaset.attlist, db.area.inareaset+ }
+}
+div {
+ db.screenco.role.attribute = attribute role { text }
+ db.screenco.attlist =
+ db.screenco.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.screenco.info = db._info.title.forbidden
+ db.screenco =
+
+ ## A screen with associated areas used in callouts
+ element screenco {
+ db.screenco.attlist,
+ db.screenco.info,
+ db.areaspec,
+ db.screen,
+ db.calloutlist*
+ }
+}
+div {
+ db.imageobjectco.role.attribute = attribute role { text }
+ db.imageobjectco.attlist =
+ db.imageobjectco.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.imageobjectco.info = db._info.title.forbidden
+ db.imageobjectco =
+
+ ## A wrapper for an image object with callouts
+ element imageobjectco {
+ db.imageobjectco.attlist,
+ db.imageobjectco.info,
+ db.areaspec,
+ db.imageobject+,
+ db.calloutlist*
+ }
+}
+div {
+ db.co.role.attribute = attribute role { text }
+ db.co.linkends.attribute = db.linkends.attribute
+ db.co.label.attribute = db.label.attribute
+ db.co.attlist =
+ db.co.role.attribute?
+ & db.common.idreq.attributes
+ & db.co.linkends.attribute?
+ & db.co.label.attribute?
+ db.co =
+
+ ## The location of a callout embedded in text
+ element co { db.co.attlist, empty }
+}
+div {
+ db.coref.role.attribute = attribute role { text }
+ db.coref.label.attribute = db.label.attribute
+ db.coref.attlist =
+ db.coref.role.attribute?
+ & db.common.attributes
+ & db.linkend.attribute
+ & db.coref.label.attribute?
+ db.coref =
+
+ ## A cross reference to a co
+ element coref { db.coref.attlist, empty }
+}
+div {
+ db.productionset.role.attribute = attribute role { text }
+ db.productionset.attlist =
+ db.productionset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.productionset.info = db._info.title.only
+ db.productionset =
+
+ ## A set of EBNF productions
+ element productionset {
+ db.productionset.attlist,
+ db.productionset.info,
+ (db.production | db.productionrecap)+
+ }
+}
+div {
+ db.production.role.attribute = attribute role { text }
+ db.production.attlist =
+ db.production.role.attribute?
+ & db.common.idreq.attributes
+ & db.common.linking.attributes
+ db.production =
+
+ ## A production in a set of EBNF productions
+ element production {
+ db.production.attlist, db.lhs, db.rhs, db.constraint*
+ }
+}
+div {
+ db.lhs.role.attribute = attribute role { text }
+ db.lhs.attlist =
+ db.lhs.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.lhs =
+
+ ## The left-hand side of an EBNF production
+ element lhs { db.lhs.attlist, text }
+}
+div {
+ db.rhs.role.attribute = attribute role { text }
+ db.rhs.attlist =
+ db.rhs.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.rhs =
+
+ ## The right-hand side of an EBNF production
+ element rhs {
+ db.rhs.attlist,
+ (text | db.nonterminal | db.lineannotation | db.sbr)*
+ }
+}
+div {
+ db.nonterminal.role.attribute = attribute role { text }
+ db.nonterminal.def.attribute =
+
+ ## Specifies a URI that points to a production
+ ## where the nonterminal
+ ## is defined
+ attribute def { xsd:anyURI }
+ db.nonterminal.attlist =
+ db.nonterminal.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.nonterminal.def.attribute
+ db.nonterminal =
+
+ ## A non-terminal in an EBNF production
+ element nonterminal { db.nonterminal.attlist, text }
+}
+div {
+ db.constraint.role.attribute = attribute role { text }
+ db.constraint.attlist =
+ db.constraint.role.attribute?
+ & db.common.attributes
+ & db.common.req.linking.attributes
+ db.constraint =
+
+ ## A constraint in an EBNF production
+ element constraint { db.constraint.attlist, empty }
+}
+div {
+ db.productionrecap.role.attribute = attribute role { text }
+ db.productionrecap.attlist =
+ db.productionrecap.role.attribute?
+ & db.common.attributes
+ & db.common.req.linking.attributes
+ db.productionrecap =
+
+ ## A cross-reference to an EBNF production
+ element productionrecap { db.productionrecap.attlist, empty }
+}
+div {
+ db.constraintdef.role.attribute = attribute role { text }
+ db.constraintdef.attlist =
+ db.constraintdef.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.constraintdef.info = db._info.title.only
+ db.constraintdef =
+
+ ## The definition of a constraint in an EBNF production
+ element constraintdef {
+ db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+
+ }
+}
+db.char.attribute =
+
+ ## Specifies the alignment character when align
+ ## is set to char
+ ## .
+ attribute char { text }
+db.charoff.attribute =
+
+ ## Specifies the percentage of the column's total width that should appear to the
left of the first occurance of the character identified in char
+ ## when align
+ ## is set to char
+ ## .
+ attribute charoff {
+ xsd:decimal { minExclusive = "0" maxExclusive = "100" }
+ }
+db.frame.attribute =
+
+ ## Specifies how the table is to be framed. Note that there is no way to obtain a
border on only the starting edge (left, in left-to-right writing systems) of the table.
+ attribute frame {
+
+ ## Frame all four sides of the table. In some environments with limited control over
table border formatting, such as HTML, this may imply additional borders.
+ "all"
+ |
+ ## Frame only the bottom of the table.
+ "bottom"
+ |
+ ## Place no border on the table. In some environments with limited control over
table border formatting, such as HTML, this may disable other borders as well.
+ "none"
+ |
+ ## Frame the left and right sides of the table.
+ "sides"
+ |
+ ## Frame the top of the table.
+ "top"
+ |
+ ## Frame the top and bottom of the table.
+ "topbot"
+ }
+db.colsep.attribute =
+
+ ## Specifies the presence or absence of the column separator
+ attribute colsep {
+
+ ## No column separator rule.
+ "0"
+ |
+ ## Provide a column separator rule on the right
+ "1"
+ }
+db.rowsep.attribute =
+
+ ## Specifies the presence or absence of the row separator
+ attribute rowsep {
+
+ ## No row separator rule.
+ "0"
+ |
+ ## Provide a row separator rule below
+ "1"
+ }
+db.orient.attribute =
+
+ ## Specifies the orientation of the table
+ attribute orient {
+
+ ## 90 degrees counter-clockwise from the rest of the text flow.
+ "land"
+ |
+ ## The same orientation as the rest of the text flow.
+ "port"
+ }
+db.tabstyle.attribute =
+
+ ## Specifies the table style
+ attribute tabstyle { text }
+db.rowheader.attribute =
+
+ ## Indicates whether or not the entries in the first column should be considered row
headers
+ attribute rowheader {
+
+ ## Indicates that entries in the first column of the table are functionally row
headers (analogous to the way that a thead provides column headers).
+ "firstcol"
+ |
+ ## Indicates that entries in the first column have no special significance with
respect to column headers.
+ "norowheader"
+ }
+db.align.attribute =
+
+ ## Specifies the horizontal alignment of text in an entry.
+ attribute align {
+
+ ## Centered.
+ "center"
+ |
+ ## Aligned on a particular character.
+ "char"
+ |
+ ## Left and right justified.
+ "justify"
+ |
+ ## Left justified.
+ "left"
+ |
+ ## Right justified.
+ "right"
+ }
+db.valign.attribute =
+
+ ## Specifies the vertical alignment of text in an entry.
+ attribute valign {
+
+ ## Aligned on the bottom of the entry.
+ "bottom"
+ |
+ ## Aligned in the middle.
+ "middle"
+ |
+ ## Aligned at the top of the entry.
+ "top"
+ }
+db.specify-col-by-colname.attributes =
+
+ ## Specifies a column specification by name.
+ attribute colname { text }
+db.specify-col-by-namest.attributes =
+
+ ## Specifies a starting column by name.
+ attribute namest { text }
+db.specify-span-by-spanspec.attributes =
+
+ ## Specifies a span by name.
+ attribute spanname { text }
+db.specify-span-directly.attributes =
+
+ ## Specifies a starting column by name.
+ attribute namest { text }
+ &
+ ## Specifies an ending column by name.
+ attribute nameend { text }
+db.column-spec.attributes =
+ db.specify-col-by-colname.attributes
+ | db.specify-col-by-namest.attributes
+ | db.specify-span-by-spanspec.attributes
+ | db.specify-span-directly.attributes
+db.colname.attribute =
+
+ ## Provides a name for a column specification.
+ attribute colname { text }
+db.spanname.attribute =
+
+ ## Provides a name for a span specification.
+ attribute spanname { text }
+div {
+ db.tgroup.role.attribute = attribute role { text }
+ db.tgroup.tgroupstyle.attribute =
+
+ ## Additional style information for downstream processing; typically the name of a
style.
+ attribute tgroupstyle { text }
+ db.tgroup.cols.attribute =
+
+ ## The number of columns in the table. Must be an integer greater than zero.
+ attribute cols { xsd:positiveInteger }
+ db.tgroup.attlist =
+ db.tgroup.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.char.attribute?
+ & db.charoff.attribute?
+ & db.tgroup.tgroupstyle.attribute?
+ & db.tgroup.cols.attribute
+ & db.colsep.attribute?
+ & db.rowsep.attribute?
+ & db.align.attribute?
+ db.tgroup =
+
+ ## A wrapper for the main content of a table, or part of a table
+ element tgroup {
+ db.tgroup.attlist,
+ db.colspec*,
+ db.spanspec*,
+ db.cals.thead?,
+ db.cals.tfoot?,
+ db.cals.tbody
+ }
+}
+div {
+ db.colspec.role.attribute = attribute role { text }
+ db.colspec.colnum.attribute =
+
+ ## The number of the column to which this specification applies. Must be greater than
any preceding column number. Defaults to one more than the number of the preceding column,
if there is one, or one.
+ attribute colnum { xsd:positiveInteger }
+ db.colspec.colwidth.attribute =
+
+ ## Specifies the width of the column.
+ attribute colwidth { text }
+ db.colspec.attlist =
+ db.colspec.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.colspec.colnum.attribute?
+ & db.char.attribute?
+ & db.colsep.attribute?
+ & db.colspec.colwidth.attribute?
+ & db.charoff.attribute?
+ & db.colname.attribute?
+ & db.rowsep.attribute?
+ & db.align.attribute?
+ db.colspec =
+
+ ## Specifications for a column in a table
+ element colspec { db.colspec.attlist, empty }
+}
+div {
+ db.spanspec.role.attribute = attribute role { text }
+ db.spanspec.namest.attribute =
+
+ ## Specifies a starting column by name.
+ attribute namest { text }
+ db.spanspec.nameend.attribute =
+
+ ## Specifies an ending column by name.
+ attribute nameend { text }
+ db.spanspec.attlist =
+ db.spanspec.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.spanname.attribute
+ & db.spanspec.namest.attribute
+ & db.spanspec.nameend.attribute
+ & db.char.attribute?
+ & db.colsep.attribute?
+ & db.charoff.attribute?
+ & db.rowsep.attribute?
+ & db.align.attribute?
+ db.spanspec =
+
+ ## Formatting information for a spanned column in a table
+ element spanspec { db.spanspec.attlist, empty }
+}
+div {
+ db.cals.thead.role.attribute = attribute role { text }
+ db.cals.thead.attlist =
+ db.cals.thead.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ db.cals.thead =
+
+ ## A table header consisting of one or more rows
+ element thead { db.cals.thead.attlist, db.colspec*, db.row+ }
+}
+div {
+ db.cals.tfoot.role.attribute = attribute role { text }
+ db.cals.tfoot.attlist =
+ db.cals.tfoot.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ db.cals.tfoot =
+
+ ## A table footer consisting of one or more rows
+ element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ }
+}
+div {
+ db.cals.tbody.role.attribute = attribute role { text }
+ db.cals.tbody.attlist =
+ db.cals.tbody.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ db.cals.tbody =
+
+ ## A wrapper for the rows of a table or informal table
+ element tbody { db.cals.tbody.attlist, db.row+ }
+}
+div {
+ db.row.role.attribute = attribute role { text }
+ db.row.attlist =
+ db.row.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.rowsep.attribute?
+ & db.valign.attribute?
+ db.row =
+
+ ## A row in a table
+ element row { db.row.attlist, (db.entry | db.entrytbl)+ }
+}
+div {
+ db.entry.role.attribute = attribute role { text }
+ db.entry.morerows.attribute =
+
+ ## Specifies the number of additional rows which this entry occupies. Defaults to
zero.
+ attribute morerows { xsd:integer }
+ db.entry.rotate.attribute =
+
+ ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90
degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.
+ attribute rotate {
+
+ ## Do not rotate the cell.
+ "0"
+ |
+ ## Rotate the cell 90 degrees counter-clockwise.
+ "1"
+ }
+ db.entry.attlist =
+ db.entry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ & db.char.attribute?
+ & db.colsep.attribute?
+ & db.charoff.attribute?
+ & db.entry.morerows.attribute?
+ & db.column-spec.attributes?
+ & db.rowsep.attribute?
+ & db.entry.rotate.attribute?
+ & db.align.attribute?
+ db.entry =
+
+ ## A cell in a table
+ element entry {
+ db.entry.attlist, (db.all.inlines* | db.all.blocks*)
+ }
+}
+div {
+ db.entrytbl.role.attribute = attribute role { text }
+ db.entrytbl.tgroupstyle.attribute =
+
+ ## Additional style information for downstream processing; typically the name of a
style.
+ attribute tgroupstyle { text }
+ db.entrytbl.cols.attribute =
+
+ ## The number of columns in the entry table. Must be an integer greater than zero.
+ attribute cols { xsd:positiveInteger }
+ db.entrytbl.attlist =
+ db.entrytbl.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.char.attribute?
+ & db.charoff.attribute?
+ & db.column-spec.attributes?
+ & db.entrytbl.tgroupstyle.attribute?
+ & db.entrytbl.cols.attribute?
+ & db.colsep.attribute?
+ & db.rowsep.attribute?
+ & db.align.attribute?
+ db.entrytbl =
+
+ ## A subtable appearing in place of an Entry in a table
+ element entrytbl {
+ db.entrytbl.attlist,
+ db.colspec*,
+ db.spanspec*,
+ db.cals.entrytbl.thead?,
+ db.cals.entrytbl.tbody
+ }
+}
+div {
+ db.cals.entrytbl.thead.role.attribute = attribute role { text }
+ db.cals.entrytbl.thead.attlist =
+ db.cals.entrytbl.thead.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ db.cals.entrytbl.thead =
+
+ ## A table header consisting of one or more rows
+ element thead {
+ db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+
+ }
+}
+div {
+ db.cals.entrytbl.tbody.role.attribute = attribute role { text }
+ db.cals.entrytbl.tbody.attlist =
+ db.cals.entrytbl.tbody.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.valign.attribute?
+ db.cals.entrytbl.tbody =
+
+ ## A wrapper for the rows of a table or informal table
+ element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ }
+}
+div {
+ db.entrytbl.row.role.attribute = attribute role { text }
+ db.entrytbl.row.attlist =
+ db.entrytbl.row.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.rowsep.attribute?
+ & db.valign.attribute?
+ db.entrytbl.row =
+
+ ## A row in a table
+ element row { db.entrytbl.row.attlist, db.entry+ }
+}
+div {
+ db.cals.table.role.attribute = attribute role { text }
+ db.cals.table.label.attribute = db.label.attribute
+ db.cals.table.attlist =
+ db.cals.table.role.attribute?
+ & db.cals.table.label.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.tabstyle.attribute?
+ & db.floatstyle.attribute?
+ & db.orient.attribute?
+ & db.colsep.attribute?
+ & db.rowsep.attribute?
+ & db.frame.attribute?
+ & db.pgwide.attribute?
+ &
+ ## Indicates if the short or long title should be used in a List of Tables
+ attribute shortentry {
+
+ ## Indicates that the full title should be used.
+ "0"
+ |
+ ## Indicates that the short short title (titleabbrev) should be used.
+ "1"
+ }?
+ &
+ ## Indicates if the table should appear in a List of Tables
+ attribute tocentry {
+
+ ## Indicates that the table should not occur in the List of Tables.
+ "0"
+ |
+ ## Indicates that the table should appear in the List of Tables.
+ "1"
+ }?
+ & db.rowheader.attribute?
+ db.cals.table.info = db._info.title.onlyreq
+ db.cals.table =
+
+ ## A formal table in a document
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:informaltable)"
+ "informaltable must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element table {
+ db.cals.table.attlist,
+ db.cals.table.info,
+ (db.alt? & db.indexing.inlines* & db.textobject*),
+ (db.mediaobject+ | db.tgroup+),
+ db.caption?
+ }
+}
+div {
+ db.cals.informaltable.role.attribute = attribute role { text }
+ db.cals.informaltable.attlist =
+ db.cals.informaltable.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.tabstyle.attribute?
+ & db.floatstyle.attribute?
+ & db.orient.attribute?
+ & db.colsep.attribute?
+ & db.rowsep.attribute?
+ & db.frame.attribute?
+ & db.pgwide.attribute?
+ & db.rowheader.attribute?
+ db.cals.informaltable.info = db._info.title.forbidden
+ db.cals.informaltable =
+
+ ## A table without a title
+ element informaltable {
+ db.cals.informaltable.attlist,
+ db.cals.informaltable.info,
+ (db.alt? & db.indexing.inlines* & db.textobject*),
+ (db.mediaobject+ | db.tgroup+),
+ db.caption?
+ }
+}
+db.html.coreattrs =
+
+ ## This attribute assigns a class name or set of class names to an element. Any number
of elements may be assigned the same class name or names. Multiple class names must be
separated by white space characters.
+ attribute class { text }?
+ &
+ ## This attribute specifies style information for the current element.
+ attribute style { text }?
+ &
+ ## This attribute offers advisory information about the element for which it is set.
+ attribute title { text }?
+db.html.i18n =
+
+ ## This attribute specifies the base language of an element's attribute values and
text content. The default value of this attribute is unknown.
+ attribute lang { text }?
+db.html.events =
+
+ ## Occurs when the pointing device button is clicked over an element.
+ attribute onclick { text }?
+ &
+ ## Occurs when the pointing device button is double clicked over an element.
+ attribute ondblclick { text }?
+ &
+ ## Occurs when the pointing device button is pressed over an element.
+ attribute onmousedown { text }?
+ &
+ ## Occurs when the pointing device button is released over an element.
+ attribute onmouseup { text }?
+ &
+ ## Occurs when the pointing device is moved onto an element.
+ attribute onmouseover { text }?
+ &
+ ## Occurs when the pointing device is moved while it is over an element.
+ attribute onmousemove { text }?
+ &
+ ## Occurs when the pointing device is moved away from an element.
+ attribute onmouseout { text }?
+ &
+ ## Occurs when a key is pressed and released over an element.
+ attribute onkeypress { text }?
+ &
+ ## Occurs when a key is pressed down over an element.
+ attribute onkeydown { text }?
+ &
+ ## Occurs when a key is released over an element.
+ attribute onkeyup { text }?
+db.html.attrs =
+ db.common.attributes
+ & db.html.coreattrs
+ & db.html.i18n
+ & db.html.events
+db.html.cellhalign =
+
+ ## Specifies the alignment of data and the justification of text in a cell.
+ attribute align {
+
+ ## Left-flush data/Left-justify text. This is the default value for table data.
+ "left"
+ |
+ ## Center data/Center-justify text. This is the default value for table headers.
+ "center"
+ |
+ ## Right-flush data/Right-justify text.
+ "right"
+ |
+ ## Double-justify text.
+ "justify"
+ |
+ ## Align text around a specific character. If a user agent doesn't support
character alignment, behavior in the presence of this value is unspecified.
+ "char"
+ }?
+ &
+ ## This attribute specifies a single character within a text fragment to act as an
axis for alignment. The default value for this attribute is the decimal point character
for the current language as set by the lang attribute (e.g., the period in English and the
comma in French). User agents are not required to support this attribute.
+ attribute char { text }?
+ &
+ ## When present, this attribute specifies the offset to the first occurrence of the
alignment character on each line. If a line doesn't include the alignment character,
it should be horizontally shifted to end at the alignment position. When charoff is used
to set the offset of an alignment character, the direction of offset is determined by the
current text direction (set by the dir attribute). In left-to-right texts (the default),
offset is from the left margin. In right-to-left texts, offset is from the right margin.
User agents are not required to support this attribute.
+ attribute charoff {
+ xsd:integer
+ | xsd:string { pattern = "[0-9]+%" }
+ }?
+db.html.cellvalign =
+
+ ## Specifies the vertical position of data within a cell.
+ attribute valign {
+
+ ## Cell data is flush with the top of the cell.
+ "top"
+ |
+ ## Cell data is centered vertically within the cell. This is the default value.
+ "middle"
+ |
+ ## Cell data is flush with the bottom of the cell.
+ "bottom"
+ |
+ ## All cells in the same row as a cell whose valign attribute has this value should
have their textual data positioned so that the first text line occurs on a baseline common
to all cells in the row. This constraint does not apply to subsequent text lines in these
cells.
+ "baseline"
+ }?
+db.html.table.attributes =
+
+ ## Provides a summary of the table's purpose and structure for user agents
rendering to non-visual media such as speech and Braille.
+ attribute summary { text }?
+ &
+ ## Specifies the desired width of the entire table and is intended for visual user
agents. When the value is a percentage value, the value is relative to the user
agent's available horizontal space. In the absence of any width specification, table
width is determined by the user agent.
+ attribute width {
+ xsd:integer
+ | xsd:string { pattern = "[0-9]+%" }
+ }?
+ &
+ ## Specifies the width (in pixels only) of the frame around a table.
+ attribute border { xsd:nonNegativeInteger }?
+ &
+ ## Specifies which sides of the frame surrounding a table will be visible.
+ attribute frame {
+
+ ## No sides. This is the default value.
+ "void"
+ |
+ ## The top side only.
+ "above"
+ |
+ ## The bottom side only.
+ "below"
+ |
+ ## The top and bottom sides only.
+ "hsides"
+ |
+ ## The left-hand side only.
+ "lhs"
+ |
+ ## The right-hand side only.
+ "rhs"
+ |
+ ## The right and left sides only.
+ "vsides"
+ |
+ ## All four sides.
+ "box"
+ |
+ ## All four sides.
+ "border"
+ }?
+ &
+ ## Specifies which rules will appear between cells within a table. The rendering of
rules is user agent dependent.
+ attribute rules {
+
+ ## No rules. This is the default value.
+ "none"
+ |
+ ## Rules will appear between row groups (see thead, tfoot, and tbody) and column
groups (see colgroup and col) only.
+ "groups"
+ |
+ ## Rules will appear between rows only.
+ "rows"
+ |
+ ## Rules will appear between columns only.
+ "cols"
+ |
+ ## Rules will appear between all rows and columns.
+ "all"
+ }?
+ &
+ ## Specifies how much space the user agent should leave between the left side of the
table and the left-hand side of the leftmost column, the top of the table and the top side
of the topmost row, and so on for the right and bottom of the table. The attribute also
specifies the amount of space to leave between cells.
+ attribute cellspacing {
+ xsd:integer
+ | xsd:string { pattern = "[0-9]+%" }
+ }?
+ &
+ ## Specifies the amount of space between the border of the cell and its contents. If
the value of this attribute is a pixel length, all four margins should be this distance
from the contents. If the value of the attribute is a percentage length, the top and
bottom margins should be equally separated from the content based on a percentage of the
available vertical space, and the left and right margins should be equally separated from
the content based on a percentage of the available horizontal space.
+ attribute cellpadding {
+ xsd:integer
+ | xsd:string { pattern = "[0-9]+%" }
+ }?
+db.html.tablecell.attributes =
+
+ ## Provides an abbreviated form of the cell's content and may be rendered by user
agents when appropriate in place of the cell's content. Abbreviated names should be
short since user agents may render them repeatedly. For instance, speech synthesizers may
render the abbreviated headers relating to a particular cell before rendering that
cell's content.
+ attribute abbr { text }?
+ &
+ ## This attribute may be used to place a cell into conceptual categories that can be
considered to form axes in an n-dimensional space. User agents may give users access to
these categories (e.g., the user may query the user agent for all cells that belong to
certain categories, the user agent may present a table in the form of a table of contents,
etc.). Please consult an HTML reference for more details.
+ attribute axis { text }?
+ &
+ ## Specifies the list of header cells that provide header information for the current
data cell. The value of this attribute is a space-separated list of cell names; those
cells must be named by setting their id attribute. Authors generally use the headers
attribute to help non-visual user agents render header information about data cells (e.g.,
header information is spoken prior to the cell data), but the attribute may also be used
in conjunction with style sheets.
+ attribute headers { text }?
+ &
+ ## Specifies the set of data cells for which the current header cell provides header
information. This attribute may be used in place of the headers attribute, particularly
for simple tables.
+ attribute scope {
+
+ ## The current cell provides header information for the rest of the row that
contains it
+ "row"
+ |
+ ## The current cell provides header information for the rest of the column that
contains it.
+ "col"
+ |
+ ## The header cell provides header information for the rest of the row group that
contains it.
+ "rowgroup"
+ |
+ ## The header cell provides header information for the rest of the column group
that contains it.
+ "colgroup"
+ }?
+ &
+ ## Specifies the number of rows spanned by the current cell. The default value of
this attribute is one (1
+ ## ). The value zero (0
+ ## ) means that the cell spans all rows from the current row to the last row of the
table section (thead
+ ## , tbody
+ ## , or tfoot
+ ## ) in which the cell is defined.
+ attribute rowspan { xsd:nonNegativeInteger }?
+ &
+ ## Specifies the number of columns spanned by the current cell. The default value of
this attribute is one (1
+ ## ). The value zero (0
+ ## ) means that the cell spans all columns from the current column to the last column
of the column group (colgroup
+ ## ) in which the cell is defined.
+ attribute colspan { xsd:nonNegativeInteger }?
+db.html.table.info = db._info.title.forbidden
+db.html.table.model =
+ db.html.table.info?,
+ db.html.caption,
+ (db.html.col* | db.html.colgroup*),
+ db.html.thead?,
+ db.html.tfoot?,
+ (db.html.tbody+ | db.html.tr+)
+db.html.informaltable.info = db._info.title.forbidden
+db.html.informaltable.model =
+ db.html.informaltable.info?,
+ (db.html.col* | db.html.colgroup*),
+ db.html.thead?,
+ db.html.tfoot?,
+ (db.html.tbody+ | db.html.tr+)
+div {
+ db.html.table.role.attribute = attribute role { text }
+ db.html.table.label.attribute = db.label.attribute
+ db.html.table.attlist =
+ db.html.attrs
+ & db.html.table.attributes
+ & db.html.table.role.attribute?
+ & db.html.table.label.attribute?
+ & db.orient.attribute?
+ & db.pgwide.attribute?
+ & db.tabstyle.attribute?
+ & db.floatstyle.attribute?
+ db.html.table =
+
+ ## A formal (captioned) HTML table in a document
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:informaltable)"
+ "informaltable must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:table"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of table"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element table { db.html.table.attlist, db.html.table.model }
+}
+div {
+ db.html.informaltable.attlist =
+ db.html.attrs & db.html.table.attributes
+ db.html.informaltable =
+
+ ## An HTML table without a title
+ element informaltable {
+ db.html.informaltable.attlist, db.html.informaltable.model
+ }
+}
+div {
+ db.html.caption.attlist = db.html.attrs
+ db.html.caption =
+
+ ## An HTML table caption
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:sidebar)"
+ "sidebar must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:task)"
+ "task must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caption"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of caption"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element caption { db.html.caption.attlist, db.all.inlines* }
+}
+div {
+ db.html.col.attlist =
+ db.html.attrs
+ &
+ ## This attribute, whose value must be an integer > 0, specifies the number of
columns spanned
+ ## by the col
+ ## element; the col
+ ## element shares its attributes with all the columns it spans. The default value
for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1,
the current col
+ ## element shares its attributes with the next N-1 columns.
+ attribute span { xsd:nonNegativeInteger }?
+ &
+ ## Specifies a default width for each column spanned by the current col
+ ## element. It has the same meaning as the width
+ ## attribute for the colgroup
+ ## element and overrides it.
+ attribute width { text }?
+ & db.html.cellhalign
+ & db.html.cellvalign
+ db.html.col =
+
+ ## Specifications for a column in an HTML table
+ element col { db.html.col.attlist, empty }
+}
+div {
+ db.html.colgroup.attlist =
+ db.html.attrs
+ &
+ ## This attribute, which must be an integer > 0, specifies the number of columns
in a column group. In the absence of a span attribute, each colgroup
+ ## defines a column group containing one column. If the span attribute is set to N
> 0, the current colgroup
+ ## element defines a column group containing N columns. User agents must ignore
this attribute if the colgroup
+ ## element contains one or more col
+ ## elements.
+ attribute span { xsd:nonNegativeInteger }?
+ &
+ ## This attribute specifies a default width for each column in the current column
group. In addition to the standard pixel, percentage, and relative values, this attribute
allows the special form 0*
+ ## (zero asterisk) which means that the width of the each column in the group
should be the minimum width necessary to hold the column's contents. This implies that
a column's entire contents must be known before its width may be correctly computed.
Authors should be aware that specifying 0*
+ ## will prevent visual user agents from rendering a table incrementally. This
attribute is overridden for any column in the column group whose width is specified via a
col
+ ## element.
+ attribute width { text }?
+ & db.html.cellhalign
+ & db.html.cellvalign
+ db.html.colgroup =
+
+ ## A group of columns in an HTML table
+ element colgroup { db.html.colgroup.attlist, db.html.col* }
+}
+div {
+ db.html.thead.attlist =
+ db.html.attrs & db.html.cellhalign & db.html.cellvalign
+ db.html.thead =
+
+ ## A table header consisting of one or more rows in an HTML table
+ element thead { db.html.thead.attlist, db.html.tr+ }
+}
+div {
+ db.html.tfoot.attlist =
+ db.html.attrs & db.html.cellhalign & db.html.cellvalign
+ db.html.tfoot =
+
+ ## A table footer consisting of one or more rows in an HTML table
+ element tfoot { db.html.tfoot.attlist, db.html.tr+ }
+}
+div {
+ db.html.tbody.attlist =
+ db.html.attrs & db.html.cellhalign & db.html.cellvalign
+ db.html.tbody =
+
+ ## A wrapper for the rows of an HTML table or informal HTML table
+ element tbody { db.html.tbody.attlist, db.html.tr+ }
+}
+div {
+ db.html.tr.attlist =
+ db.html.attrs & db.html.cellhalign & db.html.cellvalign
+ db.html.tr =
+
+ ## A row in an HTML table
+ element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ }
+}
+div {
+ db.html.th.attlist =
+ db.html.attrs
+ & db.html.tablecell.attributes
+ & db.html.cellhalign
+ & db.html.cellvalign
+ db.html.th =
+
+ ## A table header entry in an HTML table
+ element th {
+ db.html.th.attlist, (db.all.inlines* | db.all.blocks*)
+ }
+}
+div {
+ db.html.td.attlist =
+ db.html.attrs
+ & db.html.tablecell.attributes
+ & db.html.cellhalign
+ & db.html.cellvalign
+ db.html.td =
+
+ ## A table entry in an HTML table
+ element td {
+ db.html.td.attlist, (db.all.inlines* | db.all.blocks*)
+ }
+}
+div {
+ db.msgset.role.attribute = attribute role { text }
+ db.msgset.attlist =
+ db.msgset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgset.info = db._info.title.only
+ db.msgset =
+
+ ## A detailed set of messages, usually error messages
+ element msgset {
+ db.msgset.attlist,
+ db.msgset.info,
+ (db.msgentry+ | db.simplemsgentry+)
+ }
+}
+div {
+ db.msgentry.role.attribute = attribute role { text }
+ db.msgentry.attlist =
+ db.msgentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgentry =
+
+ ## A wrapper for an entry in a message set
+ element msgentry {
+ db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan*
+ }
+}
+div {
+ db.simplemsgentry.role.attribute = attribute role { text }
+ db.simplemsgentry.msgaud.attribute =
+
+ ## The audience to which the message relevant
+ attribute msgaud { text }
+ db.simplemsgentry.msgorig.attribute =
+
+ ## The origin of the message
+ attribute msgorig { text }
+ db.simplemsgentry.msglevel.attribute =
+
+ ## The level of importance or severity of a message
+ attribute msglevel { text }
+ db.simplemsgentry.attlist =
+ db.simplemsgentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.simplemsgentry.msgaud.attribute?
+ & db.simplemsgentry.msgorig.attribute?
+ & db.simplemsgentry.msglevel.attribute?
+ db.simplemsgentry =
+
+ ## A wrapper for a simpler entry in a message set
+ element simplemsgentry {
+ db.simplemsgentry.attlist, db.msgtext, db.msgexplan+
+ }
+}
+div {
+ db.msg.role.attribute = attribute role { text }
+ db.msg.attlist =
+ db.msg.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msg.info = db._info.title.only
+ db.msg =
+
+ ## A message in a message set
+ element msg {
+ db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)*
+ }
+}
+div {
+ db.msgmain.role.attribute = attribute role { text }
+ db.msgmain.attlist =
+ db.msgmain.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgmain.info = db._info.title.only
+ db.msgmain =
+
+ ## The primary component of a message in a message set
+ element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext }
+}
+div {
+ db.msgsub.role.attribute = attribute role { text }
+ db.msgsub.attlist =
+ db.msgsub.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgsub.info = db._info.title.only
+ db.msgsub =
+
+ ## A subcomponent of a message in a message set
+ element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext }
+}
+div {
+ db.msgrel.role.attribute = attribute role { text }
+ db.msgrel.attlist =
+ db.msgrel.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgrel.info = db._info.title.only
+ db.msgrel =
+
+ ## A related component of a message in a message set
+ element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext }
+}
+div {
+ db.msgtext.role.attribute = attribute role { text }
+ db.msgtext.attlist =
+ db.msgtext.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgtext =
+
+ ## The actual text of a message component in a message set
+ element msgtext { db.msgtext.attlist, db.all.blocks+ }
+}
+div {
+ db.msginfo.role.attribute = attribute role { text }
+ db.msginfo.attlist =
+ db.msginfo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msginfo =
+
+ ## Information about a message in a message set
+ element msginfo {
+ db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)*
+ }
+}
+div {
+ db.msglevel.role.attribute = attribute role { text }
+ db.msglevel.attlist =
+ db.msglevel.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msglevel =
+
+ ## The level of importance or severity of a message in a message set
+ element msglevel { db.msglevel.attlist, db._text }
+}
+div {
+ db.msgorig.role.attribute = attribute role { text }
+ db.msgorig.attlist =
+ db.msgorig.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgorig =
+
+ ## The origin of a message in a message set
+ element msgorig { db.msgorig.attlist, db._text }
+}
+div {
+ db.msgaud.role.attribute = attribute role { text }
+ db.msgaud.attlist =
+ db.msgaud.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgaud =
+
+ ## The audience to which a message in a message set is relevant
+ element msgaud { db.msgaud.attlist, db._text }
+}
+div {
+ db.msgexplan.role.attribute = attribute role { text }
+ db.msgexplan.attlist =
+ db.msgexplan.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.msgexplan.info = db._info.title.only
+ db.msgexplan =
+
+ ## Explanatory material relating to a message in a message set
+ element msgexplan {
+ db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+
+ }
+}
+div {
+ db.qandaset.role.attribute = attribute role { text }
+ db.qandaset.defaultlabel.enumeration =
+
+ ## No labels
+ "none"
+ |
+ ## Numeric labels
+ "number"
+ |
+ ## "Q:" and "A:" labels
+ "qanda"
+ db.qandaset.defaultlabel.attribute =
+
+ ## Specifies the default labelling
+ attribute defaultlabel { db.qandaset.defaultlabel.enumeration }
+ db.qandaset.attlist =
+ db.qandaset.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.qandaset.defaultlabel.attribute?
+ db.qandaset.info = db._info.title.only
+ db.qandaset =
+
+ ## A question-and-answer set
+ element qandaset {
+ db.qandaset.attlist,
+ db.qandaset.info,
+ db.all.blocks*,
+ (db.qandadiv+ | db.qandaentry+)
+ }
+}
+div {
+ db.qandadiv.role.attribute = attribute role { text }
+ db.qandadiv.attlist =
+ db.qandadiv.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.qandadiv.info = db._info.title.only
+ db.qandadiv =
+
+ ## A titled division in a QandASet
+ element qandadiv {
+ db.qandadiv.attlist,
+ db.qandadiv.info,
+ db.all.blocks*,
+ (db.qandadiv+ | db.qandaentry+)
+ }
+}
+div {
+ db.qandaentry.role.attribute = attribute role { text }
+ db.qandaentry.attlist =
+ db.qandaentry.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.qandaentry.info = db._info.title.only
+ db.qandaentry =
+
+ ## A question/answer set within a QandASet
+ element qandaentry {
+ db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer*
+ }
+}
+div {
+ db.question.role.attribute = attribute role { text }
+ db.question.attlist =
+ db.question.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.question =
+
+ ## A question in a QandASet
+ element question { db.question.attlist, db.label?, db.all.blocks+ }
+}
+div {
+ db.answer.role.attribute = attribute role { text }
+ db.answer.attlist =
+ db.answer.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.answer =
+
+ ## An answer to a question posed in a QandASet
+ element answer { db.answer.attlist, db.label?, db.all.blocks+ }
+}
+div {
+ db.label.role.attribute = attribute role { text }
+ db.label.attlist =
+ db.label.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.label =
+
+ ## A label on a Question or Answer
+ element label { db.label.attlist, db._text }
+}
+db.math.inlines = db.inlineequation
+db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+
+db.inlineequation.content =
+ (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+
+div {
+ db.equation.role.attribute = attribute role { text }
+ db.equation.label.attribute = db.label.attribute
+ db.equation.attlist =
+ db.equation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.equation.label.attribute?
+ & db.pgwide.attribute?
+ & db.floatstyle.attribute?
+ db.equation.info = db._info.title.only
+ db.equation =
+
+ ## A displayed mathematical equation
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:example)"
+ "example must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:figure)"
+ "figure must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:table)"
+ "table must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:equation)"
+ "equation must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:equation"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of equation"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element equation {
+ db.equation.attlist,
+ db.equation.info,
+ db.alt?,
+ db.equation.content,
+ db.caption?
+ }
+}
+div {
+ db.informalequation.role.attribute = attribute role { text }
+ db.informalequation.attlist =
+ db.informalequation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.informalequation.info = db._info.title.forbidden
+ db.informalequation =
+
+ ## A displayed mathematical equation without a title
+ element informalequation {
+ db.informalequation.attlist,
+ db.informalequation.info,
+ db.alt?,
+ db.equation.content,
+ db.caption?
+ }
+}
+div {
+ db.inlineequation.role.attribute = attribute role { text }
+ db.inlineequation.attlist =
+ db.inlineequation.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.inlineequation =
+
+ ## A mathematical equation or expression occurring inline
+ element inlineequation {
+ db.inlineequation.attlist, db.alt?, db.inlineequation.content
+ }
+}
+div {
+ db.mathphrase.role.attribute = attribute role { text }
+ db.mathphrase.attlist =
+ db.mathphrase.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.mathphrase =
+
+ ## A mathematical phrase, an expression that can be represented with ordinary text
and a small amount of markup
+ element mathphrase {
+ db.mathphrase.attlist,
+ (db._text | db.ubiq.inlines | db._emphasis)*
+ }
+}
+div {
+ db.imagedata.mathml.role.attribute = attribute role { text }
+ db.imagedata.mathml.attlist =
+ db.imagedata.mathml.role.attribute?
+ & db.common.attributes
+ &
+ ## Specifies that the format of the data is MathML
+ attribute format {
+
+ ## Specifies MathML.
+ "mathml"
+ }?
+ & db.imagedata.align.attribute?
+ & db.imagedata.valign.attribute?
+ & db.imagedata.width.attribute?
+ & db.imagedata.contentwidth.attribute?
+ & db.imagedata.scalefit.attribute?
+ & db.imagedata.scale.attribute?
+ & db.imagedata.depth.attribute?
+ & db.imagedata.contentdepth.attribute?
+ db.imagedata.mathml.info = db._info.title.forbidden
+ db.imagedata.mathml =
+
+ ## A MathML expression in a media object
+ element imagedata {
+ db.imagedata.mathml.attlist,
+ db.imagedata.mathml.info,
+ db._any.mml+
+ }
+}
+div {
+ db._any.mml =
+
+ ## Any element from the MathML namespace
+ element mml:* { (db._any.attribute | text | db._any)* }
+}
+div {
+ db.imagedata.svg.role.attribute = attribute role { text }
+ db.imagedata.svg.attlist =
+ db.imagedata.svg.role.attribute?
+ & db.common.attributes
+ &
+ ## Specifies that the format of the data is SVG
+ attribute format {
+
+ ## Specifies SVG.
+ "svg"
+ }?
+ & db.imagedata.align.attribute?
+ & db.imagedata.valign.attribute?
+ & db.imagedata.width.attribute?
+ & db.imagedata.contentwidth.attribute?
+ & db.imagedata.scalefit.attribute?
+ & db.imagedata.scale.attribute?
+ & db.imagedata.depth.attribute?
+ & db.imagedata.contentdepth.attribute?
+ db.imagedata.svg.info = db._info.title.forbidden
+ db.imagedata.svg =
+
+ ## An SVG drawing in a media object
+ element imagedata {
+ db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+
+ }
+}
+div {
+ db._any.svg =
+
+ ## Any element from the SVG namespace
+ element svg:* { (db._any.attribute | text | db._any)* }
+}
+db.markup.inlines =
+ db.tag
+ | db.markup
+ | db.token
+ | db.symbol
+ | db.literal
+ | db.code
+ | db.constant
+ | db.email
+ | db.uri
+div {
+ db.markup.role.attribute = attribute role { text }
+ db.markup.attlist =
+ db.markup.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.markup =
+
+ ## A string of formatting markup in text that is to be represented literally
+ element markup { db.markup.attlist, db._text }
+}
+div {
+ db.tag.role.attribute = attribute role { text }
+ db.tag.class.enumeration =
+
+ ## An attribute
+ "attribute"
+ |
+ ## An attribute value
+ "attvalue"
+ |
+ ## An element
+ "element"
+ |
+ ## An empty element tag
+ "emptytag"
+ |
+ ## An end tag
+ "endtag"
+ |
+ ## A general entity
+ "genentity"
+ |
+ ## The local name part of a qualified name
+ "localname"
+ |
+ ## A namespace
+ "namespace"
+ |
+ ## A numeric character reference
+ "numcharref"
+ |
+ ## A parameter entity
+ "paramentity"
+ |
+ ## A processing instruction
+ "pi"
+ |
+ ## The prefix part of a qualified name
+ "prefix"
+ |
+ ## An SGML comment
+ "comment"
+ |
+ ## A start tag
+ "starttag"
+ |
+ ## An XML processing instruction
+ "xmlpi"
+ db.tag.class.attribute =
+
+ ## Identifies the nature of the tag content
+ attribute class { db.tag.class.enumeration }
+ db.tag.namespace.attribute =
+
+ ## Identifies the namespace of the tag content
+ attribute namespace { xsd:anyURI }
+ db.tag.attlist =
+ db.tag.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.tag.class.attribute?
+ & db.tag.namespace.attribute?
+ db.tag =
+
+ ## A component of XML (or SGML) markup
+ element tag { db.tag.attlist, db._text }
+}
+div {
+ db.symbol.class.attribute =
+
+ ## Identifies the class of symbol
+ attribute class {
+
+ ## The value is a limit of some kind
+ "limit"
+ }
+ db.symbol.role.attribute = attribute role { text }
+ db.symbol.attlist =
+ db.symbol.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.symbol.class.attribute?
+ db.symbol =
+
+ ## A name that is replaced by a value before processing
+ element symbol { db.symbol.attlist, db._text }
+}
+div {
+ db.token.role.attribute = attribute role { text }
+ db.token.attlist =
+ db.token.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.token =
+
+ ## A unit of information
+ element token { db.token.attlist, db._text }
+}
+div {
+ db.literal.role.attribute = attribute role { text }
+ db.literal.attlist =
+ db.literal.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.literal =
+
+ ## Inline text that is some literal value
+ element literal { db.literal.attlist, db._text }
+}
+div {
+ code.language.attribute =
+
+ ## Identifies the (computer) language of the code fragment
+ attribute language { text }
+ db.code.role.attribute = attribute role { text }
+ db.code.attlist =
+ db.code.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & code.language.attribute?
+ db.code =
+
+ ## An inline code fragment
+ element code {
+ db.code.attlist, (db.programming.inlines | db._text)*
+ }
+}
+div {
+ db.constant.class.attribute =
+
+ ## Identifies the class of constant
+ attribute class {
+
+ ## The value is a limit of some kind
+ "limit"
+ }
+ db.constant.role.attribute = attribute role { text }
+ db.constant.attlist =
+ db.constant.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.constant.class.attribute?
+ db.constant =
+
+ ## A programming or system constant
+ element constant { db.constant.attlist, db._text }
+}
+div {
+ db.productname.role.attribute = attribute role { text }
+ db.productname.class.enumeration =
+
+ ## A name with a copyright
+ "copyright"
+ |
+ ## A name with a registered copyright
+ "registered"
+ |
+ ## A name of a service
+ "service"
+ |
+ ## A name which is trademarked
+ "trade"
+ db.productname.class.attribute =
+
+ ## Specifies the class of product name
+ attribute class { db.productname.class.enumeration }
+ db.productname.attlist =
+ db.productname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.productname.class.attribute?
+ db.productname =
+
+ ## The formal name of a product
+ element productname { db.productname.attlist, db._text }
+}
+div {
+ db.productnumber.role.attribute = attribute role { text }
+ db.productnumber.attlist =
+ db.productnumber.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.productnumber =
+
+ ## A number assigned to a product
+ element productnumber { db.productnumber.attlist, db._text }
+}
+div {
+ db.database.class.enumeration =
+
+ ## An alternate or secondary key
+ "altkey"
+ |
+ ## A constraint
+ "constraint"
+ |
+ ## A data type
+ "datatype"
+ |
+ ## A field
+ "field"
+ |
+ ## A foreign key
+ "foreignkey"
+ |
+ ## A group
+ "group"
+ |
+ ## An index
+ "index"
+ |
+ ## The first or primary key
+ "key1"
+ |
+ ## An alternate or secondary key
+ "key2"
+ |
+ ## A name
+ "name"
+ |
+ ## The primary key
+ "primarykey"
+ |
+ ## A (stored) procedure
+ "procedure"
+ |
+ ## A record
+ "record"
+ |
+ ## A rule
+ "rule"
+ |
+ ## The secondary key
+ "secondarykey"
+ |
+ ## A table
+ "table"
+ |
+ ## A user
+ "user"
+ |
+ ## A view
+ "view"
+ db.database.class.attribute =
+
+ ## Identifies the class of database artifact
+ attribute class { db.database.class.enumeration }
+ db.database.role.attribute = attribute role { text }
+ db.database.attlist =
+ db.database.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.database.class.attribute?
+ db.database =
+
+ ## The name of a database, or part of a database
+ element database { db.database.attlist, db._text }
+}
+div {
+ db.application.class.enumeration =
+
+ ## A hardware application
+ "hardware"
+ |
+ ## A software application
+ "software"
+ db.application.class.attribute =
+
+ ## Identifies the class of application
+ attribute class { db.application.class.enumeration }
+ db.application.role.attribute = attribute role { text }
+ db.application.attlist =
+ db.application.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.application.class.attribute?
+ db.application =
+
+ ## The name of a software program
+ element application { db.application.attlist, db._text }
+}
+div {
+ db.hardware.role.attribute = attribute role { text }
+ db.hardware.attlist =
+ db.hardware.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.hardware =
+
+ ## A physical part of a computer system
+ element hardware { db.hardware.attlist, db._text }
+}
+db.gui.inlines =
+ db.guiicon
+ | db.guibutton
+ | db.guimenuitem
+ | db.guimenu
+ | db.guisubmenu
+ | db.guilabel
+ | db.menuchoice
+ | db.mousebutton
+div {
+ db.guibutton.role.attribute = attribute role { text }
+ db.guibutton.attlist =
+ db.guibutton.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guibutton =
+
+ ## The text on a button in a GUI
+ element guibutton {
+ db.guibutton.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.guiicon.role.attribute = attribute role { text }
+ db.guiicon.attlist =
+ db.guiicon.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guiicon =
+
+ ## Graphic and/or text appearing as a icon in a GUI
+ element guiicon {
+ db.guiicon.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.guilabel.role.attribute = attribute role { text }
+ db.guilabel.attlist =
+ db.guilabel.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guilabel =
+
+ ## The text of a label in a GUI
+ element guilabel {
+ db.guilabel.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.guimenu.role.attribute = attribute role { text }
+ db.guimenu.attlist =
+ db.guimenu.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guimenu =
+
+ ## The name of a menu in a GUI
+ element guimenu {
+ db.guimenu.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.guimenuitem.role.attribute = attribute role { text }
+ db.guimenuitem.attlist =
+ db.guimenuitem.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guimenuitem =
+
+ ## The name of a terminal menu item in a GUI
+ element guimenuitem {
+ db.guimenuitem.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.guisubmenu.role.attribute = attribute role { text }
+ db.guisubmenu.attlist =
+ db.guisubmenu.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.guisubmenu =
+
+ ## The name of a submenu in a GUI
+ element guisubmenu {
+ db.guisubmenu.attlist,
+ (db._text | db.accel | db.superscript | db.subscript)*
+ }
+}
+div {
+ db.menuchoice.role.attribute = attribute role { text }
+ db.menuchoice.attlist =
+ db.menuchoice.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.menuchoice =
+
+ ## A selection or series of selections from a menu
+ element menuchoice {
+ db.menuchoice.attlist,
+ db.shortcut?,
+ (db.guibutton
+ | db.guiicon
+ | db.guilabel
+ | db.guimenu
+ | db.guimenuitem
+ | db.guisubmenu)+
+ }
+}
+div {
+ db.mousebutton.role.attribute = attribute role { text }
+ db.mousebutton.attlist =
+ db.mousebutton.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.mousebutton =
+
+ ## The conventional name of a mouse button
+ element mousebutton { db.mousebutton.attlist, db._text }
+}
+db.keyboard.inlines =
+ db.keycombo
+ | db.keycap
+ | db.keycode
+ | db.keysym
+ | db.shortcut
+ | db.accel
+div {
+ db.keycap.function.enumeration =
+
+ ## The "Alt" key
+ "alt"
+ |
+ ## The "Backspace" key
+ "backspace"
+ |
+ ## The "Command" key
+ "command"
+ |
+ ## The "Control" key
+ "control"
+ |
+ ## The "Delete" key
+ "delete"
+ |
+ ## The down arrow
+ "down"
+ |
+ ## The "End" key
+ "end"
+ |
+ ## The "Enter" or "Return" key
+ "enter"
+ |
+ ## The "Escape" key
+ "escape"
+ |
+ ## The "Home" key
+ "home"
+ |
+ ## The "Insert" key
+ "insert"
+ |
+ ## The left arrow
+ "left"
+ |
+ ## The "Meta" key
+ "meta"
+ |
+ ## The "Option" key
+ "option"
+ |
+ ## The page down key
+ "pagedown"
+ |
+ ## The page up key
+ "pageup"
+ |
+ ## The right arrow
+ "right"
+ |
+ ## The "Shift" key
+ "shift"
+ |
+ ## The spacebar
+ "space"
+ |
+ ## The "Tab" key
+ "tab"
+ |
+ ## The up arrow
+ "up"
+ db.keycap.function-enum.attribute =
+
+ ## Identifies the function key
+ attribute function { db.keycap.function.enumeration }?
+ db.keycap.function-other.attributes =
+
+ ## Identifies the function key
+ attribute function {
+
+ ## Indicates a non-standard function key
+ "other"
+ }?,
+
+ ## Specifies a keyword that identifies the non-standard key
+ attribute otherfunction { text }
+ db.keycap.function.attrib =
+ db.keycap.function-enum.attribute
+ | db.keycap.function-other.attributes
+ db.keycap.role.attribute = attribute role { text }
+ db.keycap.attlist =
+ db.keycap.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.keycap.function.attrib
+ db.keycap =
+
+ ## The text printed on a key on a keyboard
+ element keycap { db.keycap.attlist, db._text }
+}
+div {
+ db.keycode.role.attribute = attribute role { text }
+ db.keycode.attlist =
+ db.keycode.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.keycode =
+
+ ## The internal, frequently numeric, identifier for a key on a keyboard
+ element keycode { db.keycode.attlist, db._text }
+}
+db.keycombination.contentmodel =
+ (db.keycap | db.keycombo | db.keysym) | db.mousebutton
+div {
+ db.keycombo.action.enumeration =
+
+ ## A (single) mouse click.
+ "click"
+ |
+ ## A double mouse click.
+ "double-click"
+ |
+ ## A mouse or key press.
+ "press"
+ |
+ ## Sequential clicks or presses.
+ "seq"
+ |
+ ## Simultaneous clicks or presses.
+ "simul"
+ db.keycombo.action-enum.attribute =
+
+ ## Identifies the nature of the action taken. If keycombo
+ ## contains more than one element, simul
+ ## is the default, otherwise there is no default.
+ attribute action { db.keycombo.action.enumeration }?
+ db.keycombo.action-other.attributes =
+
+ ## Identifies the nature of the action taken
+ attribute action {
+
+ ## Indicates a non-standard action
+ "other"
+ }?,
+
+ ## Identifies the non-standard action in some unspecified way.
+ attribute otheraction { text }
+ db.keycombo.action.attrib =
+ db.keycombo.action-enum.attribute
+ | db.keycombo.action-other.attributes
+ db.keycombo.role.attribute = attribute role { text }
+ db.keycombo.attlist =
+ db.keycombo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.keycombo.action.attrib
+ db.keycombo =
+
+ ## A combination of input actions
+ element keycombo {
+ db.keycombo.attlist, db.keycombination.contentmodel+
+ }
+}
+div {
+ db.keysym.role.attribute = attribute role { text }
+ db.keysym.attlist =
+ db.keysym.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.keysym =
+
+ ## The symbolic name of a key on a keyboard
+ element keysym { db.keysym.attlist, db._text }
+}
+div {
+ db.accel.role.attribute = attribute role { text }
+ db.accel.attlist =
+ db.accel.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.accel =
+
+ ## A graphical user interface (GUI) keyboard shortcut
+ element accel { db.accel.attlist, db._text }
+}
+div {
+ db.shortcut.action.attrib = db.keycombo.action.attrib
+ db.shortcut.role.attribute = attribute role { text }
+ db.shortcut.attlist =
+ db.shortcut.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.shortcut.action.attrib
+ db.shortcut =
+
+ ## A key combination for an action that is also accessible through a menu
+ element shortcut {
+ db.shortcut.attlist, db.keycombination.contentmodel+
+ }
+}
+db.os.inlines =
+ db.prompt
+ | db.envar
+ | db.filename
+ | db.command
+ | db.computeroutput
+ | db.userinput
+db.computeroutput.inlines =
+ (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
+ | db.co
+ | db.markup.inlines
+db.userinput.inlines =
+ (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
+ | db.co
+ | db.markup.inlines
+ | db.gui.inlines
+ | db.keyboard.inlines
+db.prompt.inlines = db._text | db.co
+div {
+ db.prompt.role.attribute = attribute role { text }
+ db.prompt.attlist =
+ db.prompt.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.prompt =
+
+ ## A character or string indicating the start of an input field in a computer
display
+ element prompt { db.prompt.attlist, db.prompt.inlines* }
+}
+div {
+ db.envar.role.attribute = attribute role { text }
+ db.envar.attlist =
+ db.envar.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.envar =
+
+ ## A software environment variable
+ element envar { db.envar.attlist, db._text }
+}
+div {
+ db.filename.class.enumeration =
+
+ ## A device
+ "devicefile"
+ |
+ ## A directory
+ "directory"
+ |
+ ## A filename extension
+ "extension"
+ |
+ ## A header file (as for a programming language)
+ "headerfile"
+ |
+ ## A library file
+ "libraryfile"
+ |
+ ## A partition (as of a hard disk)
+ "partition"
+ |
+ ## A symbolic link
+ "symlink"
+ db.filename.class.attribute =
+
+ ## Identifies the class of filename
+ attribute class { db.filename.class.enumeration }
+ db.filename.path.attribute =
+
+ ## Specifies the path of the filename
+ attribute path { text }
+ db.filename.role.attribute = attribute role { text }
+ db.filename.attlist =
+ db.filename.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.filename.path.attribute?
+ & db.filename.class.attribute?
+ db.filename =
+
+ ## The name of a file
+ element filename { db.filename.attlist, db._text }
+}
+div {
+ db.command.role.attribute = attribute role { text }
+ db.command.attlist =
+ db.command.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.command =
+
+ ## The name of an executable program or other software command
+ element command { db.command.attlist, db._text }
+}
+div {
+ db.computeroutput.role.attribute = attribute role { text }
+ db.computeroutput.attlist =
+ db.computeroutput.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.computeroutput =
+
+ ## Data, generally text, displayed or presented by a computer
+ element computeroutput {
+ db.computeroutput.attlist, db.computeroutput.inlines*
+ }
+}
+div {
+ db.userinput.role.attribute = attribute role { text }
+ db.userinput.attlist =
+ db.userinput.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.userinput =
+
+ ## Data entered by the user
+ element userinput { db.userinput.attlist, db.userinput.inlines* }
+}
+div {
+ db.cmdsynopsis.role.attribute = attribute role { text }
+ db.cmdsynopsis.sepchar.attribute =
+
+ ## Specifies the character that should separate the command and its top-level
arguments
+ attribute sepchar { text }
+ db.cmdsynopsis.cmdlength.attribute =
+
+ ## Indicates the displayed length of the command; this information may be used to
intelligently indent command synopses which extend beyond one line
+ attribute cmdlength { text }
+ db.cmdsynopsis.label.attribute = db.label.attribute
+ db.cmdsynopsis.attlist =
+ db.cmdsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.cmdsynopsis.sepchar.attribute?
+ & db.cmdsynopsis.cmdlength.attribute?
+ & db.cmdsynopsis.label.attribute?
+ db.cmdsynopsis.info = db._info.title.forbidden
+ db.cmdsynopsis =
+
+ ## A syntax summary for a software command
+ element cmdsynopsis {
+ db.cmdsynopsis.attlist,
+ db.cmdsynopsis.info,
+ (db.command | db.arg | db.group | db.sbr)+,
+ db.synopfragment*
+ }
+}
+db.rep.enumeration =
+
+ ## Can not be repeated.
+ "norepeat"
+ |
+ ## Can be repeated.
+ "repeat"
+db.rep.attribute =
+
+ ## Indicates whether or not repetition is possible.
+ [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration }
+db.choice.enumeration =
+
+ ## Formatted to indicate that it is optional.
+ "opt"
+ |
+ ## Formatted without indication.
+ "plain"
+ |
+ ## Formatted to indicate that it is required.
+ "req"
+db.choice.opt.attribute =
+
+ ## Indicates optionality.
+ [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration }
+db.choice.req.attribute =
+
+ ## Indicates optionality.
+ [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration }
+div {
+ db.arg.role.attribute = attribute role { text }
+ db.arg.rep.attribute = db.rep.attribute
+ db.arg.choice.attribute = db.choice.opt.attribute
+ db.arg.attlist =
+ db.arg.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.arg.rep.attribute?
+ & db.arg.choice.attribute?
+ db.arg =
+
+ ## An argument in a CmdSynopsis
+ element arg {
+ db.arg.attlist,
+ (db._text
+ | db.arg
+ | db.group
+ | db.option
+ | db.synopfragmentref
+ | db.sbr)*
+ }
+}
+div {
+ db.group.role.attribute = attribute role { text }
+ db.group.rep.attribute = db.rep.attribute
+ db.group.choice.attribute = db.choice.opt.attribute
+ db.group.attlist =
+ db.group.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.group.rep.attribute?
+ & db.group.choice.attribute?
+ db.group =
+
+ ## A group of elements in a CmdSynopsis
+ element group {
+ db.group.attlist,
+ (db.arg
+ | db.group
+ | db.option
+ | db.synopfragmentref
+ | db.replaceable
+ | db.sbr)+
+ }
+}
+div {
+ db.sbr.role.attribute = attribute role { text }
+ db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes
+ db.sbr =
+
+ ## An explicit line break in a command synopsis
+ element sbr { db.sbr.attlist, empty }
+}
+div {
+ db.synopfragment.role.attribute = attribute role { text }
+ db.synopfragment.attlist =
+ db.synopfragment.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.synopfragment =
+
+ ## A portion of a CmdSynopsis broken out from the main body of the synopsis
+ element synopfragment {
+ db.synopfragment.attlist, (db.arg | db.group)+
+ }
+}
+div {
+ db.synopfragmentref.role.attribute = attribute role { text }
+ db.synopfragmentref.attlist =
+ db.synopfragmentref.role.attribute?
+ & db.common.attributes
+ & db.linkend.attribute
+ db.synopfragmentref =
+
+ ## A reference to a fragment of a command synopsis
+ [
+ s:pattern [
+ name = "Synopsis fragment type constraint"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:synopfragmentref"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test =
+ "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment'
and namespace-uri(//*[@xml:id=current()/@linkend]) =
'http://docbook.org/ns/docbook'"
+ "@linkend on synopfragmentref must point to a synopfragment."
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element synopfragmentref { db.synopfragmentref.attlist, text }
+}
+db.programming.inlines =
+ db.function
+ | db.parameter
+ | db.varname
+ | db.returnvalue
+ | db.type
+ | db.classname
+ | db.exceptionname
+ | db.interfacename
+ | db.methodname
+ | db.modifier
+ | db.initializer
+ | db.oo.inlines
+db.oo.inlines = db.ooclass | db.ooexception | db.oointerface
+db.synopsis.blocks =
+ (db.funcsynopsis
+ | db.classsynopsis
+ | db.methodsynopsis
+ | db.constructorsynopsis
+ | db.destructorsynopsis
+ | db.fieldsynopsis)
+ | db.cmdsynopsis
+div {
+ db.synopsis.role.attribute = attribute role { text }
+ db.synopsis.label.attribute = db.label.attribute
+ db.synopsis.attlist =
+ db.synopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ & db.synopsis.label.attribute?
+ db.synopsis =
+
+ ## A general-purpose element for representing the syntax of commands or functions
+ element synopsis { db.synopsis.attlist, db.verbatim.contentmodel }
+}
+div {
+ db.funcsynopsis.role.attribute = attribute role { text }
+ db.funcsynopsis.attlist =
+ db.funcsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ db.funcsynopsis.info = db._info.title.forbidden
+ db.funcsynopsis =
+
+ ## The syntax summary for a function definition
+ element funcsynopsis {
+ db.funcsynopsis.attlist,
+ db.funcsynopsis.info,
+ (db.funcsynopsisinfo | db.funcprototype)+
+ }
+}
+div {
+ db.funcsynopsisinfo.role.attribute = attribute role { text }
+ db.funcsynopsisinfo.attlist =
+ db.funcsynopsisinfo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ db.funcsynopsisinfo =
+
+ ## Information supplementing the FuncDefs of a FuncSynopsis
+ element funcsynopsisinfo {
+ db.funcsynopsisinfo.attlist, db.verbatim.contentmodel
+ }
+}
+div {
+ db.funcprototype.role.attribute = attribute role { text }
+ db.funcprototype.attlist =
+ db.funcprototype.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.funcprototype =
+
+ ## The prototype of a function
+ element funcprototype {
+ db.funcprototype.attlist,
+ db.modifier*,
+ db.funcdef,
+ (db.void | db.varargs | (db.paramdef+, db.varargs?)),
+ db.modifier*
+ }
+}
+div {
+ db.funcdef.role.attribute = attribute role { text }
+ db.funcdef.attlist =
+ db.funcdef.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.funcdef =
+
+ ## A function (subroutine) name and its return type
+ element funcdef {
+ db.funcdef.attlist, (db._text | db.type | db.function)*
+ }
+}
+div {
+ db.function.role.attribute = attribute role { text }
+ db.function.attlist =
+ db.function.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.function =
+
+ ## The name of a function or subroutine, as in a programming language
+ element function { db.function.attlist, db._text }
+}
+div {
+ db.void.role.attribute = attribute role { text }
+ db.void.attlist =
+ db.void.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.void =
+
+ ## An empty element in a function synopsis indicating that the function in question
takes no arguments
+ element void { db.void.attlist, empty }
+}
+div {
+ db.varargs.role.attribute = attribute role { text }
+ db.varargs.attlist =
+ db.varargs.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.varargs =
+
+ ## An empty element in a function synopsis indicating a variable number of arguments
+ element varargs { db.varargs.attlist, empty }
+}
+div {
+ db.paramdef.role.attribute = attribute role { text }
+ db.paramdef.choice.enumeration =
+
+ ## Formatted to indicate that it is optional.
+ "opt"
+ |
+ ## Formatted to indicate that it is required.
+ "req"
+ db.paramdef.choice.attribute =
+
+ ## Indicates optionality.
+ [ a:defaultValue = "opt" ]
+ attribute choice { db.paramdef.choice.enumeration }
+ db.paramdef.attlist =
+ db.paramdef.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.paramdef.choice.attribute?
+ db.paramdef =
+
+ ## Information about a function parameter in a programming language
+ element paramdef {
+ db.paramdef.attlist,
+ (db._text
+ | db.initializer
+ | db.type
+ | db.parameter
+ | db.funcparams)*
+ }
+}
+div {
+ db.funcparams.role.attribute = attribute role { text }
+ db.funcparams.attlist =
+ db.funcparams.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.funcparams =
+
+ ## Parameters for a function referenced through a function pointer in a synopsis
+ element funcparams { db.funcparams.attlist, db._text }
+}
+div {
+ db.classsynopsis.role.attribute = attribute role { text }
+ db.classsynopsis.class.enumeration =
+
+ ## This is the synopsis of a class
+ "class"
+ |
+ ## This is the synopsis of an interface
+ "interface"
+ db.classsynopsis.class.attribute =
+
+ ## Specifies the nature of the synopsis
+ attribute class { db.classsynopsis.class.enumeration }
+ db.classsynopsis.attlist =
+ db.classsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ & db.classsynopsis.class.attribute?
+ db.classsynopsis =
+
+ ## The syntax summary for a class definition
+ element classsynopsis {
+ db.classsynopsis.attlist,
+ db.oo.inlines+,
+ (db.classsynopsisinfo
+ | db.methodsynopsis
+ | db.constructorsynopsis
+ | db.destructorsynopsis
+ | db.fieldsynopsis)*
+ }
+}
+div {
+ db.classsynopsisinfo.role.attribute = attribute role { text }
+ db.classsynopsisinfo.attlist =
+ db.classsynopsisinfo.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ db.classsynopsisinfo =
+
+ ## Information supplementing the contents of a ClassSynopsis
+ element classsynopsisinfo {
+ db.classsynopsisinfo.attlist, db.verbatim.contentmodel
+ }
+}
+div {
+ db.ooclass.role.attribute = attribute role { text }
+ db.ooclass.attlist =
+ db.ooclass.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.ooclass =
+
+ ## A class in an object-oriented programming language
+ element ooclass {
+ db.ooclass.attlist, (db.package | db.modifier)*, db.classname
+ }
+}
+div {
+ db.oointerface.role.attribute = attribute role { text }
+ db.oointerface.attlist =
+ db.oointerface.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.oointerface =
+
+ ## An interface in an object-oriented programming language
+ element oointerface {
+ db.oointerface.attlist,
+ (db.package | db.modifier)*,
+ db.interfacename
+ }
+}
+div {
+ db.ooexception.role.attribute = attribute role { text }
+ db.ooexception.attlist =
+ db.ooexception.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.ooexception =
+
+ ## An exception in an object-oriented programming language
+ element ooexception {
+ db.ooexception.attlist,
+ (db.package | db.modifier)*,
+ db.exceptionname
+ }
+}
+db.modifier.xml.space.attribute =
+
+ ## Can be used to indicate that whitespace in the modifier should be preserved (for
multi-line annotations, for example).
+ attribute xml:space {
+
+ ## Extra whitespace and line breaks must be preserved.
+ [
+ # Ideally the definition of xml:space used on modifier would be
+ # different from the definition used on the verbatim elements. The
+ # verbatim elements forbid the use of xml:space="default" which
+ # wouldn't be a problem on modifier. But doing that causes the
+ # generated XSD schemas to be broken so I'm just reusing the existing
+ # definition for now. It won't be backwards incompatible to fix this
+ # problem in the future.
+ # | ## Extra whitespace and line breaks are not preserved.
+ # "default"
+
+ ]
+ "preserve"
+ }
+div {
+ db.modifier.role.attribute = attribute role { text }
+ db.modifier.attlist =
+ db.modifier.xml.space.attribute?
+ & db.modifier.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.modifier =
+
+ ## Modifiers in a synopsis
+ element modifier { db.modifier.attlist, db._text }
+}
+div {
+ db.interfacename.role.attribute = attribute role { text }
+ db.interfacename.attlist =
+ db.interfacename.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.interfacename =
+
+ ## The name of an interface
+ element interfacename { db.interfacename.attlist, db._text }
+}
+div {
+ db.exceptionname.role.attribute = attribute role { text }
+ db.exceptionname.attlist =
+ db.exceptionname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.exceptionname =
+
+ ## The name of an exception
+ element exceptionname { db.exceptionname.attlist, db._text }
+}
+div {
+ db.fieldsynopsis.role.attribute = attribute role { text }
+ db.fieldsynopsis.attlist =
+ db.fieldsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ db.fieldsynopsis =
+
+ ## The name of a field in a class definition
+ element fieldsynopsis {
+ db.fieldsynopsis.attlist,
+ db.modifier*,
+ db.type?,
+ db.varname,
+ db.initializer?
+ }
+}
+div {
+ db.initializer.role.attribute = attribute role { text }
+ db.initializer.attlist =
+ db.initializer.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.initializer =
+
+ ## The initializer for a FieldSynopsis
+ element initializer { db.initializer.attlist, db._text }
+}
+div {
+ db.constructorsynopsis.role.attribute = attribute role { text }
+ db.constructorsynopsis.attlist =
+ db.constructorsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ db.constructorsynopsis =
+
+ ## A syntax summary for a constructor
+ element constructorsynopsis {
+ db.constructorsynopsis.attlist,
+ db.modifier*,
+ db.methodname?,
+ (db.methodparam+ | db.void?),
+ db.exceptionname*
+ }
+}
+div {
+ db.destructorsynopsis.role.attribute = attribute role { text }
+ db.destructorsynopsis.attlist =
+ db.destructorsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ db.destructorsynopsis =
+
+ ## A syntax summary for a destructor
+ element destructorsynopsis {
+ db.destructorsynopsis.attlist,
+ db.modifier*,
+ db.methodname?,
+ (db.methodparam+ | db.void?),
+ db.exceptionname*
+ }
+}
+div {
+ db.methodsynopsis.role.attribute = attribute role { text }
+ db.methodsynopsis.attlist =
+ db.methodsynopsis.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.language.attribute?
+ db.methodsynopsis =
+
+ ## A syntax summary for a method
+ element methodsynopsis {
+ db.methodsynopsis.attlist,
+ db.modifier*,
+ (db.type | db.void)?,
+ db.methodname,
+ (db.methodparam+ | db.void),
+ db.exceptionname*,
+ db.modifier*
+ }
+}
+div {
+ db.methodname.role.attribute = attribute role { text }
+ db.methodname.attlist =
+ db.methodname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.methodname =
+
+ ## The name of a method
+ element methodname { db.methodname.attlist, db._text }
+}
+div {
+ db.methodparam.role.attribute = attribute role { text }
+ db.methodparam.rep.attribute = db.rep.attribute
+ db.methodparam.choice.attribute = db.choice.req.attribute
+ db.methodparam.attlist =
+ db.methodparam.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.methodparam.rep.attribute?
+ & db.methodparam.choice.attribute?
+ db.methodparam =
+
+ ## Parameters to a method
+ element methodparam {
+ db.methodparam.attlist,
+ db.modifier*,
+ db.type?,
+ ((db.modifier*, db.parameter, db.initializer?) | db.funcparams),
+ db.modifier*
+ }
+}
+div {
+ db.varname.role.attribute = attribute role { text }
+ db.varname.attlist =
+ db.varname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.varname =
+
+ ## The name of a variable
+ element varname { db.varname.attlist, db._text }
+}
+div {
+ db.returnvalue.role.attribute = attribute role { text }
+ db.returnvalue.attlist =
+ db.returnvalue.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.returnvalue =
+
+ ## The value returned by a function
+ element returnvalue { db.returnvalue.attlist, db._text }
+}
+div {
+ db.type.role.attribute = attribute role { text }
+ db.type.attlist =
+ db.type.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.type =
+
+ ## The classification of a value
+ element type { db.type.attlist, db._text }
+}
+div {
+ db.classname.role.attribute = attribute role { text }
+ db.classname.attlist =
+ db.classname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.classname =
+
+ ## The name of a class, in the object-oriented programming sense
+ element classname { db.classname.attlist, db._text }
+}
+div {
+ db.programlisting.role.attribute = attribute role { text }
+ db.programlisting.width.attribute = db.width.characters.attribute
+ db.programlisting.attlist =
+ db.programlisting.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.verbatim.attributes
+ & db.programlisting.width.attribute?
+ db.programlisting =
+
+ ## A literal listing of all or part of a program
+ element programlisting {
+ db.programlisting.attlist, db.verbatim.contentmodel
+ }
+}
+db.admonition.blocks =
+ db.caution | db.important | db.note | db.tip | db.warning
+db.admonition.contentmodel = db._info.title.only, db.all.blocks+
+div {
+ db.caution.role.attribute = attribute role { text }
+ db.caution.attlist =
+ db.caution.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.caution =
+
+ ## A note of caution
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caution"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of caution"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caution"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of caution"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caution"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of caution"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caution"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of caution"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:caution"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of caution"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element caution { db.caution.attlist, db.admonition.contentmodel }
+}
+div {
+ db.important.role.attribute = attribute role { text }
+ db.important.attlist =
+ db.important.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.important =
+
+ ## An admonition set off from the text
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:important"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of important"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:important"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of important"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:important"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of important"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:important"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of important"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:important"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of important"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element important {
+ db.important.attlist, db.admonition.contentmodel
+ }
+}
+div {
+ db.note.role.attribute = attribute role { text }
+ db.note.attlist =
+ db.note.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.note =
+
+ ## A message set off from the text
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:note"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of note"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:note"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of note"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:note"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of note"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:note"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of note"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:note"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of note"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element note { db.note.attlist, db.admonition.contentmodel }
+}
+div {
+ db.tip.role.attribute = attribute role { text }
+ db.tip.attlist =
+ db.tip.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.tip =
+
+ ## A suggestion to the user, set off from the text
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:tip"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of tip"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:tip"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of tip"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:tip"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of tip"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:tip"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of tip"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:tip"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of tip"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element tip { db.tip.attlist, db.admonition.contentmodel }
+}
+div {
+ db.warning.role.attribute = attribute role { text }
+ db.warning.attlist =
+ db.warning.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.warning =
+
+ ## An admonition set off from the text
+ [
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:warning"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:caution)"
+ "caution must not occur in the descendants of warning"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:warning"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:important)"
+ "important must not occur in the descendants of warning"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:warning"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:note)"
+ "note must not occur in the descendants of warning"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:warning"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:tip)"
+ "tip must not occur in the descendants of warning"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ s:pattern [
+ name = "Element exclusion"
+ "\x{a}" ~
+ " "
+ s:rule [
+ context = "db:warning"
+ "\x{a}" ~
+ " "
+ s:assert [
+ test = "not(.//db:warning)"
+ "warning must not occur in the descendants of warning"
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ "\x{a}" ~
+ " "
+ ]
+ ]
+ element warning { db.warning.attlist, db.admonition.contentmodel }
+}
+db.error.inlines =
+ db.errorcode | db.errortext | db.errorname | db.errortype
+div {
+ db.errorcode.role.attribute = attribute role { text }
+ db.errorcode.attlist =
+ db.errorcode.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.errorcode =
+
+ ## An error code
+ element errorcode { db.errorcode.attlist, db._text }
+}
+div {
+ db.errorname.role.attribute = attribute role { text }
+ db.errorname.attlist =
+ db.errorname.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.errorname =
+
+ ## An error name
+ element errorname { db.errorname.attlist, db._text }
+}
+div {
+ db.errortext.role.attribute = attribute role { text }
+ db.errortext.attlist =
+ db.errortext.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.errortext =
+
+ ## An error message.
+ element errortext { db.errortext.attlist, db._text }
+}
+div {
+ db.errortype.role.attribute = attribute role { text }
+ db.errortype.attlist =
+ db.errortype.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.errortype =
+
+ ## The classification of an error message
+ element errortype { db.errortype.attlist, db._text }
+}
+db.systemitem.inlines = db._text | db.co
+div {
+ db.systemitem.class.enumeration =
+
+ ## A daemon or other system process (syslogd)
+ "daemon"
+ |
+ ## A domain name (
example.com)
+ "domainname"
+ |
+ ## An ethernet address (00:05:4E:49:FD:8E)
+ "etheraddress"
+ |
+ ## An event of some sort (SIGHUP)
+ "event"
+ |
+ ## An event handler of some sort (hangup)
+ "eventhandler"
+ |
+ ## A filesystem (ext3)
+ "filesystem"
+ |
+ ## A fully qualified domain name (
my.example.com)
+ "fqdomainname"
+ |
+ ## A group name (wheel)
+ "groupname"
+ |
+ ## An IP address (127.0.0.1)
+ "ipaddress"
+ |
+ ## A library (libncurses)
+ "library"
+ |
+ ## A macro
+ "macro"
+ |
+ ## A netmask (255.255.255.192)
+ "netmask"
+ |
+ ## A newsgroup (comp.text.xml)
+ "newsgroup"
+ |
+ ## An operating system name (Hurd)
+ "osname"
+ |
+ ## A process (gnome-cups-icon)
+ "process"
+ |
+ ## A protocol (ftp)
+ "protocol"
+ |
+ ## A resource
+ "resource"
+ |
+ ## A server (
mail.example.com)
+ "server"
+ |
+ ## A service (ppp)
+ "service"
+ |
+ ## A system name (hephaistos)
+ "systemname"
+ |
+ ## A user name (ndw)
+ "username"
+ db.systemitem.class.attribute =
+
+ ## Identifies the nature of the system item
+ attribute class { db.systemitem.class.enumeration }
+ db.systemitem.role.attribute = attribute role { text }
+ db.systemitem.attlist =
+ db.systemitem.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.systemitem.class.attribute?
+ db.systemitem =
+
+ ## A system-related item or term
+ element systemitem { db.systemitem.attlist, db.systemitem.inlines* }
+}
+div {
+ db.option.role.attribute = attribute role { text }
+ db.option.attlist =
+ db.option.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.option =
+
+ ## An option for a software command
+ element option { db.option.attlist, db._text }
+}
+div {
+ db.optional.role.attribute = attribute role { text }
+ db.optional.attlist =
+ db.optional.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.optional =
+
+ ## Optional information
+ element optional { db.optional.attlist, db._text }
+}
+div {
+ db.property.role.attribute = attribute role { text }
+ db.property.attlist =
+ db.property.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ db.property =
+
+ ## A unit of data associated with some part of a computer system
+ element property { db.property.attlist, db._text }
+}
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
new file mode 100644
index 0000000..fa9c124
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2docbook.xsl
@@ -0,0 +1,192 @@
+<!--
+ ~ RHQ Management Platform
+ ~ Copyright (C) 2005-2012 Red Hat, Inc.
+ ~ All rights reserved.
+ ~
+ ~ This program is free software; you can redistribute it and/or modify
+ ~ it under the terms of the GNU General Public License as published by
+ ~ the Free Software Foundation version 2 of the License.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ along with this program; if not, write to the Free Software
+ ~ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ -->
+
+<!--
+ Taken from
https://github.com/pilhuhn/swagger-core/blob/apt/modules/java-jaxrs-apt/s...
+ and modified for docbook
+-->
+<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://docbook.org/ns/docbook"
+ xml:lang="en">
+
+ <xsl:param name="basePath"/>
+ <xsl:output xml:lang="en"/>
+
+ <xsl:template match="/api">
+ <xsl:element name="section">
+ <xsl:attribute name="version">5.0</xsl:attribute>
+ <!--<xsl:attribute
name="xmlns">http://docbook.org/ns/docbook</xsl:attribute...
+ <title>REST Api documentation</title>
+ <subtitle>Base path (if not otherwise specified) : <xsl:value-of
select="$basePath"/></subtitle>
+ <toc>
+ <xsl:for-each select="class">
+ <xsl:sort select="@basePath"/>
+ <xsl:sort select="@path"/>
+ <xsl:element name="tocentry">
+ <link>
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="@path"/>
+ </xsl:attribute>
+ <xsl:if test="@basePath">
+ <xsl:value-of select="@basePath"/>
+ </xsl:if>
+ /<xsl:value-of select="@path"/>
+ </link>
+ </xsl:element>
+ </xsl:for-each>
+ </toc>
+ <xsl:apply-templates>
+ <xsl:sort select="@basePath"/>
+ <xsl:sort select="@path"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <xsl:element name="section">
+ <xsl:attribute name="xml:id">
+ <xsl:value-of select="@path"/>
+ </xsl:attribute>
+ <title>
+ /<xsl:value-of select="@path"/>
+ <xsl:if test="@shortDesc">
+ : <xsl:value-of select="@shortDesc"/>
+ </xsl:if>
+ </title>
+ <subtitle><xsl:value-of
select="@description"/></subtitle>
+ <simpara>
+ Defining class:
+ <xsl:value-of select="@name"/>
+ </simpara>
+ <para>
+ <xsl:if test="method">
+ <itemizedlist>
+ <title>Methods</title>
+ <xsl:apply-templates/>
+ </itemizedlist>
+ </xsl:if>
+ </para>
+ </xsl:element>
+
+ </xsl:template>
+
+ <xsl:template match="method">
+ <listitem>
+ <simpara>
+ <emphasis role="bold"><xsl:value-of
select="@method"/><xsl:text xml:space="preserve">
</xsl:text><xsl:value-of
+ select="../@path"/>/<xsl:value-of
select="@path"/>
+ </emphasis>
+ </simpara>
+ <!--<subtitle><xsl:value-of
select="@description"/></subtitle>-->
+ <xsl:choose>
+ <xsl:when test="param">
+ <table>
+ <title>Parameters:</title>
+ <tr>
+ <th>Name</th>
+ <th>P.Type</th>
+ <th>Description</th>
+ <th>Required</th>
+ <th>Type</th>
+ <th>Allowed values</th>
+ <th>Default value</th>
+ </tr>
+ <xsl:apply-templates select="param"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ <simpara>
+ This method has no parameters
+ </simpara>
+ </xsl:otherwise>
+ </xsl:choose>
+ <simpara>
+ Return type:
+ <xsl:value-of select="@returnType"/>
+ </simpara>
+ <xsl:if test="error">
+ <table>
+ <title>Error codes:</title>
+ <tr>
+ <th>Code</th>
+ <th>Reason</th>
+ </tr>
+ <xsl:apply-templates select="error"/>
+ </table>
+ </xsl:if>
+ </listitem>
+ </xsl:template>
+
+ <xsl:template match="param">
+ <tr>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@name">
+ <xsl:value-of select="@name"/>
+ </xsl:when>
+
<xsl:otherwise><emphasis>implicit</emphasis></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>
+ <xsl:value-of select="@paramType"/>
+ </td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@description">
+ <xsl:value-of select="@description"/>
+ </xsl:when>
+
<xsl:otherwise><emphasis>none</emphasis></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>
+ <xsl:value-of select="@required"/>
+ </td>
+ <td>
+ <xsl:value-of select="@type"/>
+ </td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@allowableValues">
+ <xsl:value-of select="@allowableValues"/>
+ </xsl:when>
+
<xsl:otherwise><emphasis>-all-</emphasis></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@defaultValue">
+ <xsl:value-of select="@defaultValue"/>
+ </xsl:when>
+
<xsl:otherwise><emphasis>none</emphasis></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="error">
+ <tr>
+ <td>
+ <xsl:value-of select="@code"/>
+ </td>
+ <td>
+ <xsl:value-of select="@reason"/>
+ </td>
+ </tr>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
new file mode 100644
index 0000000..0228bbe
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/xsl/apiout2html.xsl
@@ -0,0 +1,116 @@
+<!--
+ Taken from
https://github.com/pilhuhn/swagger-core/blob/apt/modules/java-jaxrs-apt/s...
+-->
+<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:param name="basePath"/>
+ <xsl:strip-space elements="a"/>
+
+ <xsl:template match="/api">
+ <html>
+ <head>
+ <title>Api documentation</title>
+ <style type="text/css">
+ h2 {background-color:#ADD8E6 }
+ h3 {background-color:#C0C0C0 }
+ th {font-weight:bold; font-size:120% }
+ em {font-style:italic}
+ </style>
+ </head>
+ <body>
+ <h1>REST-api documentation</h1>
+ <em>Base path (if not otherwise specified) : <xsl:value-of
select="$basePath"/></em>
+ <h2>Table of contents</h2>
+ <ul>
+ <xsl:for-each select="class">
+ <xsl:sort select="@basePath"/>
+ <xsl:sort select="@path"/>
+ <li>
+ <xsl:element name="a">
+ <xsl:attribute name="href">#<xsl:value-of
select="@path"/></xsl:attribute>
+ <xsl:if test="@basePath">
+ <xsl:value-of select="@basePath"/>
+ </xsl:if>/<xsl:value-of select="@path"/>
+ </xsl:element>
+ </li>
+ </xsl:for-each>
+ </ul>
+ <xsl:apply-templates>
+ <xsl:sort select="@basePath"/>
+ <xsl:sort select="@path"/>
+ </xsl:apply-templates>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="class">
+ <xsl:element name="h2">
+ <xsl:attribute name="id"><xsl:value-of
select="@path"/></xsl:attribute>
+ /<xsl:value-of select="@path"/>
+ <xsl:if test="@shortDesc">
+ : <xsl:value-of select="@shortDesc"/>
+ </xsl:if>
+ </xsl:element>
+ <em><xsl:value-of select="@description"/></em>
+ <p/>
+ Defining class: <xsl:value-of select="@name"/><br/>
+ <br/>
+ <xsl:if test="method">
+ Methods:<br/>
+ <xsl:apply-templates>
+ <xsl:sort select="@path"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <p/>
+ </xsl:template>
+
+ <xsl:template match="method">
+ <h3><xsl:value-of select="@method"/><xsl:text
xml:space="preserve"> </xsl:text><xsl:value-of
select="../@path"/>/<xsl:value-of
select="@path"/></h3>
+ <em><xsl:value-of select="@description"/></em>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="param">
+ Parameters:
+ <table>
+
<tr><th>Name</th><th>P.Type</th><th>Description</th><th>Required</th><th>Type</th><th>Allowed
values</th><th>Default value</th></tr>
+ <xsl:apply-templates select="param"/>
+ </table>
+ </xsl:when>
+ <xsl:otherwise>
+ This method has no parameters
+ </xsl:otherwise>
+ </xsl:choose>
+ <br/>
+ Return type: <xsl:value-of select="@returnType"/>
+ <p/>
+ <xsl:if test="error">
+ Error codes:<br/>
+ <table>
+ <tr>
+ <th>Code</th><th>Reason</th>
+ </tr>
+ <xsl:apply-templates select="error"/>
+ </table>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="param">
+ <tr>
+ <td><xsl:value-of select="@name"/></td>
+ <td><xsl:value-of select="@paramType"/></td>
+ <td><xsl:value-of select="@description"/></td>
+ <td><xsl:value-of select="@required"/></td>
+ <td><xsl:value-of select="@type"/></td>
+ <td><xsl:value-of select="@allowableValues"/></td>
+ <td><xsl:value-of select="@defaultValue"/></td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template match="error">
+ <tr>
+ <td><xsl:value-of select="@code"/></td>
+ <td><xsl:value-of select="@reason"/></td>
+ </tr>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
commit 8de7734a94adcec32de43ca436a12c7edecc48d9
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Sat Jun 2 17:16:00 2012 -0400
[Bug 826503 - Log in screen available but user is not able to log in for several
minutes after installation]
This is due to the fact that the problem in bug 684450 is
still unresolved, and will likely remain that way until we
move to a new version of AS as the underlying RHQ server
platform. When we switch contexts between the installer and
portal war we start having the problem described in
https://issues.jboss.org/browse/JBWEB-188. The fact that it
returns a 200 response code even though the request fails is
what fools the installer into thinking that the server is
ready. So:
- Change Startup servlet to pass back an unusual response code
(288)on success
- Change the installer's header.jsp to look for 288 as opposed
to 200.
- Change StartupServlet the polling time from 5 to 15 seconds to
reduce the number of coyote exceptions.
- Update the installer message to let users know that it could be
several minutes in this state.
diff --git
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
index b316c13..cd45495 100644
---
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
+++
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
@@ -175,7 +175,7 @@ public interface InstallerI18NResourceKeys {
+ "Once complete you will be able to log on and use ${product.name}.")
String WELCOME_MESSAGE = "welcomeMessage";
- @I18NMessage(locale = "en", value = "Starting up, please
wait...")
+ @I18NMessage(locale = "en", value = "Starting up, please wait... (this
may take several minutes)")
String STARTING = "starting";
@I18NMessage(locale = "en", value = "${product.name} will be
installed!")
diff --git a/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
b/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
index 78a33a9..f76a72c 100644
--- a/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
+++ b/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
@@ -25,7 +25,7 @@
function doLoad()
{
- setTimeout( "refresh()", 5*1000 )
+ setTimeout( "refresh()", 15*1000 )
try
{
@@ -57,9 +57,9 @@
{
if (xmlRequest.readyState == 4)
{
- // 200 means page is OK, 401 means we are being asked to authenticate the
user
- // in either case, it means the RHQ Console is ready
- if (xmlRequest.status == 200 || xmlRequest.status == 401)
+ // 288 means page is OK (note, we don't use 200 because of
https://issues.jboss.org/browse/JBWEB-188),
+ // 401 means we are being asked to authenticate the user in either case,
it means the RHQ Console is ready
+ if (xmlRequest.status == 288 || xmlRequest.status == 401)
{
linkText = "${bundle.alreadyInstalledStartedLink}";
reminderText = "${bundle.alreadyInstalledReminder}";
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
index 651129c..c0bd233 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
@@ -106,7 +106,8 @@ public class StartupServlet extends HttpServlet {
resp.setHeader("Cache-Control", "no-cache, no-store");
resp.setHeader("Expires", "-1");
resp.setHeader("Pragma", "no-cache");
- resp.setStatus(initialized ? HttpServletResponse.SC_OK :
HttpServletResponse.SC_SERVICE_UNAVAILABLE);
+ // as opposed to SC_OK (200), return a special value due to
https://issues.jboss.org/browse/JBWEB-188.
+ resp.setStatus(initialized ? 288 : HttpServletResponse.SC_SERVICE_UNAVAILABLE);
}
/**
commit b07cce4f5440a616011e02aa7b81e59e40e5b59c
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Sat Jun 2 13:09:14 2012 -0400
add support for command line args for specifying IRC server and channel
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
index 681707c..08f715a 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -112,25 +112,36 @@ public class RhqIrcBot extends ListenerAdapter {
disconnectEvent.getBot().reconnect();
connected = true;
} catch (Exception e) {
- // ignore
+ System.err.println("Failed to reconnect to " +
disconnectEvent.getBot().getServer() + " IRC server: " + e);
}
}
}
public static void main(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: RhqIrcBot IRC_SERVER IRC_CHANNEL");
+ System.err.println(" e.g.: RhqIrcBot
irc.freenode.net
'#rhq'");
+ System.exit(1);
+ }
+ String server = args[0];
+ String channel = args[1];
+ if (channel.charAt(0) != '#') {
+ channel = '#' + channel;
+ }
+
PircBotX bot = new PircBotX();
bot.setName("rhq-bot");
bot.setVersion("1.0");
- bot.setFinger("#rhq IRC bot (source code in RHQ git under
etc/rhq-ircBot/)");
+ bot.setFinger("RHQ IRC bot (source code in RHQ git under
etc/rhq-ircBot/)");
bot.setVerbose(true);
bot.getListenerManager().addListener(new RhqIrcBot());
bot.setSocketTimeout(1 * 60 * 1000); // 1 minute
// TODO: Try other Freenode IRC servers if this one is down.
- bot.connect("irc.freenode.net");
- bot.joinChannel("#rhq");
+ bot.connect(server);
+ bot.joinChannel(channel);
}
}
commit 64d1a7cc342250063d5325aba89fed454c73cd45
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Jun 1 17:59:12 2012 -0500
[BZ 827636] Updated Cache component and parents to use generic component code since
the functionality required was implemented in a generic fashion.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCContainerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCContainerComponent.java
deleted file mode 100644
index aec501b..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCContainerComponent.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.rhq.modules.plugins.jbossas7;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.Property;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.resource.CreateResourceStatus;
-import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
-import org.rhq.core.pluginapi.inventory.CreateResourceReport;
-import org.rhq.modules.plugins.jbossas7.json.Address;
-import org.rhq.modules.plugins.jbossas7.json.Operation;
-import org.rhq.modules.plugins.jbossas7.json.Result;
-
-/**
- * // TODO: Document this
- * @author Heiko W. Rupp
- */
-public class IspnCContainerComponent extends BaseComponent implements
CreateChildResourceFacet{
- static final String FLAVOR = "_flavor";
-
-// private final Log log = LogFactory.getLog(IspnCContainerComponent.class);
-
- /**
- * Create embedded cache elements
- * Ttick is to take the _flavor property and turn it into a part of the path
- * @param report contains all of the necessary information to create the specified
resource and should be populated
- * with the
- *
- * @return
- */
- @Override
- public CreateResourceReport createResource(CreateResourceReport report) {
-
- Configuration config = report.getResourceConfiguration();
- String flavor = config.getSimpleValue(FLAVOR,null);
- if (flavor==null) {
- report.setStatus(CreateResourceStatus.INVALID_CONFIGURATION);
- report.setErrorMessage("No flavor given");
-
- return report;
- }
- String newName = report.getUserSpecifiedResourceName();
- Address address = new Address(this.address);
- address.add(flavor,newName);
- Operation add = new Operation("add",address);
- for (Property prop: config.getProperties()) {
- if (prop.getName().equals(FLAVOR)) {
- continue;
- }
- PropertySimple ps = (PropertySimple) prop;
- add.addAdditionalProperty(prop.getName(),ps.getStringValue()); // TODO format
conversion?
-
- }
- Result result = getASConnection().execute(add);
- if (result.isSuccess()) {
- report.setResourceKey(address.getPath());
- report.setResourceName(address.getPath());
- report.setStatus(CreateResourceStatus.SUCCESS);
- }
- else {
- report.setErrorMessage(result.getFailureDescription());
- report.setStatus(CreateResourceStatus.FAILURE);
- }
-
- return report;
- }
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCacheComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCacheComponent.java
deleted file mode 100644
index c6de975..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnCacheComponent.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2012 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.rhq.modules.plugins.jbossas7;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.measurement.MeasurementDataTrait;
-import org.rhq.core.domain.measurement.MeasurementReport;
-import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
-import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
-
-/**
- * Component class for Infinispan caches
- * @author Heiko W. Rupp
- */
-public class IspnCacheComponent extends BaseComponent implements ConfigurationFacet {
-
-
- @Override
- public void getValues(MeasurementReport report, Set metrics) throws Exception {
-
- Set<MeasurementScheduleRequest> requests = metrics;
- Set<MeasurementScheduleRequest> todo = new
HashSet<MeasurementScheduleRequest>();
-
- for (MeasurementScheduleRequest req: requests) {
- if (req.getName().equals("__flavor")) {
- String flavor = getCacheFlavorFromPath();
- MeasurementDataTrait trait = new MeasurementDataTrait(req,flavor);
- report.addData(trait);
- }
- else
- todo.add(req);
- }
-
-
- super.getValues(report, todo);
- }
-
- private String getCacheFlavorFromPath() {
- String flavor = path.substring(path.lastIndexOf(",")+1);
- flavor = flavor.substring(0,flavor.indexOf("="));
- return flavor;
- }
-
- @Override
- public Configuration loadResourceConfiguration() throws Exception {
- Configuration config = super.loadResourceConfiguration();
- String f = getCacheFlavorFromPath();
- PropertySimple flavor = new PropertySimple(IspnCContainerComponent.FLAVOR,f);
- config.put(flavor);
- return config;
- }
-
- @Override
- public void updateResourceConfiguration(ConfigurationUpdateReport report) {
-
- report.getConfiguration().remove(IspnCContainerComponent.FLAVOR);
-
- super.updateResourceConfiguration(report);
- }
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnComponent.java
deleted file mode 100644
index bf809cf..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/IspnComponent.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.rhq.modules.plugins.jbossas7;
-
-/**
- * Component class for Infinispan
- * @author Heiko W. Rupp
- */
-public class IspnComponent extends BaseComponent {
-
-
-}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index ec17e84..ffc0246 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -1899,7 +1899,7 @@
<service name="Infinispan (Managed Server)"
discovery="SubsystemDiscovery"
- class="IspnComponent"
+ class="BaseComponent"
singleton="true">
<plugin-configuration>
@@ -1909,7 +1909,7 @@
<service name="Cache Container (Managed Server)"
discovery="SubsystemDiscovery"
- class="IspnCContainerComponent">
+ class="TemplatedSubResourcesComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="cache-container"/>
@@ -1936,21 +1936,13 @@
<service name="Cache (Managed Server)"
discovery="SubsystemDiscovery"
- class="IspnCacheComponent">
+ class="TemplatedComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="distributed-cache|local-cache|invalidation-cache|replicated-cache"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="_flavor" displayName="Kind of
cache" required="true" readOnly="true"
default="local-cache" description="What special kind of cache is
this.">
- <c:property-options>
- <c:option value="local-cache"/>
- <c:option value="invalidation-cache"/>
- <c:option value="distributed-cache"/>
- <c:option value="replicated-cache"/>
- </c:property-options>
- </c:simple-property>
<c:simple-property name="start" required="false"
type="string" readOnly="true" default="LAZY"
description="The cache start mode, which can be EAGER (immediate start) or LAZY
(on-demand start).">
<c:property-options>
<c:option value="LAZY"/>
@@ -1980,6 +1972,27 @@
<c:simple-property name="module" required="false"
type="string" readOnly="true" description="The module whose class
loader should be used when building this cache's configuration."/>
<c:simple-property name="owners" required="false"
type="integer" readOnly="true" defaultValue="2"
description="Number of cluster-wide replicas for each cache entry. The
default value is 2."/>
<c:simple-property name="virtual-nodes"
required="false" type="integer" readOnly="true"
defaultValue="1" description="Controls the number of virtual nodes per
'real' node. If numVirtualNodes is 1, then virtual nodes are disabled.
The topology aware consistent hash must be used if you wish to take advantage of virtual
nodes. A default of 1 is used. The default value is 1."/>
+
+ <c:simple-property name="__type" displayName="Type of
cache" required="true" readOnly="true"
default="local-cache" description="Type of cache">
+ <c:property-options>
+ <c:option value="local-cache"/>
+ <c:option value="invalidation-cache"/>
+ <c:option value="distributed-cache"/>
+ <c:option value="replicated-cache"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Local Cache" description="Local
Cache">
+ <c:simple-property name="__type" readOnly="true"
default="local-cache"/>
+ </c:template>
+ <c:template name="Invalidation Cache"
description="Invalidation Cache">
+ <c:simple-property name="__type" readOnly="true"
default="invalidation-cache"/>
+ </c:template>
+ <c:template name="Distributed Cache"
description="Distributed Cache">
+ <c:simple-property name="__type" readOnly="true"
default="distributed-cache"/>
+ </c:template>
+ <c:template name="Replicated Cache" description="Replicated
Cache">
+ <c:simple-property name="__type" readOnly="true"
default="replicated-cache"/>
+ </c:template>
</resource-configuration>
</service>
@@ -11090,7 +11103,7 @@
<service name="Infinispan"
discovery="SubsystemDiscovery"
- class="IspnComponent"
+ class="BaseComponent"
singleton="true">
<runs-inside>
@@ -11104,7 +11117,7 @@
<service name="Cache Container"
discovery="SubsystemDiscovery"
- class="IspnCContainerComponent"
+ class="TemplatedSubResourcesComponent"
createDeletePolicy="both"
creationDataType="configuration">
@@ -11133,7 +11146,7 @@
<service name="Cache"
discovery="SubsystemDiscovery"
- class="IspnCacheComponent"
+ class="TemplatedComponent"
createDeletePolicy="both"
creationDataType="configuration">
@@ -11142,14 +11155,6 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="_flavor" displayName="Kind of
cache" required="true" readOnly="true"
default="local-cache" description="What special kind of cache is
this.">
- <c:property-options>
- <c:option value="local-cache"/>
- <c:option value="invalidation-cache"/>
- <c:option value="distributed-cache"/>
- <c:option value="replicated-cache"/>
- </c:property-options>
- </c:simple-property>
<c:simple-property name="start" required="false"
type="string" readOnly="false" default="LAZY"
description="The cache start mode, which can be EAGER (immediate start) or LAZY
(on-demand start).">
<c:property-options>
<c:option value="LAZY"/>
@@ -11165,7 +11170,7 @@
</c:property-options>
</c:simple-property>
<c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="The jndi-name to
which to bind this cache instance."/>
- <c:simple-property name="mode" required="false"
type="string" readOnly="true" default="SYNC"
description="Sets the clustered cache mode, ASYNC for asynchronous operation, or SYNC
for synchronous operation.">
+ <c:simple-property name="mode" required="true"
type="string" readOnly="false" default="SYNC"
description="Sets the clustered cache mode, ASYNC for asynchronous operation, or SYNC
for synchronous operation.">
<c:property-options>
<c:option value="SYNC"/>
<c:option value="ASYNC"/>
@@ -11174,12 +11179,32 @@
<c:simple-property name="queue-size" required="false"
type="integer" readOnly="false" default="0"
description="In ASYNC mode, this attribute can be used to trigger flushing of the
queue when it reaches a specific threshold."/>
<c:simple-property name="queue-flush-interval"
required="false" type="long" readOnly="false"
default="10" description="In ASYNC mode, this attribute controls how often
the asynchronous thread used to flush the replication queue runs. This should be a
positive integer which represents thread wakeup time in milliseconds."/>
<c:simple-property name="remote-timeout"
required="false" type="long" readOnly="false"
default="17500" description="In SYNC mode, the timeout (in ms) used to wait
for an acknowledgment when making a remote call, after which the call is aborted and an
exception is thrown."/>
-
<c:simple-property name="async-marshalling"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="If enabled, this will cause marshalling
of entries to be performed asynchronously. The default value is false."/>
<c:simple-property name="l1-lifespan" required="false"
type="long" readOnly="false" defaultValue="600000"
description="Maximum lifespan of an entry placed in the L1 cache. This element
configures the L1 cache behavior in 'distributed' caches instances. In
any other cache modes, this element is ignored. The default value is 600000."/>
<c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module whose
class loader should be used when building this cache's configuration."/>
<c:simple-property name="owners" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Number of cluster-wide replicas for each cache entry. The
default value is 2."/>
<c:simple-property name="virtual-nodes" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Controls the number of virtual nodes per 'real' node.
If numVirtualNodes is 1, then virtual nodes are disabled. The topology aware consistent
hash must be used if you wish to take advantage of virtual nodes. A default of 1 is used.
The default value is 1."/>
+
+ <c:simple-property name="__type" displayName="Type of
cache" required="true" readOnly="true"
default="local-cache" description="Type of cache">
+ <c:property-options>
+ <c:option value="local-cache"/>
+ <c:option value="invalidation-cache"/>
+ <c:option value="distributed-cache"/>
+ <c:option value="replicated-cache"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Local Cache" description="Local
Cache">
+ <c:simple-property name="__type" readOnly="true"
default="local-cache"/>
+ </c:template>
+ <c:template name="Invalidation Cache"
description="Invalidation Cache">
+ <c:simple-property name="__type" readOnly="true"
default="invalidation-cache"/>
+ </c:template>
+ <c:template name="Distributed Cache" description="Distributed
Cache">
+ <c:simple-property name="__type" readOnly="true"
default="distributed-cache"/>
+ </c:template>
+ <c:template name="Replicated Cache" description="Replicated
Cache">
+ <c:simple-property name="__type" readOnly="true"
default="replicated-cache"/>
+ </c:template>
</resource-configuration>
</service>
commit 5ffd188798d92b0bf455dd5b7a4766dd31f20825
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 1 15:18:34 2012 -0400
[BZ 827447] prevent subject session timeouts from occurring during registration of
agent plugins with tons of types (e.g. the as7 plugin)
(
https://bugzilla.redhat.com/show_bug.cgi?id=827447)
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/plugin/ProductPluginDeployer.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/plugin/ProductPluginDeployer.java
index cf1da6b..1d674a8 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/plugin/ProductPluginDeployer.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/plugin/ProductPluginDeployer.java
@@ -41,7 +41,6 @@ import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.plugin.Plugin;
import org.rhq.core.util.MessageDigestGenerator;
-import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.core.concurrency.LatchedServiceCircularityException;
import org.rhq.enterprise.server.core.concurrency.LatchedServiceController;
import org.rhq.enterprise.server.core.concurrency.LatchedServiceException;
@@ -478,9 +477,7 @@ public class ProductPluginDeployer {
// since we assume we are called in the proper deployment order, this should
not fail
// if we are called when hot-deploying a plugin whose dependencies aren't
deployed, this will fail
PluginManagerLocal pluginMgr = LookupUtil.getPluginManager();
- SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager();
- pluginMgr.registerPlugin(subjectManager.getOverlord(), plugin,
pluginDescriptor, localPluginFile,
- forceUpdate);
+ pluginMgr.registerPlugin(plugin, pluginDescriptor, localPluginFile,
forceUpdate);
} catch (Exception e) {
log.error("Failed to register RHQ plugin file [" +
deploymentInfo.url + "]", e);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
index 4bc097f..09563df 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
@@ -332,21 +332,20 @@ public class PluginManagerBean implements PluginManagerLocal {
}
// Start with no transaction so we can control the transactional boundaries. This is
important for a
- // few reasons. Registering the plugin and removing obsolete types are perfromed in
different, subsequent,
- // transactions. The register may update types, and that locks various rows of the
database. Those rows
+ // few reasons. Registering the plugin and removing obsolete types are performed in
different, subsequent,
+ // transactions. The registration may update types, and that locks various rows of
the database. Those rows
// must be unlocked before obsolete type removal. Type removal executes (resource)
bulk delete under the covers,
// and that will deadlock with the rows locked by the type update (at least in
oracle) if performed in the same
// transaction. Furthermore, as mentioned, obsolete type removal removes resources
of the obsolete type. We
// need to avoid an umbrella transaction for the type removal because large
inventories of obsolete resources
// will generate very large transactions. Potentially resulting in timeouts or other
issues.
- @RequiredPermission(Permission.MANAGE_SETTINGS)
@TransactionAttribute(TransactionAttributeType.NEVER)
- public void registerPlugin(Subject subject, Plugin plugin, PluginDescriptor
pluginDescriptor, File pluginFile,
- boolean forceUpdate) throws Exception {
- log.debug("Registering " + plugin);
+ public void registerPlugin(Plugin plugin, PluginDescriptor pluginDescriptor, File
pluginFile,
+ boolean forceUpdate) throws Exception {
+ log.debug("Registering " + plugin + "...");
long startTime = System.currentTimeMillis();
- boolean newOrUpdated = pluginMgr.installPluginJar(subject, plugin,
pluginDescriptor, pluginFile);
+ boolean newOrUpdated = pluginMgr.installPluginJar(plugin, pluginDescriptor,
pluginFile);
boolean typesUpdated = pluginMgr.registerPluginTypes(plugin.getName(),
pluginDescriptor, newOrUpdated,
forceUpdate);
@@ -365,22 +364,21 @@ public class PluginManagerBean implements PluginManagerLocal {
log.debug("Plugin [" + extPluginName
+ "] will be re-registered because it embeds types from
plugin [" + plugin.getName() + "]");
pluginMgr.registerPluginTypes(extPluginName, extPluginDescriptor,
false, true);
- resourceMetadataManager.removeObsoleteTypes(subject, extPluginName,
metadataManager);
+ resourceMetadataManager.removeObsoleteTypes(subjectMgr.getOverlord(),
extPluginName, metadataManager);
}
}
// now remove any obsolete types from the newly registered plugin
- resourceMetadataManager.removeObsoleteTypes(subject, plugin.getName(),
metadataManager);
+ resourceMetadataManager.removeObsoleteTypes(subjectMgr.getOverlord(),
plugin.getName(), metadataManager);
}
long endTime = System.currentTimeMillis();
log.debug("Finished registering " + plugin + " in " +
(endTime - startTime) + " ms");
}
- @RequiredPermission(Permission.MANAGE_SETTINGS)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
- public boolean installPluginJar(Subject subject, Plugin newPlugin, PluginDescriptor
pluginDescriptor,
- File pluginFile) throws Exception {
+ public boolean installPluginJar(Plugin newPlugin, PluginDescriptor pluginDescriptor,
File pluginFile)
+ throws Exception {
Plugin existingPlugin = null;
boolean newOrUpdated = false;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerLocal.java
index 3ee593e..7a36305 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerLocal.java
@@ -122,9 +122,8 @@ public interface PluginManagerLocal {
* @param metadata The plugin descriptor file
* @param pluginFile the actual plugin file whose content will be stored in the
database (will be ignored if null)
* @param forceUpdate if <code>true</code>, the plugin's types will
be updated, even if the plugin hasn't changed since
- * the last time it was registered
*/
- void registerPlugin(Subject subject, Plugin plugin, PluginDescriptor metadata, File
pluginFile, boolean forceUpdate)
+ void registerPlugin(Plugin plugin, PluginDescriptor metadata, File pluginFile,
boolean forceUpdate)
throws Exception;
/** Exists only to for transactional boundary reasons. Not for general consumption.
*/
@@ -132,7 +131,7 @@ public interface PluginManagerLocal {
boolean forceUpdate) throws Exception;
/** Exists only for transactional boundary reasons. Not for general consumption. */
- boolean installPluginJar(Subject subject, Plugin newPlugin, PluginDescriptor
pluginDescriptor, File pluginFile)
+ boolean installPluginJar(Plugin newPlugin, PluginDescriptor pluginDescriptor, File
pluginFile)
throws Exception;
/**
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
index c6180fc..b8b426e 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
@@ -529,7 +529,7 @@ public class DatabaseAndFilePluginDeploymentTest extends
AbstractEJB3Test {
pluginDup.setVersion(plugin.getVersion());
PluginDescriptor pluginDescriptor =
this.testPluginDescriptors.get(pluginId);
File localPluginFile = this.testPluginFiles.get(pluginId);
- pluginMgr.registerPlugin(subjectManager.getOverlord(), pluginDup,
pluginDescriptor, localPluginFile, false);
+ pluginMgr.registerPlugin(pluginDup, pluginDescriptor, localPluginFile,
false);
}
return;
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
index bade273..71dc3a8 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
@@ -163,7 +163,7 @@ public class MetadataBeanTest extends AbstractEJB3Test {
SubjectManagerLocal subjectMgr = LookupUtil.getSubjectManager();
PluginManagerLocal pluginMgr = LookupUtil.getPluginManager();
- pluginMgr.registerPlugin(subjectMgr.getOverlord(), plugin, pluginDescriptor,
null, true);
+ pluginMgr.registerPlugin(plugin, pluginDescriptor, null, true);
pluginIds.add(plugin.getId());
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
index 55f47b8..a564aca 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
@@ -190,7 +190,7 @@ public class UpdatePluginMetadataTestBase extends AbstractEJB3Test {
testPlugin.setVersion(descriptor.getVersion());
}
try {
- pluginMgr.registerPlugin(getOverlord(), testPlugin, descriptor, null, true);
+ pluginMgr.registerPlugin(testPlugin, descriptor, null, true);
} catch (Throwable t) {
t.printStackTrace();
throw new RuntimeException(t);
commit a4b6506d915ea2ef26ff92005c46f0d6947eee7c
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 1 14:33:07 2012 -0400
[Bug 827150 - Dashboard portlets left running queries in background]
There were a few issues here.
First, whenever the dash was re-built (when the refresh period changed
or a portlet was deleted, and maybe other scenarios) old portlets may have been
left with stale references, leaving them around, undrawn, but for auto-refresh
portlets, still querying the server at their refresh intervals. Note
that this happens *even when* proper destroy() calls have been made.
Second, we had protection in place not to refresh hidden portlets, but
undrawn/visible portlets (like the ones in this scenario) still refreshed. So,
I beefed up that check just to block backend queries in a similar situation.
Third, we shouldn't even have been rebuilding the dash when changing the
refresh interval, the refresh period update was already being applied to the
existing portlets. So, stopped that from happening. This may have actually solved a
different problem I've noticed, a double-rendering of the dash on he very
first login for a user. I think because we set the refresh period for
the first time.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
index 00e51ac..8f0ca51 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
@@ -38,6 +38,7 @@ public class AutoRefreshPortletUtil {
//cancel any existing timer
if (null != refreshTimer) {
refreshTimer.cancel();
+ refreshTimer = null;
}
if (refreshInterval >= MeasurementUtility.MINUTES) {
@@ -48,7 +49,9 @@ public class AutoRefreshPortletUtil {
// if the portlet is already refreshing or if the portlet is not
currently on screen then
// don't bother doing the work. this protects against unnecessary
or unwanted db queries
// being performed in the background.
- if (!autoRefreshPortlet.isRefreshing() &&
autoRefreshPortletCanvas.isVisible()) {
+ if (!autoRefreshPortlet.isRefreshing() &&
autoRefreshPortletCanvas.isDrawn()
+ && autoRefreshPortletCanvas.isVisible()) {
+
autoRefreshPortlet.refresh();
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index ac85aad..6c6544c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -196,6 +196,8 @@ public class DashboardView extends LocatableVLayout {
portalLayout.destroy();
portalLayout = null;
+ portletWindows.clear();
+
buildPortlets();
}
@@ -548,7 +550,6 @@ public class DashboardView extends LocatableVLayout {
}
private void loadPortletWindows() {
-
for (int i = 0; i < storedDashboard.getColumns(); i++) {
for (DashboardPortlet storedPortlet : storedDashboard.getPortlets(i)) {
String locatorId = getPortletLocatorId(portalLayout, storedPortlet);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
index fcc65b4..a68c1ae 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
@@ -78,7 +78,9 @@ public class PortalColumn extends VStack {
@Override
public void destroy() {
+ removeFromParent();
SeleniumUtility.destroyMembers(this);
+
super.destroy();
}
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
index a3aff3a..9c10889 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
@@ -116,10 +116,6 @@ public abstract class AbstractRecentAlertsPortlet extends
AlertHistoryView imple
return refreshTimer;
}
- public void setRefreshTimer(Timer refreshTimer) {
- this.refreshTimer = refreshTimer;
- }
-
public PortletWindow getPortletWindow() {
return portletWindow;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
index 09279cd..4847085 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
@@ -64,8 +64,12 @@ public class UserPreferences {
private static ArrayList<String> preferencesThatShouldNotCauseRefresh;
static {
preferencesThatShouldNotCauseRefresh = new ArrayList<String>();
+ // this is auto-set while navigating around and does not affect the current page
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCES);
+ // this is auto-set while navigating around and does not affect the current page
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCE_GROUPS);
+ // this update is already applied to current portlets by the dashboard impl
+
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.PAGE_REFRESH_PERIOD);
}
public UserPreferences(Subject subject) {
commit ba758053aebffb25af2f35fab27a49ee1a942258
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Jun 1 10:11:31 2012 -0500
[BZ 826066] Path resource has now templates and a property to allow users to create
all four types.
Also, updated the code for templated AS7 resources to take into account either name or
type can be templated.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java
index a289a1a..dad90bc 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java
@@ -30,7 +30,7 @@ import org.rhq.core.pluginapi.inventory.CreateResourceReport;
* Component class for HornetQ related stuff
* @author Heiko W. Rupp
*/
-public class HornetQComponent extends BaseComponent {
+public class HornetQComponent extends TemplatedSubResourcesComponent {
@Override
public CreateResourceReport createResource(CreateResourceReport report) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
new file mode 100644
index 0000000..ed07a8a
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedComponent.java
@@ -0,0 +1,90 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+public class TemplatedComponent extends BaseComponent<ResourceComponent<?>>
{
+
+ private final static String TYPE_CONFIGURATION = "__type";
+ private final static String NAME_CONFIGURATION = "__name";
+
+ @Override
+ public Configuration loadResourceConfiguration() throws Exception {
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+
+ if (configDef.getDefaultTemplate().getConfiguration().get(TYPE_CONFIGURATION) !=
null) {
+ //__type is a fake property, do not attempt to load it from the managed
server
+ configDef.getPropertyDefinitions().remove(TYPE_CONFIGURATION);
+ ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(configDef,
getASConnection(), address);
+ Configuration configuration = delegate.loadResourceConfiguration();
+
+ //manually load type based on the resource path
+ PropertySimple pathProperty = (PropertySimple)
context.getPluginConfiguration().get("path");
+ String type = pathProperty.getStringValue();
+ type = type.substring(path.lastIndexOf(',') + 1,
type.lastIndexOf('='));
+ configuration.put(new PropertySimple(TYPE_CONFIGURATION, type));
+
+ return configuration;
+ } else if
(configDef.getDefaultTemplate().getConfiguration().get(NAME_CONFIGURATION) != null) {
+ //__name is a fake property, do not attempt to load it from the managed
server
+ configDef.getPropertyDefinitions().remove(NAME_CONFIGURATION);
+ ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(configDef,
getASConnection(), address);
+ Configuration configuration = delegate.loadResourceConfiguration();
+
+ //manually load name based on the resource path
+ PropertySimple pathProperty = (PropertySimple)
context.getPluginConfiguration().get("path");
+ String name = pathProperty.getStringValue();
+ name = name.substring(name.lastIndexOf('=') + 1);
+ configuration.put(new PropertySimple(NAME_CONFIGURATION, name));
+
+ return configuration;
+ }
+
+ return super.loadResourceConfiguration();
+ }
+
+ @Override
+ public void updateResourceConfiguration(ConfigurationUpdateReport report) {
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+
+ if (configDef.getDefaultTemplate().getConfiguration().get(TYPE_CONFIGURATION) !=
null) {
+ //__type is a fake property, do not attempt to save it.
+ configDef.getPropertyDefinitions().remove(TYPE_CONFIGURATION);
+ report.getConfiguration().remove(TYPE_CONFIGURATION);
+ } else if
(configDef.getDefaultTemplate().getConfiguration().get(NAME_CONFIGURATION) != null) {
+ //__name is a fake property, do not attempt to save it.
+ configDef.getPropertyDefinitions().remove(NAME_CONFIGURATION);
+ report.getConfiguration().remove(NAME_CONFIGURATION);
+ }
+
+ ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(configDef,
getASConnection(), address);
+ delegate.updateResourceConfiguration(report);
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponent.java
new file mode 100644
index 0000000..0a9cf23
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/TemplatedSubResourcesComponent.java
@@ -0,0 +1,72 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+public class TemplatedSubResourcesComponent extends
BaseComponent<ResourceComponent<?>> {
+
+ private final static String TYPE_CONFIGURATION = "__type";
+ private final static String NAME_CONFIGURATION = "__name";
+
+ @Override
+ public CreateResourceReport createResource(CreateResourceReport report) {
+ if (report.getResourceConfiguration().get(TYPE_CONFIGURATION) != null) {
+ //Need to munge the report and configuration definition for with type in
configuration:
+ //1) Remove type from the properties and configuration.
+ //2) Update path to the selected type.
+ ConfigurationDefinition configDef =
report.getResourceType().getResourceConfigurationDefinition();
+ configDef.getPropertyDefinitions().remove(TYPE_CONFIGURATION);
+ CreateResourceDelegate delegate = new CreateResourceDelegate(configDef,
getASConnection(), address);
+
+ Configuration configuration = report.getResourceConfiguration();
+ PropertySimple typeProperty = (PropertySimple)
configuration.get(TYPE_CONFIGURATION);
+ configuration.remove(TYPE_CONFIGURATION);
+ report.getPluginConfiguration().put(new PropertySimple("path",
typeProperty.getStringValue()));
+
+ return delegate.createResource(report);
+ } else if (report.getResourceConfiguration().get(NAME_CONFIGURATION) != null) {
+ //Need to munge the report and configuration definition for with name in
configuration:
+ //1) Remove name from the properties and configuration.
+ //2) Update user specified name to the implicitly selected name.
+ ConfigurationDefinition configDef =
report.getResourceType().getResourceConfigurationDefinition();
+ configDef.getPropertyDefinitions().remove(NAME_CONFIGURATION);
+ CreateResourceDelegate delegate = new CreateResourceDelegate(configDef,
getASConnection(), address);
+
+ Configuration configuration = report.getResourceConfiguration();
+ PropertySimple nameProperty = (PropertySimple)
configuration.get(NAME_CONFIGURATION);
+ configuration.remove(NAME_CONFIGURATION);
+ report.setUserSpecifiedResourceName(nameProperty.getStringValue());
+
+ return delegate.createResource(report);
+ } else {
+ return super.createResource(report);
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadPoolComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadPoolComponent.java
deleted file mode 100644
index 7fd478c..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadPoolComponent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright 2012, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-package org.rhq.modules.plugins.jbossas7;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
-import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
-
-/**
- * @author Stefan Negrea
- *
- */
-public class ThreadPoolComponent extends BaseComponent<ResourceComponent<?>>
{
-
- @Override
- public Configuration loadResourceConfiguration() throws Exception {
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- //type is a fake property, do not attempt to load it from the managed server
- configDef.getPropertyDefinitions().remove("type");
- ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(configDef,
getASConnection(), address);
- Configuration configuration = delegate.loadResourceConfiguration();
-
- //manually load type based on the resource path
- PropertySimple pathProperty = (PropertySimple)
context.getPluginConfiguration().get("path");
- String type = pathProperty.getStringValue();
- type = type.substring(path.lastIndexOf(',') + 1,
type.lastIndexOf('='));
- configuration.put(new PropertySimple("type", type));
-
- return configuration;
- }
-
- @Override
- public void updateResourceConfiguration(ConfigurationUpdateReport report) {
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- //type is a fake property, do not attempt to save it.
- configDef.getPropertyDefinitions().remove("type");
- ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(configDef,
getASConnection(), address);
-
- //type is a fake property, do not attempt to save it.
- report.getConfiguration().remove("type");
- delegate.updateResourceConfiguration(report);
- }
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadsComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadsComponent.java
deleted file mode 100644
index a215398..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ThreadsComponent.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright 2012, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-package org.rhq.modules.plugins.jbossas7;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
-import org.rhq.core.pluginapi.inventory.CreateResourceReport;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
-
-/**
- * @author Stefan Negrea
- *
- */
-public class ThreadsComponent extends BaseComponent<ResourceComponent<?>> {
-
- @Override
- public CreateResourceReport createResource(CreateResourceReport report) {
- if (report.getResourceType().getName().equals("ThreadPool")) {
- //Need to munge the report and configuration definition for ThreadPools:
- //1) Remove type from the properties and configuration.
- //2) Update path to the selected thread pool type.
- ConfigurationDefinition configDef =
report.getResourceType().getResourceConfigurationDefinition();
- configDef.getPropertyDefinitions().remove("type");
- CreateResourceDelegate delegate = new CreateResourceDelegate(configDef,
getASConnection(), address);
-
- Configuration configuration = report.getResourceConfiguration();
- PropertySimple threadPoolType = (PropertySimple)
configuration.get("type");
- configuration.remove("type");
- report.getPluginConfiguration().put(new PropertySimple("path",
threadPoolType.getStringValue()));
-
- return delegate.createResource(report);
- } else {
- return super.createResource(report);
- }
- }
-
-}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index dd36061..ec17e84 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -2931,7 +2931,7 @@
<service name="Threads (Managed Server)"
discovery="SubsystemDiscovery"
- class="ThreadsComponent"
+ class="TemplatedSubResourcesComponent"
singleton="true">
<plugin-configuration>
@@ -2963,8 +2963,9 @@
<service name="ThreadPool (Managed Server)"
discovery="SubsystemDiscovery"
- class="ThreadPoolComponent"
- description="A thread pool executor">
+ class="TemplatedComponent"
+ description="A thread pool executor"
+ createDeletePolicy="neither">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
@@ -2978,15 +2979,15 @@
<metric property="task-count" description="The approximate
total number of tasks that have ever been scheduled for execution."/>
<resource-configuration>
- <c:map-property name="keepalive-time" readOnly="true"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
- <c:simple-property name="time" required="true"
readOnly="true" type="long" description="The time"/>
- <c:simple-property name="unit" required="true"
readOnly="true" type="string" description="The time
unit"/>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
readOnly="false" type="long" description="The time"/>
+ <c:simple-property name="unit" required="true"
readOnly="false" type="string" description="The time
unit"/>
</c:map-property>
- <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="true"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
- <c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
<c:property-options>
<c:option value="bounded-queue-thread-pool"/>
<c:option value="queueless-thread-pool"/>
@@ -2995,16 +2996,16 @@
</c:property-options>
</c:simple-property>
<c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="bounded-queue-thread-pool"/>
</c:template>
<c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="queueless-thread-pool"/>
</c:template>
<c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool"/>
</c:template>
<c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="unbounded-queue-thread-pool"/>
</c:template>
</resource-configuration>
</service>
@@ -4614,17 +4615,37 @@
<service name="Path (Managed Server)"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="neither"
- singleton="true">
+ class="TemplatedComponent"
+ createDeletePolicy="neither">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="path=journal-directory"/>
+ <c:simple-property name="path" readOnly="true"
default="path"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
- <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
+ <c:simple-property name="path" required="true"
type="string" readOnly="true" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="true" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
+
+ <c:simple-property name="__name" readOnly="true"
displayName="Path Type" description="Path Type">
+ <c:property-options>
+ <c:option value="journal-directory"/>
+ <c:option value="paging-directory"/>
+ <c:option value="large-messages-directory"/>
+ <c:option value="bindings-directory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Journal Directory" description="The
directory in which the message journal lives. The default is
${jboss.server.data.dir}/messaging/journal.">
+ <c:simple-property name="__name" readOnly="true"
default="journal-directory"/>
+ </c:template>
+ <c:template name="Paging Directory" description="The
directory where page files are stored. The default is
${jboss.server.data.dir}/messaging/paging.">
+ <c:simple-property name="__name" readOnly="true"
default="paging-directory"/>
+ </c:template>
+ <c:template name="Large Messages Directory"
description="The directory in which large messages are stored. The default is
${jboss.server.data.dir}/messaging/largemessages.">
+ <c:simple-property name="__name" readOnly="true"
default="large-messages-directory"/>
+ </c:template>
+ <c:template name="Bindings Directory" description="The
directory in which the bindings journal lives. The default is
${jboss.server.data.dir}/messaging/bindings.">
+ <c:simple-property name="__name" readOnly="true"
default="bindings-directory"/>
+ </c:template>
</resource-configuration>
</service>
@@ -5729,7 +5750,7 @@
<service name="Threads (Profile)"
discovery="SubsystemDiscovery"
- class="ThreadsComponent"
+ class="TemplatedSubResourcesComponent"
singleton="true">
<plugin-configuration>
@@ -5761,7 +5782,7 @@
<service name="ThreadPool (Profile)"
discovery="SubsystemDiscovery"
- class="ThreadPoolComponent"
+ class="TemplatedComponent"
description="A thread pool executor"
createDeletePolicy="both">
@@ -5778,7 +5799,7 @@
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
<c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
<c:property-options>
<c:option value="bounded-queue-thread-pool"/>
<c:option value="queueless-thread-pool"/>
@@ -5787,16 +5808,16 @@
</c:property-options>
</c:simple-property>
<c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="bounded-queue-thread-pool"/>
</c:template>
<c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="queueless-thread-pool"/>
</c:template>
<c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool"/>
</c:template>
<c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="unbounded-queue-thread-pool"/>
</c:template>
</resource-configuration>
</service>
@@ -6659,17 +6680,37 @@
<service name="Path (Profile)"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both"
- singleton="true">
+ class="TemplatedComponent"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="path=journal-directory"/>
+ <c:simple-property name="path" readOnly="true"
default="path"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="path" required="true"
type="string" readOnly="false" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
<c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
+
+ <c:simple-property name="__name" readOnly="true"
displayName="Path Type" description="Path Type">
+ <c:property-options>
+ <c:option value="journal-directory"/>
+ <c:option value="paging-directory"/>
+ <c:option value="large-messages-directory"/>
+ <c:option value="bindings-directory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Journal Directory" description="The
directory in which the message journal lives. The default is
${jboss.server.data.dir}/messaging/journal.">
+ <c:simple-property name="__name" readOnly="true"
default="journal-directory"/>
+ </c:template>
+ <c:template name="Paging Directory" description="The
directory where page files are stored. The default is
${jboss.server.data.dir}/messaging/paging.">
+ <c:simple-property name="__name" readOnly="true"
default="paging-directory"/>
+ </c:template>
+ <c:template name="Large Messages Directory"
description="The directory in which large messages are stored. The default is
${jboss.server.data.dir}/messaging/largemessages.">
+ <c:simple-property name="__name" readOnly="true"
default="large-messages-directory"/>
+ </c:template>
+ <c:template name="Bindings Directory" description="The
directory in which the bindings journal lives. The default is
${jboss.server.data.dir}/messaging/bindings.">
+ <c:simple-property name="__name" readOnly="true"
default="bindings-directory"/>
+ </c:template>
</resource-configuration>
</service>
@@ -10569,7 +10610,7 @@
<service name="Threads"
discovery="SubsystemDiscovery"
- class="ThreadsComponent"
+ class="TemplatedSubResourcesComponent"
singleton="true">
<runs-inside>
@@ -10605,7 +10646,7 @@
<service name="ThreadPool"
discovery="SubsystemDiscovery"
- class="ThreadPoolComponent"
+ class="TemplatedComponent"
description="A thread pool executor"
createDeletePolicy="both">
@@ -10629,7 +10670,7 @@
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
<c:simple-property name="thread-factory" required="false"
type="string" readOnly="false" description="Specifies the name of
a specific thread factory to use to create worker threads. If not defined an appropriate
default thread factory will be used."/>
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
<c:property-options>
<c:option value="bounded-queue-thread-pool"/>
<c:option value="queueless-thread-pool"/>
@@ -10638,16 +10679,16 @@
</c:property-options>
</c:simple-property>
<c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="bounded-queue-thread-pool"/>
</c:template>
<c:template name="Queueless Thread Pool" description="Queueless
Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="queueless-thread-pool"/>
</c:template>
<c:template name="Scheduled Thread Pool" description="Scheduled
Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="scheduled-thread-pool"/>
</c:template>
<c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ <c:simple-property name="__type" readOnly="true"
default="unbounded-queue-thread-pool"/>
</c:template>
</resource-configuration>
</service>
@@ -12674,17 +12715,37 @@
<service name="Path"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both"
- singleton="true">
+ class="TemplatedComponent"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="path=journal-directory"/>
+ <c:simple-property name="path" readOnly="true"
default="path"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="path" required="true"
type="string" readOnly="false" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
<c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
+
+ <c:simple-property name="__name" readOnly="true"
displayName="Path Type" description="Path Type">
+ <c:property-options>
+ <c:option value="journal-directory"/>
+ <c:option value="paging-directory"/>
+ <c:option value="large-messages-directory"/>
+ <c:option value="bindings-directory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Journal Directory" description="The
directory in which the message journal lives. The default is
${jboss.server.data.dir}/messaging/journal.">
+ <c:simple-property name="__name" readOnly="true"
default="journal-directory"/>
+ </c:template>
+ <c:template name="Paging Directory" description="The
directory where page files are stored. The default is
${jboss.server.data.dir}/messaging/paging.">
+ <c:simple-property name="__name" readOnly="true"
default="paging-directory"/>
+ </c:template>
+ <c:template name="Large Messages Directory" description="The
directory in which large messages are stored. The default is
${jboss.server.data.dir}/messaging/largemessages.">
+ <c:simple-property name="__name" readOnly="true"
default="large-messages-directory"/>
+ </c:template>
+ <c:template name="Bindings Directory" description="The
directory in which the bindings journal lives. The default is
${jboss.server.data.dir}/messaging/bindings.">
+ <c:simple-property name="__name" readOnly="true"
default="bindings-directory"/>
+ </c:template>
</resource-configuration>
</service>
commit 965b7d821a28dde377e2696236ffdd1808883cea
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Fri Jun 1 13:44:11 2012 +0200
[BZ 805503 - Recently triggered alerts report does not show resource in details view]
Resource name and resource ancestry form fields have been added.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDetailsView.java
index 361be3c..296b22e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDetailsView.java
@@ -183,6 +183,14 @@ public class AlertDetailsView extends LocatableVLayout implements
BookmarkableVi
StaticTextItem recoveryItem = new StaticTextItem("recovery",
MSG.view_alert_details_field_recovery_info());
recoveryItem.setValue(record.getAttribute("recoveryInfo"));
items.add(recoveryItem);
+
+ StaticTextItem resourceItem = new StaticTextItem("resourceName",
MSG.view_alert_details_field_watched_resource());
+ resourceItem.setValue(record.getAttribute("resourceName"));
+ items.add(resourceItem);
+
+ StaticTextItem resourceAncestryItem = new
StaticTextItem("resourceAncestry",
MSG.view_alert_details_field_resource_ancestry());
+
resourceAncestryItem.setValue(record.getAttribute("resourceAncestry"));
+ items.add(resourceAncestryItem);
form.setItems(items.toArray(new FormItem[items.size()]));
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index eeeefb0..d1a9b90 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -922,6 +922,8 @@ view_alert_definitions_update_success = Alert definition successfully
updated
view_alert_details_field_ack_at = Acknowledged at
view_alert_details_field_ack_by = Acknowledged by
view_alert_details_field_recovery_info = Recovery Info
+view_alert_details_field_resource_ancestry = Resource Ancestry
+view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = Failed to fetch alert details
view_alerts_ack_confirm = Acknowledge the selected alert(s)?
view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
@@ -2016,8 +2018,8 @@ widget_resourceFactoryWizard_infoStepName = Resource Information
widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
widget_resourceFactoryWizard_namePrompt = New Resource Name
widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). The default timeout is
set to 60 seconds. Useful for particularly long create actions, like deployment of a large
application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
+widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). The default timeout is
set to 60 seconds. Useful for particularly long create actions, like deployment of a large
application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = Failed to upload file
widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 8797465..88b9e87 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -18,7 +18,6 @@
# * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# */
#
-
# suppress inspection "UnusedProperty" for whole file
#
# RHQ GUI i18n Messages - Locale: CS
@@ -941,6 +940,8 @@ view_alert_definitions_update_success = Úspěšně změněna definice
výstrahy
view_alert_details_field_ack_at = Potvrzeno v
view_alert_details_field_ack_by = Potvrzeno kým
view_alert_details_field_recovery_info = Informace o obnově
+view_alert_details_field_resource_ancestry = Původ zdroje
+view_alert_details_field_watched_resource = Sledovaný zdroj
view_alert_details_loadFailed = Nepodařilo se načíst výstrahy
view_alerts_ack_confirm = Potvrdit vybrané výstrahy?
view_alerts_ack_confirm_all = Potvrdit všechny výstrahy tohoto zdroje?
@@ -2035,8 +2036,8 @@ widget_resourceFactoryWizard_infoStepName = Informace o zdroji
widget_resourceFactoryWizard_infoStep_loadFail = Nepodařilo se získat dostupné
architektury
widget_resourceFactoryWizard_namePrompt = Nové jméno zdroje
widget_resourceFactoryWizard_templatePrompt = Šablona pro nastavení připojení
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
##widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = Nepodařilo se nahrát soubor
widget_resourceFactoryWizard_uploadFileStepName = Nahrát obsah souboru zdroje
widget_resourceFactoryWizard_uploadInProgress = Upload právě probíhá... Může to trvat
několik minut.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index e47bcdb..cfde9eb 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -803,6 +803,8 @@ view_alert_definitions_update_success = Alarm-Definition erfolgreich
aktualisier
view_alert_details_field_ack_at = Bestätigt um
view_alert_details_field_ack_by = Bestätigt durch
view_alert_details_field_recovery_info = Info zur Erholung
+##view_alert_details_field_resource_ancestry = Resource Ancestry
+##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = Laden der Details für den Alarm fehlgeschlagen
view_alerts_ack_confirm = Die ausgewählten Alarme bestätigen?
view_alerts_ack_confirm_all = Alle Alarme dieser Quelle bestätigen?
@@ -1777,8 +1779,8 @@ widget_resourceFactoryWizard_infoStepName = Information über die
Ressource
widget_resourceFactoryWizard_infoStep_loadFail = Konnte die verfügbaren Architekturen
nicht ermitteln
widget_resourceFactoryWizard_namePrompt = Name der neuen Ressource
widget_resourceFactoryWizard_templatePrompt = Vorlage für die Verbindungseinstellungen
-widget_resourceFactoryWizard_uploadFailure = Konnte die Datei nicht hochladen
##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = Konnte die Datei nicht hochladen
###widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
##widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
##widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index ee72bd8..b5bc116 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -916,6 +916,8 @@ view_alert_definitions_update_success = アラート定義の更新に成功し
view_alert_details_field_ack_at = 次の場所で確認済みです
view_alert_details_field_ack_by = 次の人によって確認済みです
view_alert_details_field_recovery_info = リカバリ情報
+##view_alert_details_field_resource_ancestry = Resource Ancestry
+##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = アラートの詳細を取り出すのに失敗しました
view_alerts_ack_confirm = 選択されたアラートを確認しますか?
view_alerts_ack_confirm_all = このソースからすべてのアラートを確認しますか?
@@ -2005,8 +2007,8 @@ widget_resourceFactoryWizard_infoStepName = リソース情報
widget_resourceFactoryWizard_infoStep_loadFail = アーキテクチャーを利用可能にするのに失敗しました
widget_resourceFactoryWizard_namePrompt = 新規リソース名
widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプレート
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
###widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = ファイルアップロードの失敗
widget_resourceFactoryWizard_uploadFileStepName = リソースコンテントファイルのアップロード
widget_resourceFactoryWizard_uploadInProgress = アップロードは処理中です...
大きなファイルを配布するには数分かかることもあります。
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index c8afbd8..91345f5 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -923,6 +923,8 @@ view_alert_details_breadcrumb = Detalhes
view_alert_details_field_ack_at = Verificado em
view_alert_details_field_ack_by = Verificado por
view_alert_details_field_recovery_info = Informa\u00E7\u00E3o de Recupera\u00E7\u00E3o
+##view_alert_details_field_resource_ancestry = Resource Ancestry
+##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = Falha ao recuperar detalhes do alerta
view_alerts_ack_confirm = Confirma o(s) alerta(s) selecionado(s)?
view_alerts_ack_confirm_all = Confirma todos os alertas?
@@ -2118,8 +2120,8 @@ widget_resourceFactoryWizard_infoStepName = Informa\u00E7\u00E3o do
Recurso
widget_resourceFactoryWizard_infoStep_loadFail = Falha ao recuperar Arquiteturas
dispon\u00EDveis.
widget_resourceFactoryWizard_namePrompt = Novo Nome do Recurso
widget_resourceFactoryWizard_templatePrompt = Modelo de Propriedades para Conex\u00E3o
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
##widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = Falha ao realizar o upload do arquivo
widget_resourceFactoryWizard_uploadFileStepName = Upload do Arquivo do Recurso
widget_resourceFactoryWizard_uploadInProgress = Upload em andamento... Esse processo pode
demorar alguns minutos para ser finalizado em caso de arquivos muito grandes.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 2692287..361f831 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2445,5 +2445,7 @@ view_admin_downloads_cli_link_value = Загрузить CLI {0} ({1})
view_admin_downloads_cli_loadError = Не удалось получить версию CLI
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = Версия CLI
+##view_alert_details_field_resource_ancestry = Resource Ancestry
+##view_alert_details_field_watched_resource = Watched Resource
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
##view_messageCenter_messageRootCause = Root Cause
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 9453ba2..08e15fd 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -910,6 +910,8 @@ view_alert_definitions_update_success =
\u544a\u8b66\u5b9a\u4e49\u66f4\u65b0\u62
view_alert_details_field_ack_at = \u786e\u8ba4\u4e8e
view_alert_details_field_ack_by = \u786e\u8ba4\u8005
view_alert_details_field_recovery_info = \u8fd8\u539f\u4fe1\u606f
+##view_alert_details_field_resource_ancestry = Resource Ancestry
+##view_alert_details_field_watched_resource = Watched Resource
view_alert_details_loadFailed = \u53d6\u5f97\u544a\u8b66\u8be6\u60c5\u5931\u8d25
view_alerts_ack_confirm = \u786e\u8ba4\u9009\u62e9\u7684\u544a\u8b66(s)?
view_alerts_ack_confirm_all =
\u4ece\u8fd9\u4e2a\u6e90\u4e0a\u786e\u8ba4\u6240\u6709\u544a\u8b66?
commit b80b3c15a5912d5edf8b6b15d91a74accbbf63dc
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 31 22:25:14 2012 -0400
an IRC bot for #rhq
diff --git a/etc/rhq-ircBot/pom.xml b/etc/rhq-ircBot/pom.xml
new file mode 100644
index 0000000..c747084
--- /dev/null
+++ b/etc/rhq-ircBot/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.rhq.etc</groupId>
+ <artifactId>rhq-ircbot</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <name>RHQ IRC Bot</name>
+ <description>an IRC bot for doing helpful stuff on the Freenode #rhq
channel</description>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.pircbotx</groupId>
+ <artifactId>pircbotx</artifactId>
+ <version>1.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.j2bugzilla</groupId>
+ <artifactId>j2bugzilla</artifactId>
+ <version>2.0</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.5</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ <verbose>true</verbose>
+ <proc>none</proc>
+ <!-- disable annotation processing -->
+ <showWarnings>true</showWarnings>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ <archive>
+ <manifest>
+ <mainClass>org.rhq.etc.ircbot.RhqIrcBot</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <!-- this is used for inheritance merges -->
+ <phase>package</phase>
+ <!-- bind to the packaging phase -->
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+
+
+ </build>
+
+</project>
+
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
new file mode 100644
index 0000000..681707c
--- /dev/null
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -0,0 +1,136 @@
+package org.rhq.etc.ircbot;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.j2bugzilla.base.Bug;
+import com.j2bugzilla.base.BugzillaConnector;
+import com.j2bugzilla.base.BugzillaException;
+import com.j2bugzilla.rpc.GetBug;
+
+import org.apache.xmlrpc.XmlRpcException;
+import org.pircbotx.PircBotX;
+import org.pircbotx.User;
+import org.pircbotx.hooks.ListenerAdapter;
+import org.pircbotx.hooks.events.DisconnectEvent;
+import org.pircbotx.hooks.events.MessageEvent;
+
+/**
+ * An IRC bot for doing helpful stuff on the Freenode #rhq channel.
+ *
+ * @author Ian Springer
+ */
+public class RhqIrcBot extends ListenerAdapter {
+
+ private static final Pattern BUG_PATTERN = Pattern.compile("(?i)(bz|bug)[
]*(\\d{6,7})");
+
+ private static final Set<String> JON_DEVS = new HashSet<String>();
+ static {
+ JON_DEVS.add("ccrouch");
+ JON_DEVS.add("ips");
+ JON_DEVS.add("jkremser");
+ JON_DEVS.add("jsanda");
+ JON_DEVS.add("jshaughn");
+ JON_DEVS.add("lkrejci");
+ JON_DEVS.add("mazz");
+ JON_DEVS.add("mtho11");
+ JON_DEVS.add("pilhuhn");
+ JON_DEVS.add("spinder");
+ JON_DEVS.add("stefan_n");
+ }
+
+ private BugzillaConnector bzConnector = new BugzillaConnector();
+ private Map<Integer, Long> bugLogTimestamps = new HashMap<Integer,
Long>();
+
+ @Override
+ public void onMessage(MessageEvent event) throws Exception {
+ String message = event.getMessage();
+
+ Matcher bugMatcher = BUG_PATTERN.matcher(message);
+ while (bugMatcher.find()) {
+ int bugId = Integer.valueOf(bugMatcher.group(2));
+ GetBug getBug = new GetBug(bugId);
+ try {
+ bzConnector.executeMethod(getBug);
+ } catch (Exception e) {
+ bzConnector = new BugzillaConnector();
+ bzConnector.connectTo("https://bugzilla.redhat.com");
+ try {
+ bzConnector.executeMethod(getBug);
+ } catch (BugzillaException e1) {
+ //e1.printStackTrace();
+ Throwable cause = e1.getCause();
+ String details = (cause instanceof XmlRpcException) ?
cause.getMessage() : e1.getMessage();
+ event.getBot().sendMessage(event.getChannel(), "Failed to access
BZ " + bugId + ": " + details);
+ continue;
+ }
+ }
+ Bug bug = getBug.getBug();
+ if (bug != null) {
+ String product = bug.getProduct();
+ if (product.equals("RHQ Project")) {
+ product = "RHQ";
+ } else if (product.equals("JBoss Operations Network")) {
+ product = "JON";
+ }
+ Long timestamp = bugLogTimestamps.get(bugId);
+ if ((timestamp == null) || ((System.currentTimeMillis() - timestamp) >
(5 * 60 * 1000L))) {
+ event.getBot().sendMessage(event.getChannel(), "BZ " +
bugId + " [product=" + product
+ + ", priority=" + bug.getPriority() + ",
status=" + bug.getStatus() + "] "
+ + bug.getSummary() + " [
https://bugzilla.redhat.com/" + bugId + " ]");
+ }
+ bugLogTimestamps.put(bugId, System.currentTimeMillis());
+ } else {
+ event.getBot().sendMessage(event.getChannel(), "BZ " + bugId +
" does not exist.");
+ }
+ }
+
+ if (message.matches(".*\\b(jon-team|jboss-on-team)\\b.*")) {
+ Set<User> users = event.getBot().getUsers(event.getChannel());
+ StringBuilder presentJonDevs = new StringBuilder();
+ for (User user : users) {
+ String nick = user.getNick();
+ if (JON_DEVS.contains(nick) &&
!nick.equals(event.getUser().getNick())) {
+ presentJonDevs.append(nick).append(' ');
+ }
+ }
+ event.getBot().sendMessage(event.getChannel(), presentJonDevs + ": see
message from "
+ + event.getUser().getNick() + " above");
+ }
+ }
+
+ @Override
+ public void onDisconnect(DisconnectEvent disconnectEvent) throws Exception {
+ boolean connected = false;
+ while (!connected) {
+ Thread.sleep(60 * 1000L); // 1 minute
+ try {
+ disconnectEvent.getBot().reconnect();
+ connected = true;
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ PircBotX bot = new PircBotX();
+
+ bot.setName("rhq-bot");
+ bot.setVersion("1.0");
+ bot.setFinger("#rhq IRC bot (source code in RHQ git under
etc/rhq-ircBot/)");
+
+ bot.setVerbose(true);
+ bot.getListenerManager().addListener(new RhqIrcBot());
+ bot.setSocketTimeout(1 * 60 * 1000); // 1 minute
+
+ // TODO: Try other Freenode IRC servers if this one is down.
+ bot.connect("irc.freenode.net");
+ bot.joinChannel("#rhq");
+ }
+
+}
commit 8f9015478b2fe9855111d0d4f0dce1c2dbb62cd1
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 31 21:05:14 2012 -0400
add support for running AS7 itests against EAP 6.0 CR1
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 31a4c3b..e9f877a 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -319,6 +319,22 @@
</properties>
</profile>
+ <profile>
+ <id>eap600CR1.itest.setup</id>
+
+ <activation>
+ <property>
+ <name>as7.version</name>
+ <value>6.0.0.CR1</value>
+ </property>
+ </activation>
+
+ <properties>
+ <as7.url>Please set the as7.url system property to the location of the EAP
${as7.version} distribution zipfile.</as7.url>
+
<jboss-as-arquillian-container-managed.version>7.1.1.Final</jboss-as-arquillian-container-managed.version>
+ </properties>
+ </profile>
+
<!-- Activate this profile to run the integration tests (these can take a while to
complete). -->
<!-- activate with -Das7.itest. See also
http://rhq-project.org/display/RHQ/Notes#Notes-IntegrationTests -->
<profile>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
index 0ce32c7..a1e26e2 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
@@ -67,6 +67,7 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER6",
"7.1.1.Final-redhat-1");
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER7",
"7.1.1.Final-redhat-1");
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER8",
"7.1.2.Final-redhat-1");
+ EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.CR1",
"7.1.2.Final-redhat-1");
}
private static final String RELEASE_VERSION_TRAIT_NAME =
"_skm:release-version";
commit 522ff41ba7077e18f43cc053e6ec1eb9cb63fce5
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu May 31 19:19:39 2012 -0400
[BZ 824129] Do not treat quotes as ordinary characters
I am not sure why but we were treating both single and double quotes as
ordinary word character instead of quote or string delimiters.
diff --git
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index 308d6c1..2d0e41a 100644
---
a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++
b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -22,9 +22,6 @@
*/
package org.rhq.enterprise.client;
-import gnu.getopt.Getopt;
-import gnu.getopt.LongOpt;
-
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -35,6 +32,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.enterprise.client.commands.ClientCommand;
+import org.rhq.enterprise.client.commands.ScriptCommand;
+import org.rhq.enterprise.client.script.CommandLineParseException;
+import org.rhq.enterprise.clientapi.RemoteClient;
+
+import gnu.getopt.Getopt;
+import gnu.getopt.LongOpt;
import jline.ArgumentCompletor;
import jline.Completor;
import jline.ConsoleReader;
@@ -42,12 +47,6 @@ import jline.MultiCompletor;
import jline.SimpleCompletor;
import mazz.i18n.Msg;
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.enterprise.client.commands.ClientCommand;
-import org.rhq.enterprise.client.commands.ScriptCommand;
-import org.rhq.enterprise.client.script.CommandLineParseException;
-import org.rhq.enterprise.clientapi.RemoteClient;
-
/**
* @author Greg Hinkle
* @author Simeon Pinder
@@ -411,13 +410,14 @@ public class ClientMain {
List<String> args = new ArrayList<String>();
boolean keep_going = true;
- // we don't want to parse numbers and we want ' to be a normal word
- // character
strtok.ordinaryChars('0', '9');
strtok.ordinaryChar('.');
strtok.ordinaryChar('-');
- strtok.ordinaryChar('\'');
- strtok.wordChars(33, 127);
+ strtok.quoteChar('\'');
+ strtok.quoteChar('"');
+ strtok.wordChars(33, 33);
+ strtok.wordChars(35, 38);
+ strtok.wordChars(40, 127);
// parse the command line
while (keep_going) {
@@ -431,7 +431,7 @@ public class ClientMain {
if (nextToken == java.io.StreamTokenizer.TT_WORD) {
args.add(strtok.sval);
- } else if (nextToken == '\"') {
+ } else if (nextToken == '\"' || nextToken == '\'')
{
args.add(strtok.sval);
} else if ((nextToken == java.io.StreamTokenizer.TT_EOF) || (nextToken ==
java.io.StreamTokenizer.TT_EOL)) {
keep_going = false;
commit a92b7bcace3265964f87fb656b45cf3102ad8708
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 31 17:53:02 2012 -0400
[BZ 827203] prevent infinite auto-switching between auto-group nodes occurs after
fast-clicking between two auto-group nodes
(
https://bugzilla.redhat.com/show_bug.cgi?id=827203)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index ff99825..694f8b6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -1,6 +1,6 @@
/*
-fcontext * RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -92,7 +92,6 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.ResourceGro
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.ResourceGroupDetailView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceTreeDatasource.AutoGroupTreeNode;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.ResourceTreeDatasource.ResourceTreeNode;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryCreateWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryImportWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.Log;
@@ -182,17 +181,30 @@ public class ResourceTreeView extends LocatableVLayout {
AutoGroupTreeNode agNode = (AutoGroupTreeNode) selectedRecord;
selectedNodeId = agNode.getID();
- getAutoGroupBackingGroup(agNode, new
AsyncCallback<ResourceGroup>() {
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_selection(),
- caught);
- }
+ // [BZ 827203] Disable this view to prevent fast-click issues. It
will get re-enabled when
+ // the detail resource or group view is done with its
async init and calls
+ // notifyViewRenderedListeners() on itself.
+ disable();
- public void onSuccess(ResourceGroup result) {
- renderAutoGroup(result);
- }
- });
+ try {
+ getAutoGroupBackingGroup(agNode, new
AsyncCallback<ResourceGroup>() {
+ public void onSuccess(ResourceGroup result) {
+ renderAutoGroup(result);
+ }
+
+ public void onFailure(Throwable caught) {
+ // Make sure to re-enable ourselves.
+ enable();
+
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_selection(),
+ caught);
+ }
+ });
+ } catch (RuntimeException re) {
+ // Make sure to re-enable ourselves.
+ enable();
+
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_selection(), re);
+ }
} else {
// TODO: probably clicked on a subcategory, do we need a
message?
treeGrid.deselectRecord(selectedRecord);
@@ -246,7 +258,7 @@ public class ResourceTreeView extends LocatableVLayout {
private void getAutoGroupBackingGroup(final AutoGroupTreeNode agNode, final
AsyncCallback<ResourceGroup> callback) {
final ResourceGroupGWTServiceAsync resourceGroupService =
GWTServiceLookup.getResourceGroupService();
- // get the children tree nodes and build a child resourceId array
+ // get the children tree nodes and build a child resourceId array
TreeNode[] children = treeGrid.getTree().getChildren(agNode);
final int[] childIds = new int[children.length];
for (int i = 0, size = children.length; (i < size); ++i) {
@@ -262,13 +274,13 @@ public class ResourceTreeView extends LocatableVLayout {
resourceGroupService.findResourceGroupsByCriteria(criteria, new
AsyncCallback<PageList<ResourceGroup>>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_node(), caught);
+ callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_node(), caught));
}
public void onSuccess(PageList<ResourceGroup> result) {
if (result.isEmpty()) {
// Not found, create new backing group
- // the backing group name is a display name using a unique
parentResource-resourceType combo
+ // the backing group name is a display name using a unique
parentResource-resourceType combo
final String backingGroupName = agNode.getBackingGroupName();
ResourceGroup backingGroup = new ResourceGroup(backingGroupName);
backingGroup.setAutoGroupParentResource(agNode.getParentResource());
@@ -277,7 +289,7 @@ public class ResourceTreeView extends LocatableVLayout {
resourceGroupService.createPrivateResourceGroup(backingGroup,
childIds,
new AsyncCallback<ResourceGroup>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_create(), caught);
+ callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_create(), caught));
}
public void onSuccess(ResourceGroup result) {
@@ -299,7 +311,7 @@ public class ResourceTreeView extends LocatableVLayout {
resourceGroupService.setAssignedResources(backingGroup.getId(),
childIds, false,
new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_update(), caught);
+ callback.onFailure(new
RuntimeException(MSG.view_tree_common_loadFailed_update(), caught));
}
public void onSuccess(Void result) {
commit ab45b07b171c171871b4b54679a7eca020e5d951
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed May 30 19:59:27 2012 -0400
[BZ 802796] providing more info about the deployment timeout
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryView.java
index 0d41906..3307387 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryView.java
@@ -19,6 +19,10 @@
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
@@ -33,7 +37,12 @@ import com.smartgwt.client.widgets.events.DoubleClickEvent;
import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.SpinnerItem;
-import com.smartgwt.client.widgets.grid.*;
+import com.smartgwt.client.widgets.grid.CellFormatter;
+import com.smartgwt.client.widgets.grid.HoverCustomizer;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.core.domain.criteria.Criteria;
import org.rhq.core.domain.resource.CreateResourceHistory;
import org.rhq.core.domain.resource.CreateResourceStatus;
@@ -51,10 +60,6 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-
/**
* @author John Mazzitelli
*/
@@ -142,7 +147,7 @@ public class ChildHistoryView extends
Table<ChildHistoryView.DataSource> {
case INVALID_CONFIGURATION:
return
MSG.view_resource_inventory_childhistory_status_invalidConfig();
case TIMED_OUT:
- return MSG.common_status_timedOut();
+ return MSG.widget_resourceFactoryWizard_timeoutFailure();
}
} else if (DataSource.TYPE_DELETE.equals(type)) {
switch (DeleteResourceStatus.valueOf(value.toString())) {
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 4e53d8c..eeeefb0 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -100,7 +100,7 @@ common_status_inprogress = In Progress
common_status_nochange = No Change
common_status_partial = Partial
common_status_success = Success
-common_status_timedOut = Timed Out
+common_status_timedOut = Timed Out.
common_status_unknown = Unknown
common_title_acknowledged = Acknowledged
common_title_add_column = Add Column
@@ -2016,7 +2016,8 @@ widget_resourceFactoryWizard_infoStepName = Resource Information
widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
widget_resourceFactoryWizard_namePrompt = New Resource Name
widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). The default timeout is
set to 60 seconds. Useful for particularly long create actions, like deployment of a large
application. Usually used if a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
widget_resourceFactoryWizard_uploadFailure = Failed to upload file
widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 9e6d1b4..8797465 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1,3 +1,24 @@
+#
+# /*
+# * RHQ Management Platform
+# * Copyright (C) 2005-2012 Red Hat, Inc.
+# * All rights reserved.
+# *
+# * This program is free software; you can redistribute it and/or modify
+# * it under the terms of the GNU General Public License as published by
+# * the Free Software Foundation version 2 of the License.
+# *
+# * This program is distributed in the hope that it will be useful,
+# * but WITHOUT ANY WARRANTY; without even the implied warranty of
+# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# * GNU General Public License for more details.
+# *
+# * You should have received a copy of the GNU General Public License
+# * along with this program; if not, write to the Free Software
+# * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# */
+#
+
# suppress inspection "UnusedProperty" for whole file
#
# RHQ GUI i18n Messages - Locale: CS
@@ -2014,7 +2035,8 @@ widget_resourceFactoryWizard_infoStepName = Informace o zdroji
widget_resourceFactoryWizard_infoStep_loadFail = Nepodařilo se získat dostupné
architektury
widget_resourceFactoryWizard_namePrompt = Nové jméno zdroje
widget_resourceFactoryWizard_templatePrompt = Šablona pro nastavení připojení
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+##widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
widget_resourceFactoryWizard_uploadFailure = Nepodařilo se nahrát soubor
widget_resourceFactoryWizard_uploadFileStepName = Nahrát obsah souboru zdroje
widget_resourceFactoryWizard_uploadInProgress = Upload právě probíhá... Může to trvat
několik minut.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 57e541c..e47bcdb 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1777,8 +1777,9 @@ widget_resourceFactoryWizard_infoStepName = Information über die
Ressource
widget_resourceFactoryWizard_infoStep_loadFail = Konnte die verfügbaren Architekturen
nicht ermitteln
widget_resourceFactoryWizard_namePrompt = Name der neuen Ressource
widget_resourceFactoryWizard_templatePrompt = Vorlage für die Verbindungseinstellungen
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = Konnte die Datei nicht hochladen
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+###widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
##widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
##widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
widget_resourceFactoryWizard_versionPrompt = Paketversion
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index ff17934..ee72bd8 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -2005,7 +2005,8 @@ widget_resourceFactoryWizard_infoStepName = リソース情報
widget_resourceFactoryWizard_infoStep_loadFail = アーキテクチャーを利用可能にするのに失敗しました
widget_resourceFactoryWizard_namePrompt = 新規リソース名
widget_resourceFactoryWizard_templatePrompt = コネクション設定テンプレート
-widget_resourceFactoryWizard_timeoutHelp =
タイムアウト間隔。もし指定されたならば({0}エージェント上での)子のリソース作成のためのデフォルトタイムアウトを上書きします。大きなアプリケーションのデプロイのような長時間かかる作成アクションに特に有用です。通常、前回の試みのときにタイムアウトの失敗だった場合に使われます。
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+###widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
widget_resourceFactoryWizard_uploadFailure = ファイルアップロードの失敗
widget_resourceFactoryWizard_uploadFileStepName = リソースコンテントファイルのアップロード
widget_resourceFactoryWizard_uploadInProgress = アップロードは処理中です...
大きなファイルを配布するには数分かかることもあります。
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 9f5cf82..c8afbd8 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -2118,7 +2118,8 @@ widget_resourceFactoryWizard_infoStepName = Informa\u00E7\u00E3o do
Recurso
widget_resourceFactoryWizard_infoStep_loadFail = Falha ao recuperar Arquiteturas
dispon\u00EDveis.
widget_resourceFactoryWizard_namePrompt = Novo Nome do Recurso
widget_resourceFactoryWizard_templatePrompt = Modelo de Propriedades para Conex\u00E3o
-##widget_resourceFactoryWizard_timeoutHelp = Dura��o do timeout. Se especificado ir�
sobrescrever o timeout padr�o para cria��o de recursos filhos (no RHQ Agent). �til
principalmente para a��es muito longas, como a implanta��o de uma apli��o muito grande.
Geralmente utilizado devido a tentativas que sofreram timeout anteriormente.
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+##widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
widget_resourceFactoryWizard_uploadFailure = Falha ao realizar o upload do arquivo
widget_resourceFactoryWizard_uploadFileStepName = Upload do Arquivo do Recurso
widget_resourceFactoryWizard_uploadInProgress = Upload em andamento... Esse processo pode
demorar alguns minutos para ser finalizado em caso de arquivos muito grandes.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 1fd5f80..2692287 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2005,7 +2005,8 @@
#widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
#widget_resourceFactoryWizard_namePrompt = New Resource Name
#widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-#widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+#widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+#widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
#widget_resourceFactoryWizard_uploadFailure = Failed to upload file
#widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
#widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 1f68830..9453ba2 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -2003,7 +2003,8 @@ widget_resourceFactoryWizard_infoStepName =
\u8d44\u6e90\u6d88\u606f
widget_resourceFactoryWizard_infoStep_loadFail = \u65e0\u6cd5\u53d6\u5f97\u67b6\u6784
widget_resourceFactoryWizard_namePrompt = \u65b0\u8d44\u6e90\u540d
widget_resourceFactoryWizard_templatePrompt = \u8fde\u63a5\u8bbe\u7f6e\u6a21\u677f
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+#widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. Useful for particularly long create actions, like deployment
of a large application. Usually used if a previous attempt suffered a timeout failure.
+#widget_resourceFactoryWizard_timeoutFailure = Timed out. Note that it is possible that
the deployment may still succeed.
widget_resourceFactoryWizard_uploadFailure = \u4e0a\u4f20\u6587\u4ef6\u5931\u8d25
widget_resourceFactoryWizard_uploadFileStepName =
\u4e0a\u4f20\u8d44\u6e90Content\u6587\u4ef6
widget_resourceFactoryWizard_uploadInProgress = \u6b63\u5728\u4e0a\u4f20\u4e2d...
\u5927\u7684\u53d1\u5e03\u6587\u4ef6\u9700\u8981\u6d88\u8017\u6570\u5206\u949f\u5b8c\u6210.
commit 953cd5b1f47fbada4ed64824daf4b046365ded9e
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 30 19:00:40 2012 -0400
improve logging to help debug NPE occurring in unit test when running in Jenkins
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
index a7a6408..49e51f4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
@@ -52,6 +52,7 @@ import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.rhq.core.clientapi.agent.PluginContainerException;
+import org.rhq.core.clientapi.agent.discovery.DiscoveryAgentService;
import org.rhq.core.clientapi.agent.discovery.InvalidPluginConfigurationClientException;
import org.rhq.core.clientapi.agent.upgrade.ResourceUpgradeRequest;
import org.rhq.core.clientapi.agent.upgrade.ResourceUpgradeResponse;
@@ -452,12 +453,12 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
MergeResourceResponse mergeResourceResponse;
try {
AgentClient agentClient =
this.agentManager.getAgentClient(parentResource.getAgent());
- mergeResourceResponse =
agentClient.getDiscoveryAgentService().manuallyAddResource(resourceType,
- parentResourceId, pluginConfiguration, user.getId());
+ DiscoveryAgentService discoveryAgentService =
agentClient.getDiscoveryAgentService();
+ mergeResourceResponse =
discoveryAgentService.manuallyAddResource(resourceType,
+ parentResourceId, pluginConfiguration, user.getId());
} catch (RuntimeException e) {
- throw new RuntimeException("Error adding " +
resourceType.getName()
- + " resource to inventory as a child of the resource with id "
+ parentResourceId + " - cause: "
- + e.getLocalizedMessage(), e);
+ throw new RuntimeException("Error adding [" + resourceType
+ + "] Resource to inventory as a child of " + parentResource +
" - cause: " + e, e);
}
return mergeResourceResponse;
commit 7de3b23b2a9b65af0733086da19636c50d3a7789
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 30 16:48:32 2012 -0400
[BZ 814305] throw RuntimeExceptions in SLSB methods for manual-add and create-child if
1) the new Resource's type is a singleton and a child Resource with that type already
exists or 2) the new Resource's type does not support manual-add or the appropriate
flavor of create-child; add new unit tests to verify the RuntimeExceptions are thrown
(
https://bugzilla.redhat.com/show_bug.cgi?id=814305)
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
index ce4e6a7..a7a6408 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -61,6 +61,7 @@ import org.rhq.core.clientapi.server.discovery.StaleTypeException;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.discovery.MergeResourceResponse;
import org.rhq.core.domain.discovery.ResourceSyncInfo;
import org.rhq.core.domain.resource.Agent;
@@ -438,9 +439,18 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
+ " to manually add child resources.");
}
+ Resource parentResource = this.resourceManager.getResourceById(user,
parentResourceId);
+
+ if (!resourceType.isSupportsManualAdd()) {
+ throw new RuntimeException("Cannot manually add " + resourceType +
" child Resource under parent "
+ + parentResource + ", since the " +
resourceType
+ + " type does not support manual add.");
+ }
+
+ abortResourceManualAddIfExistingSingleton(parentResource, resourceType);
+
MergeResourceResponse mergeResourceResponse;
try {
- Resource parentResource = this.resourceManager.getResourceById(user,
parentResourceId);
AgentClient agentClient =
this.agentManager.getAgentClient(parentResource.getAgent());
mergeResourceResponse =
agentClient.getDiscoveryAgentService().manuallyAddResource(resourceType,
parentResourceId, pluginConfiguration, user.getId());
@@ -1060,4 +1070,21 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
return newValue != null && (oldValue == null ||
!newValue.equals(oldValue));
}
+ private void abortResourceManualAddIfExistingSingleton(Resource parentResource,
ResourceType resourceType) {
+ if (resourceType.isSingleton()) {
+ ResourceCriteria resourceCriteria = new ResourceCriteria();
+ resourceCriteria.addFilterParentResourceId(parentResource.getId());
+ resourceCriteria.addFilterResourceTypeId(resourceType.getId());
+ PageList<Resource> childResourcesOfType =
resourceManager.findResourcesByCriteria(subjectManager.getOverlord(),
+ resourceCriteria);
+ if (childResourcesOfType.size() >= 1) {
+ throw new RuntimeException("Cannot manually add " +
resourceType + " child Resource under parent "
+ + parentResource + ", since " + resourceType
+ + " is a singleton type, and there is already a child
Resource of that type. "
+ + "If the existing child Resource corresponds to a managed
Resource which no longer exists, "
+ + "uninventory it and then try again.");
+ }
+ }
+ }
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
index b612c5e..8a9257f 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -51,6 +51,7 @@ import org.rhq.core.domain.content.InstalledPackage;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.CreateResourceHistory;
import org.rhq.core.domain.resource.CreateResourceStatus;
@@ -58,6 +59,7 @@ import org.rhq.core.domain.resource.DeleteResourceHistory;
import org.rhq.core.domain.resource.DeleteResourceStatus;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCreationDataType;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
@@ -170,7 +172,7 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
// There is some inconsistency if we're completing a request that was not in
the database
if (history == null) {
- log.error("Attemping to complete a request that was not found in the
database: " + response.getRequestId());
+ log.error("Attempting to complete a request that was not found in the
database: " + response.getRequestId());
return;
}
@@ -437,6 +439,14 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
ResourceType newResourceType = entityManager.find(ResourceType.class,
newResourceTypeId);
PackageType newPackageType =
contentManager.getResourceCreationPackageType(newResourceTypeId);
+ if (!newResourceType.isCreatable() || (newResourceType.getCreationDataType() !=
ResourceCreationDataType.CONTENT)) {
+ throw new RuntimeException("Cannot create " + newResourceType +
" child Resource under parent "
+ + parentResource + ", since the " + newResourceType
+ + " type does not support content-based Resource
creation.");
+ }
+
+ abortResourceCreationIfExistingSingleton(parentResource, newResourceType);
+
// unless version is set start versioning the package by timestamp
packageVersionNumber = (null == packageVersionNumber) ?
Long.toString(System.currentTimeMillis())
: packageVersionNumber;
@@ -477,15 +487,23 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
+ " of type: " + resourceTypeId);
ResourceType resourceType = entityManager.find(ResourceType.class,
resourceTypeId);
- Resource resource = entityManager.find(Resource.class, parentResourceId);
- Agent agent = resource.getAgent();
+ Resource parentResource = entityManager.find(Resource.class, parentResourceId);
+ Agent agent = parentResource.getAgent();
// Check permissions first
- if (!authorizationManager.hasResourcePermission(user,
Permission.CREATE_CHILD_RESOURCES, resource.getId())) {
+ if (!authorizationManager.hasResourcePermission(user,
Permission.CREATE_CHILD_RESOURCES, parentResource.getId())) {
throw new PermissionException("User [" + user.getName()
- + "] does not have permission to create a child resource for
resource [" + resource + "]");
+ + "] does not have permission to create a child resource for
resource [" + parentResource + "]");
+ }
+
+ if (!resourceType.isCreatable() || (resourceType.getCreationDataType() !=
ResourceCreationDataType.CONFIGURATION)) {
+ throw new RuntimeException("Cannot create " + resourceType + "
child Resource under parent "
+ + parentResource + ", since the " + resourceType
+ + " type does not support configuration-based Resource
creation.");
}
+ abortResourceCreationIfExistingSingleton(parentResource, resourceType);
+
// Persist in separate transaction so it is committed immediately, before the
request is sent to the agent
CreateResourceHistory persistedHistory =
resourceFactoryManager.persistCreateHistory(user, parentResourceId,
resourceTypeId, resourceName, resourceConfiguration);
@@ -573,6 +591,14 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
ResourceType newResourceType = entityManager.find(ResourceType.class,
newResourceTypeId);
PackageVersion packageVersion = entityManager.find(PackageVersion.class,
packageVersionId);
+ if (!newResourceType.isCreatable() || (newResourceType.getCreationDataType() !=
ResourceCreationDataType.CONTENT)) {
+ throw new RuntimeException("Cannot create " + newResourceType +
" child Resource under parent "
+ + parentResource + ", since the " + newResourceType
+ + " type does not support content-based Resource
creation.");
+ }
+
+ abortResourceCreationIfExistingSingleton(parentResource, newResourceType);
+
return doCreatePackageBackedResource(subject, parentResource, newResourceType,
newResourceName,
pluginConfiguration, deploymentTimeConfiguration, packageVersion, timeout);
}
@@ -672,4 +698,22 @@ public class ResourceFactoryManagerBean implements
ResourceFactoryManagerLocal,
throw new RuntimeException("Error while sending delete resource request
to agent service", e);
}
}
+
+ private void abortResourceCreationIfExistingSingleton(Resource parentResource,
ResourceType resourceType) {
+ if (resourceType.isSingleton()) {
+ ResourceCriteria resourceCriteria = new ResourceCriteria();
+ resourceCriteria.addFilterParentResourceId(parentResource.getId());
+ resourceCriteria.addFilterResourceTypeId(resourceType.getId());
+ PageList<Resource> childResourcesOfType =
resourceManager.findResourcesByCriteria(subjectManager.getOverlord(),
+ resourceCriteria);
+ if (childResourcesOfType.size() >= 1) {
+ throw new RuntimeException("Cannot create " + resourceType +
" child Resource under parent "
+ + parentResource + ", since " + resourceType
+ + " is a singleton type, and there is already a child
Resource of that type. "
+ + "If the existing child Resource corresponds to a managed
Resource which no longer exists, "
+ + "uninventory it and then try again.");
+ }
+ }
+ }
+
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
index 0dc28aa..1625480 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -25,7 +25,9 @@ import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.util.List;
import java.util.Random;
+import java.util.UUID;
+import javax.ejb.EJBException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.persistence.EntityManager;
@@ -42,6 +44,9 @@ import org.dbunit.ext.oracle.Oracle10DataTypeFactory;
import org.dbunit.ext.oracle.OracleDataTypeFactory;
import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;
import org.dbunit.operation.DatabaseOperation;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
@@ -50,20 +55,38 @@ import org.xml.sax.InputSource;
import org.jboss.mx.util.MBeanServerLocator;
+import org.rhq.core.clientapi.agent.discovery.DiscoveryAgentService;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.discovery.MergeResourceResponse;
import org.rhq.core.domain.discovery.ResourceSyncInfo;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.core.comm.ServerCommunicationsService;
import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceMBean;
+import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
+import org.rhq.enterprise.server.test.TestServerCommunicationsService;
import org.rhq.enterprise.server.util.LookupUtil;
import org.rhq.enterprise.server.util.ResourceTreeHelper;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.when;
+
+/**
+ * A unit test for {@link DiscoveryBossBean}.
+ */
public class DiscoveryBossBeanTest extends AbstractEJB3Test {
+
private DiscoveryBossLocal discoveryBoss;
+ private SubjectManagerLocal subjectManager;
+
+ private ResourceManagerLocal resourceManager;
+
private MBeanServer dummyJBossMBeanServer;
private ResourceType platformType;
@@ -76,9 +99,13 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
private Agent agent;
+ private TestServerCommunicationsService agentServiceContainer;
+
@BeforeClass
public void beforeClass() throws Exception {
discoveryBoss = LookupUtil.getDiscoveryBoss();
+ subjectManager = LookupUtil.getSubjectManager();
+ resourceManager = LookupUtil.getResourceManager();
}
@BeforeMethod
@@ -95,6 +122,26 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
serviceType1 = getEntityManager().find(ResourceType.class, 3);
serviceType2 = getEntityManager().find(ResourceType.class, 4);
agent = getEntityManager().find(Agent.class, 1);
+
+ agentServiceContainer = prepareForTestAgents();
+ agentServiceContainer.discoveryService =
Mockito.mock(DiscoveryAgentService.class);
+
when(agentServiceContainer.discoveryService.manuallyAddResource(any(ResourceType.class),
anyInt(),
+ any(Configuration.class), anyInt())).thenAnswer(new
Answer<MergeResourceResponse>() {
+ public MergeResourceResponse answer(InvocationOnMock invocation) throws
Throwable {
+ Resource resource = new Resource(1000000);
+ resource.setUuid(UUID.randomUUID().toString());
+ ResourceType resourceType = (ResourceType) invocation.getArguments()[0];
+ resource.setResourceType(resourceType);
+ long randomLong = UUID.randomUUID().getLeastSignificantBits();
+ resource.setResourceKey(String.valueOf("key-" + randomLong));
+ resource.setName("name-" + randomLong);
+ int parentResourceId = (Integer)invocation.getArguments()[1];
+ Resource parentResource =
resourceManager.getResource(subjectManager.getOverlord(), parentResourceId);
+ resource.setParentResource(parentResource);
+ Integer ownerSubjectId = (Integer) invocation.getArguments()[3];
+ return discoveryBoss.addResource(resource, ownerSubjectId);
+ }
+ });
}
@AfterMethod(alwaysRun = true)
@@ -158,6 +205,39 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
assert syncInfo != null;
}
+ @Test(groups = "integration.ejb3")
+ public void testManuallyAddResource() throws Exception {
+ InventoryReport inventoryReport = new InventoryReport(agent);
+
+ Resource platform = new Resource("alpha", "platform",
platformType);
+ Resource server = new Resource("bravo", "server",
serverType);
+ platform.addChildResource(server);
+ Resource service2 = new Resource("delta", "service 2",
serviceType2);
+ server.addChildResource(service2);
+
+ platform.setUuid("" + new Random().nextInt());
+ server.setUuid("" + new Random().nextInt());
+ service2.setUuid("" + new Random().nextInt());
+
+ inventoryReport.addAddedRoot(platform);
+
+ ResourceSyncInfo syncInfo =
discoveryBoss.mergeInventoryReport(serialize(inventoryReport));
+ assert syncInfo != null;
+
+ ResourceSyncInfo serverSyncInfo =
syncInfo.getChildSyncInfos().iterator().next();
+ Resource resource1 =
discoveryBoss.manuallyAddResource(subjectManager.getOverlord(), serviceType2.getId(),
+ serverSyncInfo.getId(), new Configuration());
+
+ try {
+ Resource resource2 =
discoveryBoss.manuallyAddResource(subjectManager.getOverlord(), serviceType2.getId(),
+ serverSyncInfo.getId(), new Configuration());
+ fail("Manually adding a singleton that already existed succeeded: "
+ resource2);
+ } catch (EJBException e) {
+ assertEquals(String.valueOf(e.getCause()), RuntimeException.class,
e.getCause().getClass());
+ assertTrue(String.valueOf(e.getCause()),
e.getCause().getMessage().contains("singleton"));
+ }
+ }
+
/**
* Use this to fake like your remoting objects. Can be used to keep your own copy of
objects locally transient.
*
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
index fdb6607..cbcf1dc 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -23,7 +23,9 @@ import java.net.URL;
import java.util.List;
import java.util.Random;
import java.util.Set;
+import java.util.UUID;
+import javax.ejb.EJBException;
import javax.persistence.EntityManager;
import org.testng.annotations.AfterMethod;
@@ -42,6 +44,7 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageCategory;
import org.rhq.core.domain.content.PackageType;
+import org.rhq.core.domain.resource.CreateDeletePolicy;
import org.rhq.core.domain.resource.CreateResourceHistory;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.domain.resource.DeleteResourceHistory;
@@ -49,9 +52,11 @@ import org.rhq.core.domain.resource.DeleteResourceStatus;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceCreationDataType;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.server.discovery.DiscoveryBossLocal;
import org.rhq.enterprise.server.resource.ResourceFactoryManagerLocal;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
@@ -60,13 +65,19 @@ import
org.rhq.enterprise.server.test.TestServerCommunicationsService;
import org.rhq.enterprise.server.util.LookupUtil;
/**
+ * A unit test for {@link
org.rhq.enterprise.server.resource.ResourceFactoryManagerBean}.
+ *
* @author Jason Dobies
*/
public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test {
+
+ private static final String TEST_PLUGIN_NAME = "TestPlugin";
+
// Attributes --------------------------------------------
private ResourceFactoryManagerLocal resourceFactoryManager;
private ResourceManagerLocal resourceManager;
+ private DiscoveryBossLocal discoveryBoss;
private Subject overlord;
private MockResourceFactoryAgentService mockAgentService = new
MockResourceFactoryAgentService();
@@ -74,7 +85,9 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test {
// Populated during setupResourceEnvironment
private Resource parentResource;
private ResourceType parentResourceType;
- private ResourceType childResourceType;
+ private ResourceType contentBackedChildResourceType;
+ private ResourceType configBackedChildResourceType1;
+ private ResourceType configBackedChildResourceType2;
private PackageType packageType;
// Setup --------------------------------------------
@@ -83,6 +96,7 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test {
public void setupBeforeClass() throws Exception {
resourceFactoryManager = LookupUtil.getResourceFactoryManager();
resourceManager = LookupUtil.getResourceManager();
+ discoveryBoss = LookupUtil.getDiscoveryBoss();
overlord = LookupUtil.getSubjectManager().getOverlord();
}
@@ -123,7 +137,7 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
resourceConfiguration.put(new PropertySimple("property1",
"value1"));
// Test
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(),
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(),
"newResource", null, resourceConfiguration);
// Verify
@@ -164,7 +178,7 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
resourceConfiguration.put(new PropertySimple("property1",
"value1"));
// Test
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(),
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(),
"newResource", null, resourceConfiguration);
// Verify
@@ -192,7 +206,70 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
}
@Test
- public void createResourceViaPackage() throws Exception {
+ public void createSingletonResourceViaConfiguration() throws Exception {
+ // Setup
+ mockAgentService.setCreateReturnStatus(CreateResourceStatus.SUCCESS);
+
+ // Assemble call parameters
+ Subject overlord = LookupUtil.getSubjectManager().getOverlord();
+
+ Configuration resourceConfiguration = new Configuration();
+ resourceConfiguration.put(new PropertySimple("property1",
"value1"));
+
+ // Test
+ CreateResourceHistory history1 = resourceFactoryManager.createResource(overlord,
parentResource.getId(), configBackedChildResourceType2.getId(),
+ "newResource", null, resourceConfiguration);
+
+ // Verify
+ EntityManager entityManager = null;
+ try {
+ getTransactionManager().begin();
+ entityManager = getEntityManager();
+
+ Resource parent = entityManager.find(Resource.class,
parentResource.getId());
+ List<CreateResourceHistory> historyList =
parent.getCreateChildResourceRequests();
+
+ assert historyList.size() == 1 : "Incorrect number of children found.
Expected: 1, Found: "
+ + historyList.size();
+
+ CreateResourceHistory historyItem = historyList.get(0);
+
+ assert historyItem.getStatus() == CreateResourceStatus.SUCCESS :
"Incorrect status for history item. Expected: Success, Found: "
+ + historyItem.getStatus();
+ assert historyItem.getNewResourceKey().equals("mockResourceKey") :
"Incorrect resource key for history item. Expected: mockResourceKey, Found: "
+ + historyItem.getNewResourceKey();
+ assert historyItem.getErrorMessage() == null : "Error message found for
successful call";
+ assert historyItem.getConfiguration() != null : "Null configuration
found for history item";
+ } finally {
+ getTransactionManager().rollback();
+ entityManager.close();
+ }
+
+ // Invoke the same callbacks the plugin container would to actually commit the
new Resource to inventory.
+ resourceFactoryManager.completeCreateResource(new
CreateResourceResponse(history1.getId(), "newResource", "key",
+ CreateResourceStatus.SUCCESS, null, new Configuration()));
+ Resource resource = new Resource(1000000);
+ resource.setUuid(UUID.randomUUID().toString());
+ resource.setResourceType(configBackedChildResourceType2);
+ long randomLong = UUID.randomUUID().getLeastSignificantBits();
+ resource.setResourceKey(String.valueOf("key-" + randomLong));
+ resource.setName("name-" + randomLong);
+ resource.setParentResource(parentResource);
+ discoveryBoss.addResource(resource, overlord.getId());
+
+ // Now try to create another Resource of the same singleton type - this should
fail.
+ try {
+ CreateResourceHistory history2 =
resourceFactoryManager.createResource(overlord, parentResource.getId(),
+ configBackedChildResourceType2.getId(), "newResource2",
null, resourceConfiguration);
+ fail("Creating a singleton that already existed succeeded: " +
history2);
+ } catch (EJBException e) {
+ assertEquals(String.valueOf(e.getCause()), RuntimeException.class,
e.getCause().getClass());
+ assertTrue(String.valueOf(e.getCause()),
e.getCause().getMessage().contains("singleton"));
+ }
+ }
+
+ @Test
+ public void createSingletonResourceViaPackage() throws Exception {
// Setup
mockAgentService.setCreateReturnStatus(CreateResourceStatus.SUCCESS);
@@ -212,9 +289,9 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
InputStream packageInputStream = contentResource.openStream();
// Test
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(),
- "newResource", null, packageName, packageVersion, architectureId,
deploymentTimeConfiguration,
- packageInputStream);
+ CreateResourceHistory history1 = resourceFactoryManager.createResource(overlord,
parentResource.getId(), contentBackedChildResourceType.getId(),
+ "newResource", null, packageName, packageVersion,
architectureId, deploymentTimeConfiguration,
+ packageInputStream);
// Verify
EntityManager entityManager = null;
@@ -239,6 +316,29 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
getTransactionManager().rollback();
entityManager.close();
}
+
+ // Invoke the same callbacks the plugin container would to actually commit the
new Resource to inventory.
+ resourceFactoryManager.completeCreateResource(new
CreateResourceResponse(history1.getId(), "newResource", "key",
+ CreateResourceStatus.SUCCESS, null, new Configuration()));
+ Resource resource = new Resource(2000000);
+ resource.setUuid(UUID.randomUUID().toString());
+ resource.setResourceType(contentBackedChildResourceType);
+ long randomLong = UUID.randomUUID().getLeastSignificantBits();
+ resource.setResourceKey(String.valueOf("key-" + randomLong));
+ resource.setName("name-" + randomLong);
+ resource.setParentResource(parentResource);
+ discoveryBoss.addResource(resource, overlord.getId());
+
+ // Now try to create another Resource of the same singleton type - this should
fail.
+ try {
+ CreateResourceHistory history2 =
resourceFactoryManager.createResource(overlord, parentResource.getId(),
+ contentBackedChildResourceType.getId(), "newResource2",
null, packageName, packageVersion,
+ architectureId, deploymentTimeConfiguration, packageInputStream);
+ fail("Creating a singleton that already existed succeeded: " +
history2);
+ } catch (EJBException e) {
+ assertEquals(String.valueOf(e.getCause()), RuntimeException.class,
e.getCause().getClass());
+ assertTrue(String.valueOf(e.getCause()),
e.getCause().getMessage().contains("singleton"));
+ }
}
@Test
@@ -323,17 +423,17 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
resourceConfiguration = new Configuration();
resourceConfiguration.getMap();
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(), "resource1",
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(), "resource1",
(Configuration) null, resourceConfiguration);
resourceConfiguration = new Configuration();
resourceConfiguration.getMap();
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(), "resource2",
- (Configuration) null, resourceConfiguration);
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(), "resource2",
+ (Configuration) null, resourceConfiguration);
resourceConfiguration = new Configuration();
resourceConfiguration.getMap();
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(), "resource3",
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(), "resource3",
(Configuration) null, resourceConfiguration);
// Verify
@@ -395,7 +495,7 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
Configuration resourceConfiguration = new Configuration();
resourceConfiguration.getMap();
- resourceFactoryManager.createResource(overlord, parentResource.getId(),
childResourceType.getId(),
+ resourceFactoryManager.createResource(overlord, parentResource.getId(),
configBackedChildResourceType1.getId(),
"NewResource", null, resourceConfiguration);
PageList<CreateResourceHistory> historyList =
resourceFactoryManager.findCreateChildResourceHistory(overlord,
parentResource.getId(), null, null, new PageControl(0, 1000));
@@ -425,14 +525,17 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
try {
try {
// Create parent resource type
- parentResourceType = new ResourceType("platform-" +
System.currentTimeMillis(), "TestPlugin",
+ parentResourceType = new ResourceType("platform-" +
System.currentTimeMillis(), TEST_PLUGIN_NAME,
ResourceCategory.PLATFORM, null);
em.persist(parentResourceType);
// Create child resource type to parent. Artifact type lives under this
resource type.
- childResourceType = new ResourceType("server-" +
System.currentTimeMillis(), "TestPlugin",
- ResourceCategory.SERVER, parentResourceType);
- em.persist(childResourceType);
+ contentBackedChildResourceType = new ResourceType("service-" +
System.currentTimeMillis(), TEST_PLUGIN_NAME,
+ ResourceCategory.SERVICE, parentResourceType);
+
contentBackedChildResourceType.setCreateDeletePolicy(CreateDeletePolicy.BOTH);
+
contentBackedChildResourceType.setCreationDataType(ResourceCreationDataType.CONTENT);
+ contentBackedChildResourceType.setSingleton(true);
+ em.persist(contentBackedChildResourceType);
// Create artifact type under child resource type that is marked as the
creation artifact type
packageType = new PackageType();
@@ -441,11 +544,24 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
packageType.setCategory(PackageCategory.DEPLOYABLE);
packageType.setDisplayName("TestResourceArtifact");
packageType.setCreationData(true);
- packageType.setResourceType(childResourceType);
+ packageType.setResourceType(contentBackedChildResourceType);
em.persist(packageType);
// Link artifact type and child resource type
- childResourceType.addPackageType(packageType);
+ contentBackedChildResourceType.addPackageType(packageType);
+
+ configBackedChildResourceType1 = new ResourceType("service1-" +
System.currentTimeMillis(), TEST_PLUGIN_NAME,
+ ResourceCategory.SERVICE, parentResourceType);
+
configBackedChildResourceType1.setCreateDeletePolicy(CreateDeletePolicy.BOTH);
+
configBackedChildResourceType1.setCreationDataType(ResourceCreationDataType.CONFIGURATION);
+ em.persist(configBackedChildResourceType1);
+
+ configBackedChildResourceType2 = new ResourceType("service2-" +
System.currentTimeMillis(), TEST_PLUGIN_NAME,
+ ResourceCategory.SERVICE, parentResourceType);
+
configBackedChildResourceType2.setCreateDeletePolicy(CreateDeletePolicy.BOTH);
+
configBackedChildResourceType2.setCreationDataType(ResourceCreationDataType.CONFIGURATION);
+ configBackedChildResourceType2.setSingleton(true);
+ em.persist(configBackedChildResourceType2);
// Create parent resource off of which to hang created resources
parentResource = new Resource("parent" +
System.currentTimeMillis(), "name", parentResourceType);
@@ -479,8 +595,14 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
getTransactionManager().begin();
EntityManager em = getEntityManager();
try {
- // Remove the child first.
- ResourceType deleteMeType = em.find(ResourceType.class,
childResourceType.getId());
+ // Remove the children first.
+ ResourceType deleteMeType = em.find(ResourceType.class,
contentBackedChildResourceType.getId());
+ em.remove(deleteMeType);
+
+ deleteMeType = em.find(ResourceType.class,
configBackedChildResourceType1.getId());
+ em.remove(deleteMeType);
+
+ deleteMeType = em.find(ResourceType.class,
configBackedChildResourceType2.getId());
em.remove(deleteMeType);
deleteMeType = em.find(ResourceType.class, parentResourceType.getId());
@@ -617,4 +739,5 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
return null;
}
}
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml
index b21cc8d..4891276 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml
@@ -52,7 +52,7 @@
creation_data_type="CONFIGURATION"
create_delete_policy="BOTH"
supports_manual_add="1"
- singleton="0"
+ singleton="1"
plugin="test"
deleted="0"/>
commit f758dd314f3701432e824cc7509fdba21f76d703
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed May 30 14:18:57 2012 -0400
[Bug 826673 - RFE: Add ability to maximize a dashboard portlet]
- add this ability
- also, fix a bug in portlet removal where the portlet window was
not being fully removed from the current dashboard.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index 43a8bc0..ac85aad 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -18,6 +18,13 @@
*/
package org.rhq.enterprise.gui.coregui.client.dashboard;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Set;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.AnimationCallback;
@@ -25,7 +32,11 @@ import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.events.ColorSelectedEvent;
import com.smartgwt.client.widgets.form.events.ColorSelectedHandler;
-import com.smartgwt.client.widgets.form.fields.*;
+import com.smartgwt.client.widgets.form.fields.ButtonItem;
+import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
import com.smartgwt.client.widgets.layout.LayoutSpacer;
@@ -36,6 +47,7 @@ import com.smartgwt.client.widgets.menu.events.ClickHandler;
import com.smartgwt.client.widgets.menu.events.ItemClickEvent;
import com.smartgwt.client.widgets.menu.events.ItemClickHandler;
import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
+
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.common.EntityContext;
@@ -50,13 +62,25 @@ import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.components.form.ColorButtonItem;
-import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.*;
-import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.*;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupConfigurationUpdatesPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupMetricsPortlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOobsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOperationsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupPkgHistoryPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceConfigurationUpdatesPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceEventsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceMetricsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceOperationsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourcePkgHistoryPortlet;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.*;
-
-import java.util.*;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIMenuButton;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableMenu;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
/**
* @author Jay Shaughnessy
@@ -68,13 +92,14 @@ public class DashboardView extends LocatableVLayout {
private DashboardContainer dashboardContainer;
private Dashboard storedDashboard;
- boolean editMode = false;
+ private boolean editMode = false;
PortalLayout portalLayout;
LocatableDynamicForm editForm;
IMenuButton addPortlet;
HashSet<PortletWindow> portletWindows = new HashSet<PortletWindow>();
+
private static String STOP = MSG.view_dashboards_portlets_refresh_none();
private static String REFRESH1 = MSG.view_dashboards_portlets_refresh_one_min();
private static String REFRESH5 =
MSG.view_dashboards_portlets_refresh_multiple_min(String.valueOf(5));
@@ -97,6 +122,8 @@ public class DashboardView extends LocatableVLayout {
// the view is set to a Tab's pane.
private boolean isInitialized = false;
+ private PortletWindow maximizedPortlet = null;
+
/**
* Convenience constructor for subsystem context.
*
@@ -593,20 +620,21 @@ public class DashboardView extends LocatableVLayout {
outline.draw();
outline.bringToFront();
- outline.animateRect(newPortletWindow.getPageLeft(),
newPortletWindow.getPageTop(), newPortletWindow
- .getVisibleWidth(), newPortletWindow.getViewportHeight(), new
AnimationCallback() {
- public void execute(boolean earlyFinish) {
- // callback at end of animation - destroy placeholder and outline; show
the new portlet
- placeHolder.destroy();
- outline.destroy();
- newPortletWindow.show();
- }
- }, 750);
+ outline.animateRect(newPortletWindow.getPageLeft(),
newPortletWindow.getPageTop(),
+ newPortletWindow.getVisibleWidth(), newPortletWindow.getViewportHeight(), new
AnimationCallback() {
+ public void execute(boolean earlyFinish) {
+ // callback at end of animation - destroy placeholder and outline;
show the new portlet
+ placeHolder.destroy();
+ outline.destroy();
+ newPortletWindow.show();
+ }
+ }, 750);
save();
}
- public void removePortlet(DashboardPortlet portlet) {
- storedDashboard.removePortlet(portlet);
+ public void removePortlet(PortletWindow portletWindow) {
+ storedDashboard.removePortlet(portletWindow.getStoredPortlet());
+ this.portletWindows.remove(portletWindow);
// portlet remove means the portlet locations may have changed. The selenium
testing locators include
// positioning info. So, in this case we have to take the hit and completely
refresh the dash.
@@ -752,8 +780,8 @@ public class DashboardView extends LocatableVLayout {
boolean unpersistedDash = (storedPortlet.getDashboard().getId() == 0 ||
updatedPortlet.getDashboard().getId() == 0);
boolean dashMatchId = (!unpersistedDash &&
(storedPortlet.getDashboard().getId() == updatedPortlet
.getDashboard().getId()));
- boolean dashMatchName = (unpersistedDash &&
storedPortlet.getDashboard().getName().equals(
- updatedPortlet.getDashboard().getName()));
+ boolean dashMatchName = (unpersistedDash &&
storedPortlet.getDashboard().getName()
+ .equals(updatedPortlet.getDashboard().getName()));
if (!(dashMatchId || dashMatchName)) {
return false;
}
@@ -792,6 +820,12 @@ public class DashboardView extends LocatableVLayout {
public void setEditMode(boolean editMode) {
this.editMode = editMode;
+
+ // don't allow resizing in min/max in edit mode
+ for (PortletWindow portletWindow : portletWindows) {
+ portletWindow.hideSizingHeaderControls(editMode);
+ }
+
if (editMode) {
this.editForm.show();
//
@@ -872,4 +906,65 @@ public class DashboardView extends LocatableVLayout {
return resourceComposite;
}
+ public boolean isMaximized() {
+ return (maximizedPortlet != null);
+ }
+
+ public PortletWindow getMaximizePortlet() {
+ return maximizedPortlet;
+ }
+
+ public void maximizePortlet(PortletWindow portletWindow) {
+ if (isMaximized()) {
+ return;
+ }
+
+ maximizedPortlet = portletWindow;
+
+ int numColumns = storedDashboard.getColumns();
+ for (int i = 0; i < numColumns; ++i) {
+ PortalColumn col = portalLayout.getPortalColumn(i);
+ Canvas portlet = col.getMember(portletWindow.getID());
+ if (null == portlet) {
+ col.hide();
+ } else {
+ for (Canvas member : col.getMembers()) {
+ if (!member.equals(portlet)) {
+ member.hide();
+ } else {
+ ((PortletWindow) member).hideSizingHeaderControls(true);
+ member.setHeight100();
+ }
+ }
+ }
+ }
+
+ portalLayout.markForRedraw();
+ }
+
+ public void restorePortlet() {
+ if (!isMaximized()) {
+ return;
+ }
+
+ int numColumns = storedDashboard.getColumns();
+ for (int i = 0; i < numColumns; ++i) {
+ PortalColumn col = portalLayout.getPortalColumn(i);
+ if (!col.isVisible()) {
+ col.show();
+ } else {
+ for (Canvas member : col.getMembers()) {
+ if (!member.isVisible()) {
+ member.show();
+ } else {
+ ((PortletWindow) member).hideSizingHeaderControls(false);
+
member.setHeight(maximizedPortlet.getStoredPortlet().getHeight());
+ }
+ }
+ }
+ }
+
+ maximizedPortlet = null;
+ portalLayout.markForRedraw();
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
index 5cbc4c7..52e3a8f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
@@ -188,6 +188,9 @@ public class DashboardsView extends LocatableVLayout implements
DashboardContain
public void onClick(ClickEvent clickEvent) {
editMode = !editMode;
editButton.setTitle(editMode ? MSG.common_title_view_mode() :
MSG.common_title_edit_mode());
+ if (selectedDashboardView.isMaximized()) {
+ selectedDashboardView.restorePortlet();
+ }
selectedDashboardView.setEditMode(editMode);
}
});
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletWindow.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletWindow.java
index ff6f522..bb8d568 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletWindow.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletWindow.java
@@ -22,13 +22,28 @@
*/
package org.rhq.enterprise.gui.coregui.client.dashboard;
+import java.util.ArrayList;
+import java.util.Set;
+
import com.smartgwt.client.types.DragAppearance;
import com.smartgwt.client.types.HeaderControls;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HeaderControl;
import com.smartgwt.client.widgets.HeaderControl.HeaderIcon;
-import com.smartgwt.client.widgets.events.*;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.events.CloseClickEvent;
+import com.smartgwt.client.widgets.events.CloseClickHandler;
+import com.smartgwt.client.widgets.events.DragResizeStopEvent;
+import com.smartgwt.client.widgets.events.DragResizeStopHandler;
+import com.smartgwt.client.widgets.events.MinimizeClickEvent;
+import com.smartgwt.client.widgets.events.MinimizeClickHandler;
+import com.smartgwt.client.widgets.events.MouseOverEvent;
+import com.smartgwt.client.widgets.events.MouseOverHandler;
+import com.smartgwt.client.widgets.events.RestoreClickEvent;
+import com.smartgwt.client.widgets.events.RestoreClickHandler;
+
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.dashboard.DashboardPortlet;
@@ -37,8 +52,6 @@ import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHeaderControl;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
-import java.util.Set;
-
/**
* @author Greg Hinkle
* @author Jay Shaughnessy
@@ -104,6 +117,12 @@ public class PortletWindow extends LocatableWindow {
}
};
+ private HeaderControl maximizeHeaderControl = new
HeaderControl(HeaderControl.MAXIMIZE, new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ PortletWindow.this.dashboardView.maximizePortlet(PortletWindow.this);
+ }
+ });
+
public PortletWindow(String locatorId, DashboardView dashboardView, DashboardPortlet
dashboardPortlet,
EntityContext context) {
super(locatorId);
@@ -139,18 +158,7 @@ public class PortletWindow extends LocatableWindow {
}
// customize the appearance and order of the controls in the window header
- if (headerIcon != null) {
- setHeaderControls(HeaderControls.MINIMIZE_BUTTON, headerIcon,
HeaderControls.HEADER_LABEL,
- new LocatableHeaderControl(extendLocatorId("Refresh"),
HeaderControl.REFRESH, refreshHandler),
- new LocatableHeaderControl(extendLocatorId("Settings"),
HeaderControl.SETTINGS, settingsHandler),
- new LocatableHeaderControl(extendLocatorId("Help"),
HeaderControl.HELP, helpHandler),
- HeaderControls.CLOSE_BUTTON);
- } else {
- setHeaderControls(HeaderControls.MINIMIZE_BUTTON,
HeaderControls.HEADER_LABEL, new LocatableHeaderControl(
- extendLocatorId("Refresh"), HeaderControl.REFRESH,
refreshHandler), new LocatableHeaderControl(
- extendLocatorId("Settings"), HeaderControl.SETTINGS,
settingsHandler), new LocatableHeaderControl(
- extendLocatorId("Help"), HeaderControl.HELP, helpHandler),
HeaderControls.CLOSE_BUTTON);
- }
+ initHeaderControls();
// enable predefined component animation
setAnimateMinimize(true);
@@ -189,8 +197,12 @@ public class PortletWindow extends LocatableWindow {
addCloseClickHandler(new CloseClickHandler() {
public void onCloseClick(CloseClickEvent closeClientEvent) {
-
PortletWindow.this.dashboardView.removePortlet(PortletWindow.this.storedPortlet);
- destroy();
+ if (PortletWindow.this.dashboardView.isMaximized()) {
+ PortletWindow.this.dashboardView.restorePortlet();
+ } else {
+ PortletWindow.this.dashboardView.removePortlet(PortletWindow.this);
+ destroy();
+ }
}
});
@@ -198,6 +210,48 @@ public class PortletWindow extends LocatableWindow {
setHelpClickHandler(helpHandler);
}
+ private void initHeaderControls() {
+
+ ArrayList<Object> headerControls = new ArrayList<Object>();
+
+ headerControls.add(HeaderControls.MINIMIZE_BUTTON);
+ addMinimizeClickHandler(new MinimizeClickHandler() {
+ public void onMinimizeClick(MinimizeClickEvent event) {
+ maximizeHeaderControl.hide();
+ }
+ });
+ addRestoreClickHandler(new RestoreClickHandler() {
+ public void onRestoreClick(RestoreClickEvent event) {
+ maximizeHeaderControl.show();
+ }
+ });
+
+ headerControls.add(maximizeHeaderControl);
+
+ if (headerIcon != null) {
+ headerControls.add(headerIcon);
+ }
+ headerControls.add(HeaderControls.HEADER_LABEL);
+ headerControls.add(new HeaderControl(HeaderControl.REFRESH, refreshHandler));
+ headerControls.add(new HeaderControl(HeaderControl.SETTINGS, settingsHandler));
+ headerControls.add(new HeaderControl(HeaderControl.HELP, helpHandler));
+ headerControls.add(HeaderControls.CLOSE_BUTTON);
+
+ setHeaderControls(headerControls.toArray(new Object[headerControls.size()]));
+ }
+
+ void hideSizingHeaderControls(boolean hideControls) {
+
+ if (hideControls) {
+ setShowMinimizeButton(false);
+ maximizeHeaderControl.hide();
+
+ } else {
+ setShowMinimizeButton(true);
+ maximizeHeaderControl.show();
+ }
+ }
+
@Override
protected void onInit() {
super.onInit();
commit d645f4ec3d9b7c82bc61516cc8f89cc2b7ba4b26
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Wed May 30 17:00:05 2012 +0200
[BZ 814305] Before the context menu is shown the check for singleton resurces is
performed (when creating child resources or importing the resources manually)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index 74dba33..ff99825 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -522,54 +522,102 @@ public class ResourceTreeView extends LocatableVLayout {
// Create Child Menu
Set<ResourceType> creatableChildTypes =
getCreatableChildTypes(resourceType);
if (!creatableChildTypes.isEmpty()) {
- MenuItem createChildMenu = new MenuItem(MSG.common_button_create_child());
+ final MenuItem createChildMenu = new
MenuItem(MSG.common_button_create_child());
boolean hasCreateChildPermission =
resourcePermission.isCreateChildResources();
createChildMenu.setEnabled(hasCreateChildPermission);
if (hasCreateChildPermission) {
- Menu createChildSubMenu = new Menu();
- Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
- Set<String> displayNames = displayNameMap.keySet();
- for (String displayName : displayNames) {
- MenuItem createItem = new MenuItem(displayName);
- final ResourceType childType = displayNameMap.get(displayName);
- createItem.addClickHandler(new ClickHandler() {
- public void onClick(MenuItemClickEvent event) {
- ResourceFactoryCreateWizard.showCreateWizard(resource,
childType);
+ final Menu createChildSubMenu = new Menu();
+ final Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
+
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterParentResourceId(resource.getId());
+ GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
+ new AsyncCallback<PageList<Resource>>() {
+
+ @Override
+ public void onSuccess(PageList<Resource> result) {
+ Menu filteredSubmenu = checkForSingletons(result, resource,
displayNameMap,
+ createChildSubMenu);
+ createChildMenu.setSubmenu(filteredSubmenu);
+ resourceContextMenu.addItem(createChildMenu);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.error("Error resources with parentId:" +
resource.getId(), caught);
}
});
- createChildSubMenu.addItem(createItem);
- }
- createChildMenu.setSubmenu(createChildSubMenu);
- }
- resourceContextMenu.addItem(createChildMenu);
+ } else {
+ resourceContextMenu.addItem(createChildMenu);
+ }
}
// Manual Import Menu
Set<ResourceType> importableChildTypes =
getImportableChildTypes(resourceType);
if (!importableChildTypes.isEmpty()) {
- MenuItem importChildMenu = new MenuItem(MSG.common_button_import());
+ final MenuItem importChildMenu = new MenuItem(MSG.common_button_import());
boolean hasManualImportPermission =
resourcePermission.isCreateChildResources();
importChildMenu.setEnabled(hasManualImportPermission);
if (hasManualImportPermission) {
- Menu importChildSubMenu = new Menu();
- Map<String, ResourceType> displayNameMap =
getDisplayNames(importableChildTypes);
- Set<String> displayNames = displayNameMap.keySet();
- for (final String displayName : displayNames) {
- MenuItem importItem = new MenuItem(displayName);
- final ResourceType childType = displayNameMap.get(displayName);
- importItem.addClickHandler(new ClickHandler() {
- public void onClick(MenuItemClickEvent event) {
- ResourceFactoryImportWizard.showImportWizard(resource,
childType);
+ final Menu importChildSubMenu = new Menu();
+ final Map<String, ResourceType> displayNameMap =
getDisplayNames(creatableChildTypes);
+
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterParentResourceId(resource.getId());
+ GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria,
+ new AsyncCallback<PageList<Resource>>() {
+
+ @Override
+ public void onSuccess(PageList<Resource> result) {
+ Menu filteredSubmenu = checkForSingletons(result, resource,
displayNameMap,
+ importChildSubMenu);
+ importChildMenu.setSubmenu(filteredSubmenu);
+ resourceContextMenu.addItem(importChildMenu);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.error("Error resources with parentId:" +
resource.getId(), caught);
}
});
- importChildSubMenu.addItem(importItem);
+
+ } else {
+ resourceContextMenu.addItem(importChildMenu);
+ }
+ }
+ }
+
+ private Menu checkForSingletons(PageList<Resource> siblings, final Resource
resource,
+ Map<String, ResourceType> displayNameMap, Menu submentuToAdd) {
+ Set<String> displayNames = displayNameMap.keySet();
+ for (final String displayName : displayNames) {
+ MenuItem itemToAdd = new MenuItem(displayName);
+ final ResourceType childType = displayNameMap.get(displayName);
+ boolean disabled = false;
+ // for each already added child, check if the type is the same.
+ // If yes, disable the menu item
+ if (displayNameMap.get(displayName).isSingleton()) {
+ for (Resource sibling : siblings) {
+ if
(sibling.getResourceType().equals(displayNameMap.get(displayName))) {
+ disabled = true;
+ break;
+ }
}
- importChildMenu.setSubmenu(importChildSubMenu);
}
- resourceContextMenu.addItem(importChildMenu);
+ // if the condition obove is not satisfied, add the menu item
+ if (!disabled) {
+ itemToAdd.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent event) {
+ ResourceFactoryImportWizard.showImportWizard(resource,
childType);
+ }
+ });
+ submentuToAdd.addItem(itemToAdd);
+ }
+
}
+ return submentuToAdd;
}
/**
@@ -692,7 +740,7 @@ public class ResourceTreeView extends LocatableVLayout {
//2 lines could be uncommented and the lines
below them refactorized
//MeasurementUserPreferences
measurementPreferences = new
MeasurementUserPreferences(UserSessionManager.getUserPreferences());
//String selectedView =
measurementPreferences.getSelectedView(String.valueOf(resource.getId()));
-
+
final int sid =
UserSessionManager.getSessionSubject().getId();
SubjectCriteria c = new SubjectCriteria();
c.addFilterId(sid);
@@ -701,11 +749,15 @@ public class ResourceTreeView extends LocatableVLayout {
new
AsyncCallback<PageList<Subject>>() {
public void
onSuccess(PageList<Subject> result) {
if (result.size() > 0) {
- UserPreferences uPreferences
= new UserPreferences(result.get(0));
- MeasurementUserPreferences
mPreferences = new MeasurementUserPreferences(uPreferences);
- String selectedView =
mPreferences.getSelectedView(String.valueOf(resource.getId()));
-
-
addNewMetric(String.valueOf(resource.getId()), selectedView, resourceGraphElements);
+ UserPreferences uPreferences
= new UserPreferences(result
+ .get(0));
+ MeasurementUserPreferences
mPreferences = new MeasurementUserPreferences(
+ uPreferences);
+ String selectedView =
mPreferences.getSelectedView(String
+
.valueOf(resource.getId()));
+
+
addNewMetric(String.valueOf(resource.getId()),
+ selectedView,
resourceGraphElements);
} else {
Log.trace("Error
obtaining subject with id:" + sid);
}
@@ -727,9 +779,9 @@ public class ResourceTreeView extends LocatableVLayout {
measurements.setSubmenu(measurementsSubMenu);
return measurements;
}
-
+
private void addNewMetric(String id, String selectedView, String
resourceGraphElements) {
- //construct portal.war url to access
+ //construct portal.war url to access
String baseUrl =
"/resource/common/monitor/visibility/IndicatorCharts.do";
baseUrl += "?id=" + id;
baseUrl += "&view=" + selectedView;
@@ -740,10 +792,8 @@ public class ResourceTreeView extends LocatableVLayout {
try {
b.setCallback(new RequestCallback() {
- public void onResponseReceived(final Request request,
- final Response response) {
- Log.trace("Successfully submitted request to add graph to
view:"
- + url);
+ public void onResponseReceived(final Request request, final Response
response) {
+ Log.trace("Successfully submitted request to add graph to
view:" + url);
//kick off a page reload.
String currentViewPath = History.getToken();
commit c52b96d87f9e504fbc594a08f08f76239c5435e4
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 29 21:59:59 2012 +0200
BZ 826228 . Suppress AS7-ISPN type if JDG is deployed. Also remove JDG types from
AS7-descriptor
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index d267bb5..deec7a3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -31,6 +31,7 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
@@ -84,6 +85,11 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
lookForChildren = true;
}
+ if (isIspnForJDG(context, confPath)) {
+ log.debug("We have JDG as child, ignoring the {JBossAS7}Infinispan
type");
+ return details;
+ }
+
// Construct the full path including the parent
String path;
String parentPath = parentComponent.getPath();
@@ -184,4 +190,40 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
return details;
}
+ private boolean isIspnForJDG(ResourceDiscoveryContext<BaseComponent<?>>
context, String confPath) {
+
+ // Check if this is ISPN
+ if (!"subsystem=infinispan".equals(confPath))
+ return false;
+
+ ResourceType ourType = context.getResourceType();
+ if (ourType.getPlugin().equals("JDG"))
+ return false;
+
+ if (!ourType.getName().equals("Infinispan"))
+ return false;
+
+ // So we are {JBossAS7}Infinispan
+ Set<ResourceType> parentTypes = ourType.getParentResourceTypes();
+ ResourceType parent = null;
+ for (ResourceType type : parentTypes) {
+ if (type.getName().equals("JBossAS7 Standalone Server") &&
type.getPlugin().equals("JBossAS7")) {
+ parent = type;
+ break;
+ }
+ }
+ if (parent==null)
+ return false;
+
+ // So we are as7/eap and need to check now if we have a JDG plugin's ISPN
resource as child
+ boolean found = false;
+ for (ResourceType type: parent.getChildResourceTypes()) {
+ if (type.getPlugin().equals("JDG") &&
type.getName().equals("Infinispan")) {
+ found = true;
+ }
+ }
+
+ return found;
+ }
+
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 7ce54e9..dd36061 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -7928,102 +7928,6 @@
</service>
-
- <service name="Datagrid Endpoints"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true">
-
- <runs-inside>
- <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=endpoint"/>
- </plugin-configuration>
-
-
- <service name="Hotrod Connector"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both"
- creationDataType="configuration">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="hotrod-connector"/>
- </plugin-configuration>
-
- <resource-configuration>
- <!--<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name to give to
this connector"/>-->
- <c:simple-property name="cache-container" required="true"
type="string" readOnly="true" description="The cache container to
use">
- <c:option-source target="resource"
expression="type='^Cache Container$'"/>
- </c:simple-property>
- <c:simple-property name="socket-binding" required="true"
type="string" readOnly="true" description="The socket binding to
use for this connector">
- <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
- </c:simple-property>
- <c:simple-property name="worker-threads" required="false"
type="integer" readOnly="true" description="The number of worker
threads to use for this connector"/>
- <c:simple-property name="idle-timeout" required="false"
type="long" readOnly="true" description="The timeout for idle
connections"/>
- <c:simple-property name="tcp-nodelay" required="false"
type="boolean" readOnly="true" description="Whether to use TCP
NO_DELAY"/>
- <c:simple-property name="receive-buffer-size"
required="false" type="long" readOnly="true"
description="Size of the receive buffer"/>
- <c:simple-property name="send-buffer-size"
required="false" type="long" readOnly="true"
description="Size of the send buffer"/>
- <!-- TODO add topology state transfer -->
- </resource-configuration>
-
- </service>
-
- <service name="Memcached Connector"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both"
- creationDataType="configuration">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="memcached-connector"/>
- </plugin-configuration>
-
- <resource-configuration>
- <!--<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name to give to
this connector"/>-->
- <c:simple-property name="cache-container" required="true"
type="string" readOnly="true" description="The cache container to
use">
- <c:option-source target="resource"
expression="type='^Cache Container$'"/>
- </c:simple-property>
- <c:simple-property name="socket-binding" required="true"
type="string" readOnly="true" description="The socket binding to
use for this connector">
- <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
- </c:simple-property>
- <c:simple-property name="worker-threads" required="false"
type="integer" readOnly="true" description="The number of worker
threads to use for this connector"/>
- <c:simple-property name="idle-timeout" required="false"
type="long" readOnly="true" description="The timeout for idle
connections"/>
- <c:simple-property name="tcp-nodelay" required="false"
type="boolean" readOnly="true" description="Whether to use TCP
NO_DELAY"/>
- <c:simple-property name="receive-buffer-size"
required="false" type="long" readOnly="true"
description="Size of the receive buffer"/>
- <c:simple-property name="send-buffer-size"
required="false" type="long" readOnly="true"
description="Size of the send buffer"/>
- <!-- TODO add topology state transfer -->
- </resource-configuration>
-
- </service>
-
- <service name="REST Connector"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both"
- creationDataType="configuration">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="rest-connector"/>
- </plugin-configuration>
-
- <resource-configuration>
- <!--<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name to give to
this connector"/>-->
- <c:simple-property name="cache-container" required="true"
type="string" readOnly="true" description="The cache container to
use">
- <c:option-source target="resource"
expression="type='^Cache Container'"/>
- </c:simple-property>
- <c:simple-property name="virtual-server" required="false"
type="string" readOnly="true" description="The virtual server on
which the REST connector should be published">
- <c:option-source target="resource"
expression="type=VHost"/>
- </c:simple-property>
- <c:simple-property name="context-path" required="false"
type="string" readOnly="true" description="The context path on
which the REST connector should be published"/>
- </resource-configuration>
- </service>
-
- </service>
-
-
<service name="Webservices"
discovery="SubsystemDiscovery"
class="WebservicesComponent"
commit 0c2848153584f2fd46d8f881bfe179ce06ea69a6
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue May 29 13:30:13 2012 -0400
adding version string for beta release
diff --git
a/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
b/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
index 3cf8566..2e81763 100644
---
a/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
+++
b/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
@@ -49,6 +49,7 @@ public class ComparableVersionTest {
JON_VERSIONS.add("4.2.0.JON300.GA");
JON_VERSIONS.add("4.2.0.JON.3.0.1.GA");
JON_VERSIONS.add("4.2.0.JON302GA");
+ JON_VERSIONS.add("4.4.0.JON310BETA1");
JON_VERSIONS.add("4.4.0.JON310CR1");
JON_VERSIONS.add("4.4.0.JON310GA");
JON_VERSIONS.add("4.4.1.JON311GA");
commit 82e88e25baa7502b4586d62775654d5012c63a01
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue May 29 12:59:39 2012 -0400
Adding version string for CR1 build
diff --git
a/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
b/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
index 64c9369..3cf8566 100644
---
a/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
+++
b/modules/core/util/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
@@ -49,6 +49,7 @@ public class ComparableVersionTest {
JON_VERSIONS.add("4.2.0.JON300.GA");
JON_VERSIONS.add("4.2.0.JON.3.0.1.GA");
JON_VERSIONS.add("4.2.0.JON302GA");
+ JON_VERSIONS.add("4.4.0.JON310CR1");
JON_VERSIONS.add("4.4.0.JON310GA");
JON_VERSIONS.add("4.4.1.JON311GA");
}
commit b2226a282fbaa992775f5fa11cb138254ba6f23f
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue May 29 12:13:52 2012 -0400
[Bug 826047 - Slow availability check can hang discovery]
- Now uses proxy and applies configured avail timeout to
getAvailability() calls.
- Also, now only perform an avail check on server resources or
if the current avail is NOT UP. (i.e. assume UP services are still
UP, which eliminates a lot of avail checking for the standard case)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
index 44a388d..b4d7106 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
@@ -67,7 +67,7 @@ public class AvailabilityExecutor implements Runnable,
Callable<AvailabilityRepo
// want to encourage people from changing this, we do not expose this
"backdoor" system property as a
// standard plugin configuration setting/agent preference - if someone wants to do
this, they must
// explicitly pass in -D to the JVM running the plugin container.
- private static final int GET_AVAILABILITY_TIMEOUT;
+ static final int GET_AVAILABILITY_TIMEOUT;
private static final Random RANDOM = new Random();
static {
int timeout;
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
index f69bdfb..978083a 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
@@ -36,15 +36,18 @@ import org.jetbrains.annotations.NotNull;
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
+import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.plugin.PluginComponentFactory;
+import org.rhq.core.pc.util.FacetLockType;
+import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.core.pluginapi.inventory.ProcessScanResult;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.util.exception.ExceptionPackage;
import org.rhq.core.util.exception.Severity;
@@ -184,14 +187,6 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
return;
}
- ResourceComponent parentComponent = parentContainer.getResourceComponent();
- if (parentComponent == null) {
- if (log.isDebugEnabled()) {
- log.debug("Parent component for [" + parent + "] was null;
cannot perform service scan.");
- }
- return;
- }
-
// For each child resource type of the server, do a discovery for resources of
that type
Set<ResourceType> childResourceTypes =
parent.getResourceType().getChildResourceTypes();
if (null == childResourceTypes || childResourceTypes.isEmpty()) {
@@ -204,23 +199,51 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
}
}
- // Do a live check of availability here. This won't set the availability
anywhere but will allow us
- // to find nested resources, i.e. children of resources we've found during
our recursive call
- // to discoverForResource(). Without this live check, the availability of these
newly discovered
- // resources would be null, so we would just return without checking for their
children. Also, we don't
- // want to do discovery for a NOT UP parent.
- AvailabilityType availability;
- ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- try {
-
Thread.currentThread().setContextClassLoader(parentContainer.getResourceClassLoader());
- availability = parentComponent.getAvailability();
- } catch (Exception e) {
- availability = AvailabilityType.DOWN;
- } finally {
- Thread.currentThread().setContextClassLoader(originalCL);
+ // At this point we used to always do a live check of availability. This buys us
very little and
+ // costs us a lot. For a platform-rooted scan this ends up being an avail check
for all but leaf
+ // nodes of the tree. That is costly on top of the discovery check itself, and
is antithetical to
+ // the whole staggered avail-check approach we now have in place. We can't
even update the container
+ // with the avail check result, because all changes in avail need to be detected
and reported by the
+ // AvailabilityExecutor. We did the avail check for two reasons. If there is no
current avail we
+ // need to establish one because it may be for a resource newly discovered by
this scan, and we need to know
+ // if we can in turn perform discovery on it. We still need to do this check.
The second was to perform
+ // discovery only on UP resources. We can keep this logic but just use the
current availability
+ // stored in the container. It may be stale, but it is likely valid, as avail
does not often change.
+ // An argument could be made to always use the currently stored avail, but
currently we've decided
+ // to still perform the check in two cases: if the current avail is not UP or if
the resource category is
+ // SERVER. This means we won't miss an opportunity to do discovery for stale
DOWN resource, and we won't
+ // waste time doing discovery on a stale UP SERVER, which can be time consuming.
Since most resources are
+ // SERVICEs, and also are typically UP and stay UP, perfoming checks in these two
situations should
+ // not add much overhead. Finally, make sure to use facet proxy to do the avail
check, this allows us to use
+ // a timeout, and therefore not hang discovery if the avail check is slow.
+ Availability currentAvailability = parentContainer.getAvailability();
+ AvailabilityType currentAvailabilityType = (null == currentAvailability) ?
AvailabilityType.DOWN
+ : currentAvailability.getAvailabilityType();
+
+ // If there is no current avail, or this is a SERVER, we must perfom the live
check.
+ if (AvailabilityType.UP != currentAvailabilityType
+ || ResourceCategory.SERVER ==
parentContainer.getResource().getResourceType().getCategory()) {
+
+ AvailabilityFacet parentComponent = null;
+ try {
+ parentComponent =
parentContainer.createResourceComponentProxy(AvailabilityFacet.class,
+ FacetLockType.NONE, AvailabilityExecutor.GET_AVAILABILITY_TIMEOUT,
true, false);
+
+ } catch (PluginContainerException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parent component for [" + parent + "] was
null; cannot perform service scan.");
+ }
+ return;
+ }
+
+ try {
+ currentAvailabilityType = parentComponent.getAvailability();
+ } catch (Exception e) {
+ currentAvailabilityType = AvailabilityType.DOWN;
+ }
}
- if (availability != AvailabilityType.UP) {
+ if (AvailabilityType.UP != currentAvailabilityType) {
if (log.isDebugEnabled()) {
log.debug("Availability of [" + parent + "] is not UP,
cannot perform service scan on it.");
}
commit b66405dc9fbb7327a52cbd02e74b91915134a71d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 29 15:46:40 2012 +0200
Add a link to group definitions.
diff --git a/modules/enterprise/gui/rest-war/src/main/webapp/index.html
b/modules/enterprise/gui/rest-war/src/main/webapp/index.html
index faaad33..0ab715a 100644
--- a/modules/enterprise/gui/rest-war/src/main/webapp/index.html
+++ b/modules/enterprise/gui/rest-war/src/main/webapp/index.html
@@ -13,6 +13,7 @@ mobile client (Android) of the API.
<ul>
<li><a
href="1/resource/platforms.html">Platforms</a></li>
<li><a href="1/group/">Groups</a></li>
+ <li><a href="1/group/definitions">Group
Definitions</a></li>
<li><a href="1/alert/">Alerts</a></li>
<li><a href="1/status.html">System status</a>
</li>
</ul>
commit e9c19a7698a7eef468e9e184d7e8a75a78670751
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 29 09:15:31 2012 -0400
[BZ 820570] fix a bug in the original fix, which caused an
"IllegalArgumentException: URI is not absolute" error when trying to parse a -P
option value that was a relative path
(
https://bugzilla.redhat.com/show_bug.cgi?id=820570)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7CommandLine.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7CommandLine.java
index 9f5e355..b44ceb3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7CommandLine.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7CommandLine.java
@@ -26,7 +26,6 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
-import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collections;
@@ -146,7 +145,7 @@ public class AS7CommandLine extends JavaCommandLine {
private URL toURL(String value) {
URL propertiesURL;
try {
- propertiesURL = URI.create(value).toURL();
+ propertiesURL = new URL(value);
if (propertiesURL.getProtocol().equals("file")) {
String path = propertiesURL.getPath();
File file = new File(path);
@@ -156,13 +155,13 @@ public class AS7CommandLine extends JavaCommandLine {
propertiesURL = absoluteFile.toURI().toURL();
}
}
- } catch (MalformedURLException e) {
+ } catch (MalformedURLException murle) {
// it's probably just a path, e.g.
"/opt/jboss-as-7.1.1.Final/bin/jboss-as.properties" or
"jboss-as.properties"
File file = new File(value);
File absoluteFile = getAbsoluteFile(file);
try {
propertiesURL = absoluteFile.toURI().toURL();
- } catch (MalformedURLException e1) {
+ } catch (MalformedURLException murle2) {
propertiesURL = null;
log.error("Value of class option " + PROPERTIES_OPTION + "
(" + value + ") is not a valid URL.");
}
commit d2f5eff25a2d69d7a9664a676a5c6236f6ff85bc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 29 14:16:10 2012 +0200
Fix typo
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
index 79d5e27..4bc7056 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
@@ -37,7 +37,7 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
/**
- * Test stuff around socket bindings.
+ * Test stuff around naming subsystem
* This could actually also run for domain mode
* @author Heiko W. Rupp
*/
commit 918a99c026a1325954fa61fbaaefcbede41098bb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 29 14:15:50 2012 +0200
BZ 782598 Fix bug in pseudo-metric collection and remove formerly needed
enable/disable wrapper
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
index aff50e2..a4efae1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
@@ -127,44 +127,6 @@ public class DatasourceComponent extends
BaseComponent<BaseComponent<?>> impleme
return resourceReport;
}
- void addAdditionalToOp(Operation op, Configuration parameters, String parameterName,
boolean optional) {
- String value = parameters.getSimpleValue(parameterName, null);
- if (value == null) {
- if (!optional) {
- throw new IllegalArgumentException("Required parameter [" +
parameterName + "] for operation ["
- + op.getName() + "] is not defined.");
- }
- } else {
- op.addAdditionalProperty(parameterName, value);
- }
- }
-
- void addRequiredToOp(Operation op, Configuration parameters, String property) {
- addAdditionalToOp(op, parameters, property, false);
- }
-
- void addOptionalToOp(Operation op, Configuration parameters, String property) {
- addAdditionalToOp(op, parameters, property, true);
- }
-
- @Override
- public void updateResourceConfiguration(ConfigurationUpdateReport report) {
-
- Operation op = new Operation("disable", getAddress());
- Result res = getASConnection().execute(op);
- if (!res.isSuccess()) {
- report.setErrorMessage("Was not able to disable the datasource for
config changes: "
- + res.getFailureDescription());
- return;
- }
-
- super.updateResourceConfiguration(report);
-
- op = new Operation("enable", getAddress());
- res = getASConnection().execute(op);
-
- }
-
@Override
public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
requests) throws Exception {
@@ -217,14 +179,14 @@ public class DatasourceComponent extends
BaseComponent<BaseComponent<?>> impleme
Result res = getASConnection().execute(op);
if (res.isSuccess()) {
- String tmp = (String) res.getResult();
+ Integer tmp = (Integer) res.getResult();
if (tmp == null) { // server
if (request.getName().equals("max-pool-size"))
- tmp = "20"; // The default value
+ tmp = 20; // The default value
else if (request.getName().equals("min-pool-size"))
- tmp = "0"; // The default value
+ tmp = 0; // The default value
else
- tmp ="-1"; // Fallback for unknown requests
+ tmp =-1; // Fallback for unknown requests
}
Double val = Double.valueOf(tmp);
MeasurementDataNumeric data = new MeasurementDataNumeric(request, val);
commit 74bef966894fb0fd3b77ef88b2359af8308c01c8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 29 14:15:35 2012 +0200
BZ 826008 Deliver both signal reload/restart to the server.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 30fe82b..60a5151 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -284,6 +284,11 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
PropertySimple oobMessage = new PropertySimple("__OOB","The
server needs a reload for the latest changes to come effective.");
configuration.put(oobMessage);
}
+ if (res.isRestartRequired()) {
+ PropertySimple oobMessage = new PropertySimple("__OOB",
+ "The server needs a restart for the latest changes to come
effective.");
+ configuration.put(oobMessage);
+ }
return configuration;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
index a2e6cc1..d6d7329 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
@@ -109,9 +109,18 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
}
else {
report.setStatus(ConfigurationUpdateStatus.SUCCESS);
- // TODO how to signal "need reload"
+ // signal "need reload"
+ if (result.isReloadRequired()) {
+ PropertySimple oobMessage = new PropertySimple("__OOB",
+ "The server needs a reload for the latest changes to come
effective.");
+ conf.put(oobMessage);
+ }
+ if (result.isRestartRequired()) {
+ PropertySimple oobMessage = new PropertySimple("__OOB",
+ "The server needs a restart for the latest changes to come
effective.");
+ conf.put(oobMessage);
+ }
}
-
}
protected CompositeOperation updateGenerateOperationFromProperties(Configuration
conf, Address address) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index 2c34641..3fbdb90 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -88,6 +88,19 @@ public class Result {
return false;
}
+ @JsonIgnore
+ public boolean isRestartRequired() {
+ if (responseHeaders == null)
+ return false;
+ if (responseHeaders instanceof Map) {
+ Map<String, Object> map = (Map<String, Object>) responseHeaders;
+ if (map.containsKey("process-state") &&
map.get("process-state").equals("restart-required")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public boolean isSuccess() {
return success;
}
commit 46f0fdb4bf6ef4bd40b3a9f24ce93a4074dc0dcb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 28 18:58:24 2012 +0200
Add support for GroupDefinitions to the REST api
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
index 76180d9..405a439 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerBean.java
@@ -9,11 +9,13 @@ import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
@@ -29,12 +31,21 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeNotFoundException;
import org.rhq.enterprise.server.resource.group.ResourceGroupDeleteException;
import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
+import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerLocal;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionAlreadyExistsException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionCreateException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionDeleteException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionNotFoundException;
+import org.rhq.enterprise.server.rest.domain.GroupDefinitionRest;
import org.rhq.enterprise.server.rest.domain.GroupRest;
import org.rhq.enterprise.server.rest.domain.Link;
import org.rhq.enterprise.server.rest.domain.ResourceWithType;
@@ -58,6 +69,9 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
@EJB
ResourceTypeManagerLocal resourceTypeManager;
+ @EJB
+ GroupDefinitionManagerLocal definitionManager;
+
public Response getGroups(@Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo) {
ResourceGroupCriteria criteria = new ResourceGroupCriteria();
@@ -283,4 +297,190 @@ public class GroupHandlerBean extends AbstractRestBean implements
GroupHandlerLo
return gr;
}
+
+ @Override
+ @GET
+ @Path("/definitions")
+ public Response getDefinitions(@Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
+
+ PageList<GroupDefinition> gdlist =
definitionManager.getGroupDefinitions(caller,new PageControl());
+ List<GroupDefinitionRest> list = new
ArrayList<GroupDefinitionRest>(gdlist.getTotalSize());
+ for (GroupDefinition def: gdlist) {
+ GroupDefinitionRest definitionRest = new
GroupDefinitionRest(def.getId(),def.getName(),def.getDescription(),
+ def.getRecalculationInterval());
+ definitionRest.setExpression(def.getExpressionAsList());
+
+ List<Integer> generatedGroups = new
ArrayList<Integer>(def.getManagedResourceGroups().size());
+ for (ResourceGroup group : def.getManagedResourceGroups() ) {
+ generatedGroups.add(group.getId());
+ }
+ definitionRest.setGeneratedGroupIds(generatedGroups);
+ list.add(definitionRest);
+ }
+
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+
+ if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("listGroupDefinition", list),
mediaType);
+ }
+ else {
+ GenericEntity<List<GroupDefinitionRest>> ret = new
GenericEntity<List<GroupDefinitionRest>>(list) {
+ };
+ builder = Response.ok(ret);
+ }
+
+ return builder.build();
+ }
+
+ @Override
+ @GET
+ @Path("/definition/{id}")
+ public Response getDefinition(@PathParam("id") int definitionId, @Context
Request request,
+ @Context HttpHeaders headers, @Context UriInfo uriInfo)
{
+
+ try {
+ GroupDefinition def = definitionManager.getById(definitionId);
+ GroupDefinitionRest gdr = new
GroupDefinitionRest(def.getId(),def.getName(),def.getDescription(),
def.getRecalculationInterval());
+ gdr.setRecursive(def.isRecursive());
+ List<Integer> generatedGroups = new
ArrayList<Integer>(def.getManagedResourceGroups().size());
+ for (ResourceGroup group : def.getManagedResourceGroups() ) {
+ generatedGroups.add(group.getId());
+ }
+ gdr.setGeneratedGroupIds(generatedGroups);
+ gdr.setExpression(def.getExpressionAsList());
+
+ MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
+ Response.ResponseBuilder builder;
+ if (mediaType.equals(MediaType.TEXT_HTML_TYPE)) {
+ builder = Response.ok(renderTemplate("groupDefinition", gdr),
mediaType);
+ }
+ else {
+ builder= Response.ok(gdr);
+ }
+ return builder.build();
+ } catch (GroupDefinitionNotFoundException e) {
+ throw new StuffNotFoundException("Group definition with id " +
definitionId);
+ }
+ }
+
+ @Override
+ @DELETE
+ @Path("/definition/{id}")
+ public Response deleteDefinition(@PathParam("id") int definitionId,
@Context Request request,
+ @Context HttpHeaders headers, @Context UriInfo
uriInfo) {
+
+ try {
+ GroupDefinition def = definitionManager.getById(definitionId);
+ definitionManager.removeGroupDefinition(caller,definitionId);
+ return Response.ok().build();
+ } catch (GroupDefinitionNotFoundException e) {
+ // Idem potent
+ return Response.ok().build();
+ } catch (GroupDefinitionDeleteException e) {
+ throw new StuffNotFoundException("Group definition with id " +
definitionId);
+ }
+ }
+
+ @Override
+ @POST
+ @Path("/definitions")
+ public Response createDefinition(
+ GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo) {
+
+ Response.ResponseBuilder builder = null;
+
+ if (definition.getName()==null||definition.getName().isEmpty()) {
+ builder = Response.status(Response.Status.NOT_ACCEPTABLE);
+ builder.entity("No name for the definition given");
+ }
+ if (builder!=null)
+ return builder.build();
+
+
+ GroupDefinition gd = new GroupDefinition(definition.getName());
+ gd.setDescription(definition.getDescription());
+ List<String> expressionList = definition.getExpression();
+ StringBuilder sb = new StringBuilder();
+ for(String e : expressionList ) {
+ sb.append(e);
+ sb.append("\n");
+ }
+ gd.setExpression(sb.toString());
+ gd.setRecalculationInterval(definition.getRecalcInterval());
+ gd.setRecursive(definition.isRecursive());
+
+ try {
+ GroupDefinition res = definitionManager.createGroupDefinition(caller,gd);
+ UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/group/definition/{id}");
+ URI location = uriBuilder.build(res.getId());
+ builder= Response.created(location);
+
+ } catch (GroupDefinitionAlreadyExistsException e) {
+ builder =Response.status(Response.Status.CONFLICT);
+ } catch (GroupDefinitionCreateException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
+ }
+ return builder.build();
+ }
+
+ @Override
+ @PUT
+ @Path("/definition/{id}")
+ public Response updateDefinition(@PathParam("id") int definitionId,
+ boolean recalculate, GroupDefinitionRest
definition,
+ @Context Request request, @Context HttpHeaders
headers, @Context UriInfo uriInfo) {
+
+ GroupDefinition gd;
+ try {
+ gd = definitionManager.getById(definitionId);
+ } catch (GroupDefinitionNotFoundException e) {
+ throw new StuffNotFoundException("Group Definition with id " +
definitionId);
+ }
+
+ Response.ResponseBuilder builder = null;
+
+ if (!definition.getName().isEmpty())
+ gd.setName(definition.getName());
+ gd.setDescription(definition.getDescription());
+ List<String> expressionList = definition.getExpression();
+ StringBuilder sb = new StringBuilder();
+ for(String e : expressionList ) {
+ sb.append(e);
+ sb.append("\n");
+ }
+ gd.setExpression(sb.toString());
+
+ gd.setRecalculationInterval(definition.getRecalcInterval());
+ gd.setRecursive(definition.isRecursive());
+
+ try {
+ definitionManager.updateGroupDefinition(caller,gd);
+ } catch (Exception e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ builder = Response.status(Response.Status.NOT_ACCEPTABLE);
+ builder.entity(e.getLocalizedMessage());
+ return builder.build();
+ }
+
+ String msg=null;
+ if (recalculate) {
+ try {
+ definitionManager.calculateGroupMembership(caller,gd.getId());
+ } catch (Exception e) {
+ msg = e.getLocalizedMessage();
+// e.printStackTrace(); // TODO: Customise this generated block
+ }
+ }
+ builder = Response.ok(gd);
+ if (msg!=null) {
+ builder.entity(msg);
+ }
+
+ return builder.build();
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
index d742139..3d3a197 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/GroupHandlerLocal.java
@@ -1,13 +1,16 @@
package org.rhq.enterprise.server.rest;
import javax.ejb.Local;
+import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@@ -17,6 +20,7 @@ import javax.ws.rs.core.UriInfo;
import org.jboss.resteasy.annotations.cache.Cache;
+import org.rhq.enterprise.server.rest.domain.GroupDefinitionRest;
import org.rhq.enterprise.server.rest.domain.GroupRest;
/**
@@ -75,4 +79,38 @@ public interface GroupHandlerLocal {
public Response removeResource(@PathParam("id") int id,
@PathParam("resourceId") int resourceId,
@Context Request request, @Context HttpHeaders
headers,
@Context UriInfo uriInfo);
+
+ @GET
+ @Path("/definitions")
+ public Response getDefinitions(@Context Request request,@Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
+
+ @GET
+ @Path("/definition/{id}")
+ public Response getDefinition(@PathParam("id") int definitionId,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
+ @DELETE
+ @Path("/definition/{id}")
+ public Response deleteDefinition(@PathParam("id") int definitionId,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
+
+ @POST
+ @Path("/definitions")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ public Response createDefinition(
+ GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
+
+ @PUT
+ @Path("/definition/{id}")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ public Response updateDefinition(@PathParam("id") int definitionId,
+ @QueryParam("recalculate")
@DefaultValue("false") boolean recalculate,
+ GroupDefinitionRest definition,
+ @Context Request request, @Context HttpHeaders
headers,
+ @Context UriInfo uriInfo);
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
new file mode 100644
index 0000000..1fc7b25
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/GroupDefinitionRest.java
@@ -0,0 +1,107 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.rest.domain;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * A group definition ("Dyna Group definition")
+ * @author Heiko W. Rupp
+ */
+@XmlRootElement(name="groupDefinition")
+public class GroupDefinitionRest {
+
+ private int id;
+ private String name;
+ private String description;
+ private List<String> expression;
+ private long recalcInterval;
+ private boolean recursive=false;
+ List<Integer> generatedGroupIds;
+
+ public GroupDefinitionRest() {
+ }
+
+ public GroupDefinitionRest(int id, String name, String description, long
recalcInterval) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
+ this.recalcInterval = recalcInterval;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public List<String> getExpression() {
+ return expression;
+ }
+
+ public void setExpression(List<String> expression) {
+ this.expression = expression;
+ }
+
+ public long getRecalcInterval() {
+ return recalcInterval;
+ }
+
+ public void setRecalcInterval(long recalcInterval) {
+ this.recalcInterval = recalcInterval;
+ }
+
+ public List<Integer> getGeneratedGroupIds() {
+ return generatedGroupIds;
+ }
+
+ public void setGeneratedGroupIds(List<Integer> generatedGroupIds) {
+ this.generatedGroupIds = generatedGroupIds;
+ }
+
+ public boolean isRecursive() {
+ return recursive;
+ }
+
+ public void setRecursive(boolean recursive) {
+ this.recursive = recursive;
+ }
+}
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/groupDefinition.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/groupDefinition.ftl
new file mode 100644
index 0000000..59aa4da
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/groupDefinition.ftl
@@ -0,0 +1,62 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="org.rhq.enterprise.server.rest.domain.GroupDefinitionRest" -->
+<html>
+ <table>
+ <thead>
+ <tr>
+ <td>Name</td><td>Value</td>
+ </tr>
+ </thead>
+ <tr>
+ <td>Name</td><td>${var.name}</td>
+ </tr>
+ <tr>
+ <td>Id</td><td>${var.id}</td>
+ </tr>
+ <tr>
+ <td>Description</td><td>${var.description}</td>
+ </tr>
+ <tr>
+ <td>Recalculation interval
(ms)</td><td>${var.recalcInterval}</td>
+ </tr>
+ <tr>
+
<td>Recursive</td><td>${var.recursive?string("Yes","No")}</td>
+ </tr>
+ <tr>
+ <td>Expression</td>
+ <td>
+ <#list var.expression as line>
+ ${line}<br/>
+ </#list>
+ </td>
+ </tr>
+ <tr>
+ <td>Groups</td>
+ <td>
+ <#list var.generatedGroupIds as groupId>
+ <a
href="/rest/1/group/${groupId?c}.html">${groupId?c}</a>
+ </#list>
+ </td>
+ </tr>
+ </table>
+</html>
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listGroupDefinition.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listGroupDefinition.ftl
new file mode 100644
index 0000000..15e8272
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listGroupDefinition.ftl
@@ -0,0 +1,37 @@
+<#ftl >
+<#--
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+-->
+<#-- @ftlvariable name="var"
type="java.util.List<org.rhq.enterprise.server.rest.domain.GroupDefinitionRest>"
-->
+<html>
+<ul>
+ <#-- the next looks odd, but the incoming var is a list -->
+ <#if (var?size>0) >
+ <#list var as var>
+ <li>
+ <#include "groupDefinition.ftl"/>
+ </li>
+ </#list>
+ <#else>
+ <strong>No Definitions have been set up</strong>
+ </#if>
+
+</ul>
+<html>
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listMetricSchedule.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listMetricSchedule.ftl
index 7ef3fe9..b351644 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listMetricSchedule.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listMetricSchedule.ftl
@@ -2,7 +2,7 @@
<#--
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listResourceWithType.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listResourceWithType.ftl
index 132d7cb..820a722 100644
---
a/modules/enterprise/server/jar/src/main/resources/rest_templates/listResourceWithType.ftl
+++
b/modules/enterprise/server/jar/src/main/resources/rest_templates/listResourceWithType.ftl
@@ -2,7 +2,7 @@
<#--
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
diff --git
a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
index 0a0f187..e05012e 100644
--- a/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
+++ b/modules/enterprise/server/jar/src/main/resources/rest_templates/metricSchedule.ftl
@@ -2,7 +2,7 @@
<#--
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
commit 1a22c2832205f795585cab703ec591ad81aee9cf
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Mon May 28 10:45:14 2012 +0200
typo ('mavev -> maven')
diff --git a/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/pom.xml
b/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/pom.xml
index b418199..ac958e3 100644
--- a/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/etc/m2/smartgwt-war-archetype/src/main/resources/archetype-resources/pom.xml
@@ -73,7 +73,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
- <version>${gwt.mavev.plugin.version}</version>
+ <version>${gwt.maven.plugin.version}</version>
<executions>
<execution>
commit e64a55be3956635df78bd35676f29d4f8a3fa3bd
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Sun May 27 17:48:16 2012 -0500
[BZ 811288] Add a separate descriptor for the logging subsystem only to managed
server. The same descriptor will be shared by standalone and profile.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index b2545f1..7ce54e9 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -219,6 +219,26 @@
</c:simple-property>
'>
+ <!ENTITY logLevelReadOnly '
+ <c:simple-property name="level" required="false"
type="string" readOnly="true" description="The log level
specifying which message levels will be logged by this. Message levels lower than this
value will be discarded.">
+ <c:property-options>
+ <c:option value="ALL"/>
+ <c:option value="CONFIG"/>
+ <c:option value="DEBUG"/>
+ <c:option value="ERROR"/>
+ <c:option value="FATAL"/>
+ <c:option value="FINE"/>
+ <c:option value="FINER"/>
+ <c:option value="FINEST"/>
+ <c:option value="INFO"/>
+ <c:option value="OFF"/>
+ <c:option value="TRACE"/>
+ <c:option value="WARN"/>
+ <c:option value="WARNING"/>
+ </c:property-options>
+ </c:simple-property>
+'>
+
<!ENTITY logFilter '
<!--
<c:simple-property name="filter" required="false"
description="Defines a simple filter type.">
@@ -237,6 +257,24 @@
</c:simple-property>-->
'>
+ <!ENTITY logFilterReadOnly '
+ <!--
+ <c:simple-property name="filter" required="false"
readOnly="true" description="Defines a simple filter type.">
+ <c:property-options>
+ <c:option value="accept"/>
+ <c:option value="all"/>
+ <c:option value="any"/>
+ <c:option value="change-level"/>
+ <c:option value="deny"/>
+ <c:option value="level"/>
+ <c:option value="level-range"/>
+ <c:option value="match"/>
+ <c:option value="not"/>
+ <c:option value="replace"/>
+ </c:property-options>
+ </c:simple-property>-->
+'>
+
<!ENTITY jvmDefinitionResourceConfigProperties '
<c:simple-property name="agent-lib" required="false"
type="string" readOnly="false" description="The JVM agent
lib."/>
<c:simple-property name="agent-path" required="false"
type="string" readOnly="false" description="The JVM agent
path."/>
@@ -281,6 +319,25 @@
</c:map-property>
'>
+ <!ENTITY logFileReadOnly '
+ <c:map-property name="file" required="true"
readOnly="true" description="The file description consisting of the path
and optional relative to path.">
+ <c:simple-property name="path" required="true"
readOnly="true" description="The filesystem path."/>
+ <c:simple-property name="relative-to" required="false"
readOnly="true" description="The name of another previously named path, or
of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>">
+ <c:property-options>
+ <c:option value="java.home" />
+ <c:option value="jboss.domain.servers.dir" />
+ <c:option value="jboss.home" />
+ <c:option value="jboss.server.base.dir" />
+ <c:option value="jboss.server.data.dir" />
+ <c:option value="jboss.server.log.dir" />
+ <c:option value="jboss.server.tmp.dir" />
+ <c:option value="user.dir" />
+ <c:option value="user.home" />
+ </c:property-options>
+ </c:simple-property>
+ </c:map-property>
+'>
+
<!ENTITY datasourceMetrics '
<metric property="PreparedStatementCacheCurrentSize"
description="The number of prepared and callable statements currently cached in the
statement cache"/>
<metric property="PreparedStatementCacheMissCount"
measurementType="trendsup" description="The number of times that a
statement request could not be satisfied with a statement from the cache"/>
@@ -4653,6 +4710,186 @@
</service>
</service>
+ <service name="Logging (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=logging"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:group name="child:root-logger=ROOT" displayName="Root
logger">
+ &logFilterReadOnly;
+ &logLevelReadOnly;
+ <c:list-property name="handlers" required="true"
readOnly="true" description="The Handlers associated with this
Logger.">
+ <c:simple-property name="handler" type="string"
readOnly="true" description="The Handlers associated with this
Logger."/>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Async Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="async-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ <c:simple-property name="overflow-action"
required="true" type="string" readOnly="true"
defaultValue="BLOCK" description="Specify what action to take when the
overflowing. The valid options are 'block' and
'discard'. The default value is BLOCK.">
+ <c:property-options>
+ <c:option value="BLOCK"/>
+ <c:option value="DISCARD"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="queue-length" required="true"
type="integer" readOnly="true" description="The queue length to
use before flushing writing"/>
+ <c:list-property name="subhandlers" readOnly="true"
required="false" description="The Handlers associated with this async
handler.">
+ <c:simple-property name="subhandler"
readOnly="true"/>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Console Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="console-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="true" description="The character encoding
used by this Handler."/>
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ <c:simple-property name="target" required="false"
type="string" readOnly="true" defaultValue="System.out"
description="Defines the target of the console handler. The value can either be
SYSTEM_OUT or SYSTEM_ERR. The default value is System.out.">
+ <c:property-options>
+ <c:option value="System.err" name="System.err"/>
+ <c:option value="System.out" name="System.out"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Custom Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="true" description="The logging handler
class to be used."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="true" description="The character encoding
used by this Handler."/>
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="The module that the
logging handler depends on." />
+ <c:list-property name="properties" readOnly="true">
+ <c:map-property name="properties:collapsed"
readOnly="true" displayName="Properties">
+ <c:simple-property name="name:0" displayName="Name"
required="true" readOnly="true" description="The name of the
configuration property."/>
+ <c:simple-property name="value:1"
displayName="Value" required="true" readOnly="true"
description="The value of the configuration property."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="File Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="true" description="The character encoding
used by this Handler."/>
+ &logFileReadOnly;
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ </resource-configuration>
+ </service>
+
+ <service name="Logger (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="logger"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <!-- category is the same as 'name' for other resources. Don't
list as required here -->
+ &logFilterReadOnly;
+ <c:list-property name="handlers" required="false"
readOnly="true" description="The Handlers associated with this
Logger.">
+ <c:simple-property name="handler" readOnly="true"
/>
+ </c:list-property>
+ &logLevelReadOnly;
+ <c:simple-property name="use-parent-handlers"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Specifies whether or not this logger
should send its output to it's parent Logger. The default value is
true."/>
+ </resource-configuration>
+
+ </service>
+
+ <service name="Periodic Rotating File Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="periodic-rotating-file-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="true" description="The character encoding
used by this Handler."/>
+ &logFileReadOnly;
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ <c:simple-property name="suffix" required="true"
type="string" readOnly="true" description="Set the suffix string.
The string is in a format which can be understood by java.text.SimpleDateFormat. The
period of the rotation is automatically calculated based on the suffix."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Size Rotating File Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="size-rotating-file-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="true" description="The character encoding
used by this Handler."/>
+ &logFileReadOnly;
+ &logFilterReadOnly;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="true"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevelReadOnly;
+ <c:simple-property name="max-backup-index"
required="true" type="integer" readOnly="true"
defaultValue="1" description="The maximum number of backups to keep. The
default value is 1."/>
+ <c:simple-property name="rotate-size" required="true"
type="string" readOnly="true" defaultValue="2m"
description="The size at which to rotate the log file. The default value is
2m."/>
+ </resource-configuration>
+ </service>
+ </service>
+
</server>
commit d41abaf12addc130eec3cdc8c58f747b0f68858a
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Sat May 26 12:38:52 2012 -0400
fix isRootType() so it returns true for a top-level service element that has no
runs-inside child elements; misc minor cleanup
diff --git
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
index d5ef123..99d2996 100644
---
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
+++
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
@@ -101,7 +101,7 @@ public class PluginDescriptorProcessor {
private static boolean isRootType(ResourceType type) {
boolean result;
if ((type.getParentResourceTypes() == null) ||
(type.getParentResourceTypes().isEmpty())) {
- result = (type.getCategory() != ResourceCategory.SERVICE);
+ result = true;
} else {
result = false;
for (ResourceType parentType : type.getParentResourceTypes()) {
@@ -379,71 +379,55 @@ public class PluginDescriptorProcessor {
// 6) Artifacts
// 7) Sub categories
- if (discoveryClass == null) {
- discoveryClass =
getFullyQualifiedComponentClassName(pluginDescriptor.getPackage(), resourceDescriptor
- .getDiscovery());
- }
+ resourceType.setPlugin(pluginDescriptor.getName());
- if (componentClass == null) {
- componentClass =
getFullyQualifiedComponentClassName(pluginDescriptor.getPackage(), resourceDescriptor
- .getClazz());
+ if (resourceDescriptor.getPluginConfiguration() != null) {
+
resourceType.setPluginConfigurationDefinition(ConfigurationMetadataParser.parse(resourceType.getName(),
+ resourceDescriptor.getPluginConfiguration()));
}
- try {
- resourceType.setPlugin(pluginDescriptor.getName());
-
- if (resourceDescriptor.getPluginConfiguration() != null) {
-
resourceType.setPluginConfigurationDefinition(ConfigurationMetadataParser.parse(resourceType.getName(),
- resourceDescriptor.getPluginConfiguration()));
- }
-
- if (resourceDescriptor.getResourceConfiguration() != null) {
-
resourceType.setResourceConfigurationDefinition(ConfigurationMetadataParser.parse(resourceType
- .getName(), resourceDescriptor.getResourceConfiguration()));
- }
+ if (resourceDescriptor.getResourceConfiguration() != null) {
+
resourceType.setResourceConfigurationDefinition(ConfigurationMetadataParser.parse(resourceType
+ .getName(), resourceDescriptor.getResourceConfiguration()));
+ }
- int displayPosition = 1;
- for (MetricDescriptor metricDescriptor : resourceDescriptor.getMetric()) {
- List<MeasurementDefinition> measurementDefinitions =
MetricsMetadataParser.parseMetricsMetadata(
- metricDescriptor, resourceType);
- for (MeasurementDefinition measurementDefinition :
measurementDefinitions) {
- measurementDefinition.setDisplayOrder(displayPosition++);
- resourceType.addMetricDefinition(measurementDefinition);
- }
+ int displayPosition = 1;
+ for (MetricDescriptor metricDescriptor : resourceDescriptor.getMetric()) {
+ List<MeasurementDefinition> measurementDefinitions =
MetricsMetadataParser.parseMetricsMetadata(
+ metricDescriptor, resourceType);
+ for (MeasurementDefinition measurementDefinition : measurementDefinitions) {
+ measurementDefinition.setDisplayOrder(displayPosition++);
+ resourceType.addMetricDefinition(measurementDefinition);
}
+ }
- for (OperationDescriptor operationDescriptor :
resourceDescriptor.getOperation()) {
- resourceType.addOperationDefinition(OperationsMetadataParser
- .parseOperationDescriptor(operationDescriptor));
- }
+ for (OperationDescriptor operationDescriptor : resourceDescriptor.getOperation())
{
+ resourceType.addOperationDefinition(OperationsMetadataParser
+ .parseOperationDescriptor(operationDescriptor));
+ }
- for (ProcessScanDescriptor processMatch :
resourceDescriptor.getProcessScan()) {
- System.out.println(resourceType.getName() + ": "
- + new ProcessScan(processMatch.getQuery(), processMatch.getName()));
- resourceType.addProcessScan(new ProcessScan(processMatch.getQuery(),
processMatch.getName()));
- }
+ for (ProcessScanDescriptor processMatch : resourceDescriptor.getProcessScan()) {
+ System.out.println(resourceType.getName() + ": "
+ + new ProcessScan(processMatch.getQuery(), processMatch.getName()));
+ resourceType.addProcessScan(new ProcessScan(processMatch.getQuery(),
processMatch.getName()));
+ }
- for (ContentDescriptor contentDescriptor : resourceDescriptor.getContent())
{
-
resourceType.addPackageType(ContentMetadataParser.parseContentDescriptor(contentDescriptor));
- }
+ for (ContentDescriptor contentDescriptor : resourceDescriptor.getContent()) {
+
resourceType.addPackageType(ContentMetadataParser.parseContentDescriptor(contentDescriptor));
+ }
- // TODO not sure we really want this wrapping <subcategories> element
since no one else uses it
- if (resourceDescriptor.getSubcategories() != null) {
- for (SubCategoryDescriptor subCategoryDescriptor :
resourceDescriptor.getSubcategories()
- .getSubcategory()) {
-
resourceType.addChildSubCategory(SubCategoriesMetadataParser.getSubCategory(subCategoryDescriptor,
- resourceType));
- }
+ if (resourceDescriptor.getSubcategories() != null) {
+ for (SubCategoryDescriptor subCategoryDescriptor :
resourceDescriptor.getSubcategories()
+ .getSubcategory()) {
+
resourceType.addChildSubCategory(SubCategoriesMetadataParser.getSubCategory(subCategoryDescriptor,
+ resourceType));
}
+ }
- Help help = resourceDescriptor.getHelp();
- if ((help != null) && !help.getContent().isEmpty()) {
- resourceType.setHelpTextContentType(help.getContentType());
- resourceType.setHelpText(String.valueOf(help.getContent().get(0)));
- }
- } catch (InvalidPluginDescriptorException e) {
- // TODO: Should we be storing these for viewing in server? Breaking
deployment? What?
- throw e;
+ Help help = resourceDescriptor.getHelp();
+ if ((help != null) && !help.getContent().isEmpty()) {
+ resourceType.setHelpTextContentType(help.getContentType());
+ resourceType.setHelpText(String.valueOf(help.getContent().get(0)));
}
allTypes.put(resourceType, resourceType);
commit 010cfe6296c0f0919c4d836d7b8a4fcf3116d3e6
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Sat May 26 09:28:53 2012 -0500
[BZ 811288] Adding back missing run-inside configuration for Profile.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index cb30a19..b2545f1 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -4661,6 +4661,10 @@
discovery="SubsystemDiscovery"
class="BaseComponent">
+ <runs-inside>
+ <parent-resource-type name="JBossAS7 Host Controller"
plugin="&pluginName;"/>
+ </runs-inside>
+
<plugin-configuration>
<c:simple-property name="path" default="profile"
readOnly="true"/>
</plugin-configuration>
commit 4ac30142c5c3581159b0fb29cf222bef18cbf164
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Sat May 26 00:10:06 2012 -0500
[BZ 811288] Split the messaging subsystem into three resources based on parent
resource.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index a1cf8cf..cb30a19 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -2990,7 +2990,7 @@
</operation>
<resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
<c:property-options>
<c:option value="default"/>
<c:option value="infinispan" />
@@ -3281,155 +3281,1527 @@
</service>
</service>
- </server>
-
-
- <service name="Profile"
- description="A profile in a domain. Profiles are assigned to server
groups."
- discovery="SubsystemDiscovery"
- class="BaseComponent">
+ <service name="Messaging (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The messaging subsystems"
+ singleton="true">
- <plugin-configuration>
- <c:simple-property name="path" default="profile"
readOnly="true"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=messaging"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
- <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
- list is different. Update similar Standalone service if changes are necessary.
-->
- <service name="ModCluster Domain Service"
- class="ModClusterComponent"
- discovery="ModClusterDiscoveryComponent"
- description="Mod_cluster support"
- singleton="true">
+ <service name="HornetQ (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="HornetQComponent"
+ description="The HornetQ based messaging subsystem"
+ createDeletePolicy="neither">
<plugin-configuration>
- <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
+ <c:simple-property name="path" readOnly="true"
default="hornetq-server"/>
</plugin-configuration>
- <service name="Domain Service Configuration"
- discovery="SubsystemDiscovery"
- class="ModClusterComponent">
+ <operation name="subsystem:close-connections-for-address"
displayName="Close Connections for Address" description="Closes all the
connections of clients connected to this server whose remote address contains the
specified IP address. Returns true if any connections were closed, false
otherwise.">
+ <parameters>
+ <c:simple-property name="ip-address" required="true"
type="string" readOnly="false" description="An IP address in
string format."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
- </plugin-configuration>
+ <operation name="subsystem:commit-prepared-transaction"
displayName="Commit Prepared Transaction" description="Heuristically
commits a prepared transaction.">
+ <parameters>
+ <c:simple-property name="transaction-as-base-64"
required="false" type="string" readOnly="false"
description="The Base64 representation of a transaction XID. Returns true if the
transaction was successfully committed, false otherwise."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- &modclusterSharedOpsConfig;
+ <operation name="subsystem:force-failover" displayName="Force
Failover" description="Force the messaging server to stop and notify clients to
failover.">
+ <results>
+ <c:simple-property name="operationResult"
description="Force the messaging server to stop and notify clients to failover."
/>
+ </results>
+ </operation>
- <service name="Domain Dynamic Load Provider"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <operation name="subsystem:get-address-settings-as-json"
displayName="Get Address Settings as JSON" description="Returns the address
settings as a JSON string for an address match. The returned String is a JSON string
containing an array of address settings details.">
+ <parameters>
+ <c:simple-property name="address-match"
required="true" type="string" readOnly="false"
description="An address match."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <runs-inside>
- <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
- </runs-inside>
+ <operation name="subsystem:get-connectors-as-json"
displayName="Get Connectors as JSON" description="Returns the connectors
configured for this server using JSON serialization.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
- </plugin-configuration>
+ <operation name="subsystem:get-last-sent-message-id"
displayName="Get Last Sent Message ID" description="Returns the ID of the
last message sent from the given session to the given address.">
+ <parameters>
+ <c:simple-property name="session-id" required="true"
type="string" readOnly="false" description="The session
id."/>
+ <c:simple-property name="address-name" required="true"
type="string" readOnly="false"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
- <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
- </resource-configuration>
+ <operation name="subsystem:get-session-creation-time"
displayName="Get Session Creation Time" description="Gets the
session's creation time. Returns the creation time, represented as a string
showing the number of milliseconds since the epoch.">
+ <parameters>
+ <c:simple-property name="session-id" required="true"
type="string" readOnly="false" description="The session
id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <service name="Domain Custom Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <operation name="subsystem:list-all-consumers-as-json"
displayName="List All Consumers as JSON" description="Lists all the
consumers.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
- </plugin-configuration>
+ <operation name="subsystem:list-connection-ids"
displayName="List Connection IDs" description="Lists the IDs of all the
connections connected to this server.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
- <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
- </service><!-- End of custom-load-metric service -->
+ <operation name="subsystem:list-connections-as-json"
displayName="List Connections as JSON" description="List all JMS
connections.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <service name="Domain Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <operation name="subsystem:list-consumers-as-json"
displayName="List Consumers as JSON" description="Lists all the consumers
which belongs to the JMS Connection specified by the connection-id.">
+ <parameters>
+ <c:simple-property name="connection-id"
required="true" type="string" readOnly="false"
description="The connection id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="load-metric"/>
- </plugin-configuration>
+ <operation name="subsystem:list-heuristic-committed-transactions"
displayName="List Heuristic Committed Transactions" description="Lists
transactions which have been heuristically committed. Returns a list of strings. The
Strings are Base-64 representation of the transaction XID.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
- <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
- <c:property-options>
- <c:option value="busyness"/>
- <c:option value="cpu" />
- <c:option value="heap"/>
- <c:option value="mem"/>
- <c:option value="requests"/>
- <c:option value="receive-traffic"/>
- <c:option value="send-traffic"/>
- <c:option value="sessions"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
- </service><!-- End of load-metric service -->
- </service><!-- End of dynamic-load-provider service -->
+ <operation name="subsystem:list-heuristic-rolled-back-transactions"
displayName="List Heuristic Rolled Back Transactions" description="Lists
transactions which have been heuristically rolled back. Returns a list of strings. The
Strings are Base-64 representation of the transaction XID.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <service name="Domain Ssl"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <operation
name="subsystem:list-prepared-transaction-details-as-html"
displayName="List Prepared Transaction Details as HTML" description="List
all the prepared transaction, sorted by date, oldest first, with details, in HTML
format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <runs-inside>
- <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
- </runs-inside>
+ <operation
name="subsystem:list-prepared-transaction-details-as-json"
displayName="List Prepared Transaction Details as JSON" description="List
all the prepared transaction, sorted by date, oldest first, with details, in JSON
format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
- </plugin-configuration>
+ <operation
name="subsystem:list-prepared-transaction-jms-details-as-html"
displayName="List Prepared Transaction JMS Details as HTML"
description="List all the prepared transactions, sorted by date, oldest first, with
details in JMS, in HTML format">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
- <c:simple-property name="ca-revocation-ur"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
- <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
- <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
- <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
- <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
- </resource-configuration>
- </service><!-- End of ssl service -->
- </service><!-- End of Domain Modcluster Service Configuration -->
- </service>
+ <operation
name="subsystem:list-prepared-transaction-jms-details-as-json"
displayName="List Prepared Transaction JMS details as JSON"
description="List all the prepared transactions, sorted by date, oldest first, with
details in JMS format, in JSON format">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <service name="Naming (Profile)"
- discovery="SubsystemDiscovery"
- class="NamingComponent"
- singleton="true">
+ <operation name="subsystem:list-prepared-transactions"
displayName="List Prepared Transactions" description="List all the prepared
transaction, sorted by date, oldest first. Returns a list of strings. The Strings are
Base-64 representation of the transaction XID and can be used to heuristically commit or
rollback the transactions.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
- </plugin-configuration>
+ <operation name="subsystem:list-producers-info-as-json"
displayName="List Producers Info as JSON" description="For all sessions,
lists information about message producers using JSON serialization.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <service name="Binding (Profile)"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="JNDI bindings for primitive types"
- createDeletePolicy="both">
+ <operation name="subsystem:list-remote-addresses"
displayName="List Remote Addresses" description="Lists the addresses of all
the clients connected to the given address. If an ip-address argument is supplied,
only those clients whose remote address string includes the given ip-address
string will be returned.">
+ <parameters>
+ <c:simple-property name="ip-address" required="false"
type="string" readOnly="false" description="An IP address in
string format."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="binding"/>
- </plugin-configuration>
+ <operation name="subsystem:list-sessions" displayName="List
Sessions" description="Lists all the sessions IDs for the specified connection
ID.">
+ <parameters>
+ <c:simple-property name="connection-id"
required="false" type="string" readOnly="false"
description="The connection id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-sessions-as-json"
displayName="List Sessions as JSON" description="Lists all the sessions IDs
for the specified connection ID. The returned String is a JSON string containing an array
of session ids.">
+ <parameters>
+ <c:simple-property name="connection-id"
required="true" type="string" readOnly="false"
description="The connection id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-target-destinations"
displayName="List Target Destinations" description="Lists all addresses to
which the designated session has sent messages. The returned String is a JSON string
containing an array of address names.">
+ <parameters>
+ <c:simple-property name="session-id" required="true"
type="string" readOnly="false" description="The session
id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:reset-all-message-counter-histories"
displayName="Reset All Message Counter Histories" description="Reset all
message counters history.">
+ <results>
+ <c:simple-property name="operationResult"
description="Reset all message counters history." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:reset-all-message-counters"
displayName="Reset All Message Counters" description="Reset all message
counters.">
+ <results>
+ <c:simple-property name="operationResult"
description="Reset all message counters." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:rollback-prepared-transaction"
displayName="Rollback Prepared Transaction" description="Heuristically
rolls back a prepared transaction. Returns true if the transaction was successfully rolled
back, false otherwise.">
+ <parameters>
+ <c:simple-property name="transaction-as-base-64"
required="false" type="string" readOnly="false"
description="The Base64 representation of a transaction XID."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <metric property="started" displayName="Started"
dataType="trait" defaultInterval="3600000" description="Whether
this server is started."/>
+ <metric property="version" displayName="Version"
dataType="trait" defaultInterval="3600000" description="The
server's version."/>
<resource-configuration>
- <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
+ <c:simple-property name="allow-failback"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether this server will automatically
shutdown if the original live server comes back up. The default value is true."/>
+ <c:simple-property name="async-connection-execution-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether incoming packets on the server
should be handed off to a thread from the thread pool for processing. False if they should
be handled on the remoting thread. The default value is true."/>
+ <c:simple-property name="backup" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether this server is a backup server. The default value is
false."/>
+ <c:simple-property name="cluster-password"
required="false" type="string" readOnly="true"
defaultValue="CHANGE ME!!" description="The password used by cluster
connections to communicate between the clustered nodes. The default value is CHANGE
ME!!."/>
+ <c:simple-property name="cluster-user" required="false"
type="string" readOnly="true"
defaultValue="HORNETQ.CLUSTER.ADMIN.USER" description="The user used by
cluster connections to communicate between the clustered nodes. The default value is
HORNETQ.CLUSTER.ADMIN.USER."/>
+ <c:simple-property name="clustered" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether the server is clustered. The default value is false."/>
+ <c:simple-property name="connection-ttl-override"
required="false" type="long" readOnly="true"
defaultValue="-1" description="If set, this will override how long
(in ms) to keep a connection alive without receiving a ping. The default value is
-1."/>
+ <c:simple-property name="create-bindings-dir"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the server should create the
bindings directory on start up. The default value is true."/>
+ <c:simple-property name="create-journal-dir"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the server should create the
journal directory on start up. The default value is true."/>
+ <c:simple-property name="failback-delay"
required="false" type="long" readOnly="true"
defaultValue="5000" description="How long to wait before failback occurs on
live server restart. The default value is 5000."/>
+ <c:simple-property name="failover-on-shutdown"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether this backup server (if it is a
backup server) should come live on a normal server shutdown. The default value is
false."/>
+ <c:simple-property name="id-cache-size" required="false"
type="integer" readOnly="true" defaultValue="2000"
description="The size of the cache for pre-creating message IDs. The default
value is 2000."/>
+ <c:simple-property name="jmx-domain" required="false"
type="string" readOnly="true" defaultValue="org.hornetq"
description="The JMX domain used to register internal HornetQ MBeans in the
MBeanServer. The default value is org.hornetq."/>
+ <c:simple-property name="jmx-management-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether HornetQ should expose its
internal management API via JMX. This is not recommended, as accessing these MBeans can
lead to inconsistent configuration. The default value is false."/>
+ <c:simple-property name="journal-buffer-size"
required="false" type="long" readOnly="true"
description="The size of the internal buffer on the journal."/>
+ <c:simple-property name="journal-buffer-timeout"
required="false" type="long" readOnly="true"
description="The timeout (in nanoseconds) used to flush internal buffers on the
journal."/>
+ <c:simple-property name="journal-compact-min-files"
required="false" type="integer" readOnly="true"
defaultValue="10" description="The minimal number of journal data files
before we can start compacting. The default value is 10."/>
+ <c:simple-property name="journal-compact-percentage"
required="false" type="integer" readOnly="true"
defaultValue="30" description="The percentage of live data on which we
consider compacting the journal. The default value is 30."/>
+ <c:simple-property name="journal-file-size"
required="false" type="long" readOnly="true"
defaultValue="10485760" description="The size (in bytes) of each journal
file. The default value is 10485760."/>
+ <c:simple-property name="journal-max-io"
required="false" type="integer" readOnly="true"
description="The maximum number of write requests that can be in the AIO queue at any
one time."/>
+ <c:simple-property name="journal-min-files"
required="false" type="integer" readOnly="true"
defaultValue="2" description="How many journal files to pre-create.
The default value is 2."/>
+ <c:simple-property name="journal-sync-non-transactional"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether to wait for non transaction data
to be synced to the journal before returning a response to the client. The default value
is true."/>
+ <c:simple-property name="journal-sync-transactional"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether to wait for transaction data to be
synchronized to the journal before returning a response to the client. The default value
is true."/>
+ <c:simple-property name="journal-type" required="false"
type="string" readOnly="true" defaultValue="ASYNCIO"
description="The type of journal to use. The default value is ASYNCIO.">
<c:property-options>
- <c:option value="simple"/>
- <c:option value="lookup"/>
- <c:option value="object-factory"/>
+ <c:option value="ASYNCIO" name="ASYNCIO"/>
+ <c:option value="NIO" name="NIO"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="live-connector-ref"
required="false" type="string" readOnly="true"
description="The name of the connector used to connect to the live connector. If this
server is not a backup that uses shared nothing HA, it's value is
'undefined'."/>
+ <c:simple-property name="log-journal-write-rate"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether to periodically log the
journal's write rate and flush rate. The default value is false."/>
+ <c:simple-property name="management-address"
required="false" type="string" readOnly="true"
defaultValue="jms.queue.hornetq.management" description="Address to send
management messages to. The default value is jms.queue.hornetq.management."/>
+ <c:simple-property name="management-notification-address"
required="false" type="string" readOnly="true"
defaultValue="hornetq.notifications" description="The name of the address
that consumers bind to to receive management notifications. The default value is
hornetq.notifications."/>
+ <c:simple-property name="memory-measure-interval:expr"
displayName="Memory Measure Interval" required="false"
type="string" readOnly="true" defaultValue="-1"
description="Frequency to sample JVM memory in ms (or -1 to disable memory
sampling). The default value is -1."/>
+ <c:simple-property name="memory-warning-threshold:expr"
displayName="Memory Warning Threshold" required="false"
type="string" readOnly="true" defaultValue="25"
description="Percentage of available memory which if exceeded results in a warning
log. The default value is 25."/>
+ <c:simple-property name="message-counter-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether message counters are enabled. The
default value is false."/>
+ <c:simple-property name="message-counter-max-day-history"
required="false" type="integer" readOnly="true"
defaultValue="10" description="How many days to keep message counter
history. The default value is 10."/>
+ <c:simple-property name="message-counter-sample-period"
required="false" type="long" readOnly="true"
defaultValue="10000" description="The sample period (in ms) to use for
message counters. The default value is 10000."/>
+ <c:simple-property name="message-expiry-scan-period"
required="false" type="long" readOnly="true"
defaultValue="30000" description="How often (in ms) to scan for expired
messages. The default value is 30000."/>
+ <c:simple-property name="message-expiry-thread-priority"
required="false" type="integer" readOnly="true"
defaultValue="3" description="The priority of the thread expiring messages.
The default value is 3."/>
+ <c:simple-property name="page-max-concurrent-io"
required="false" type="integer" readOnly="true"
defaultValue="5" description="The maximum number of concurrent reads
allowed on paging. The default value is 5."/>
+ <c:simple-property name="perf-blast-pages"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="TODO. The default value is
-1."/>
+ <c:simple-property name="persist-delivery-count-before-delivery"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether the delivery count is persisted
before delivery. False means that this only happens after a message has been cancelled.
The default value is false."/>
+ <c:simple-property name="persist-id-cache"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether IDs are persisted to the journal.
The default value is true."/>
+ <c:simple-property name="persistence-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the server will use the file based
journal for persistence. The default value is true."/>
+ <c:list-property name="remoting-interceptors"
required="false" readOnly="true" description="The list of
interceptor classes used by this server." >
+ <c:simple-property name="remoting-interceptors"
readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="5"
description="The number of threads that the main scheduled thread pool has. The
default value is 5."/>
+ <c:simple-property name="security-domain"
required="false" type="string" readOnly="true"
defaultValue="other" description="The security domain to use to verify user
and role information. The default value is other."/>
+ <c:simple-property name="security-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether security is enabled. The default
value is true."/>
+ <c:simple-property name="security-invalidation-interval"
required="false" type="long" readOnly="true"
defaultValue="10000" description="How long (in ms) to wait before
invalidating the security cache. The default value is 10000."/>
+ <c:simple-property name="server-dump-interval"
required="false" type="long" readOnly="true"
defaultValue="-1" description="How often to dump basic runtime
information to the server log. A value less than 1 disables this feature. The default
value is -1."/>
+ <c:simple-property name="shared-store" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Whether this server is using a shared store for failover. The default
value is true."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="30"
description="The number of threads that the main thread pool has. -1 means no
limit. The default value is 30."/>
+ <c:simple-property name="transaction-timeout"
required="false" type="long" readOnly="true"
defaultValue="300000" description="How long (in ms) before a transaction
can be removed from the resource manager after create time. The default value is
300000."/>
+ <c:simple-property name="transaction-timeout-scan-period"
required="false" type="long" readOnly="true"
defaultValue="1000" description="How often (in ms) to scan for timeout
transactions. The default value is 1000."/>
+ <c:simple-property name="wild-card-routing-enabled"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the server supports wild card
routing. The default value is true."/>
+ </resource-configuration>
+
+ <service name="JMS Queue (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jms-queue"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:change-message-priority"
displayName="Change Message Priority" description="Change the priority of
the message corresponding to the given message-id. Returns true if the message was
expired, false otherwise.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="string" readOnly="false"
description="A message id."/>
+ <c:simple-property name="new-priority"
required="true" type="integer" readOnly="false"
description="The new priority (between 0 and 9)."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:change-messages-priority"
displayName="Change Messages Priority" description="Change the priority of
the messages corresponding to the given filter. Returns the number of removed
messages.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="new-priority"
required="true" type="integer" readOnly="false"
description="The new priority (between 0 and 9)."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:count-messages" displayName="Count
Messages" description="Returns the number of the messages in the queue matching
the given filter.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:expire-message"
displayName="Expire Message" description="Expire the message corresponding
to the given message-id. Returns true if the message was expired, false
otherwise.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="string" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:expire-messages"
displayName="Expire Messages" description="Expire the messages matching
the given filter.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-consumers-as-json"
displayName="List Consumers as JSON" description="A string in JSON
format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-as-html"
displayName="List Message Counter as HTML" description="List the message
counter as a string in HTML format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-as-json"
displayName="List Message Counter as JSON" description="List the message
counter as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-history-as-html"
displayName="List Message Counter History as HTML" description="List the
message counter history.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-history-as-json"
displayName="List Message Counter History as JSON" description="List the
message counter history as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="list-messages" displayName="List
Messages" description="List all messages in the queue that match the
filter">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-messages-as-json"
displayName="List Messages as JSON" description="List all messages in the
queue that match the filter and return them as a string in JSON format.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:move-message" displayName="Move
Message" description="Move the message corresponding to the given
message-id to another queue">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="string" readOnly="false"
description="A message id."/>
+ <c:simple-property name="other-queue-name"
required="true" type="string" readOnly="false"
description="The name of the queue to move the message to."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:move-messages" displayName="Move
Messages" description="Move the messages corresponding to the given filter to
another queue.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="other-queue-name"
required="true" type="string" readOnly="false"
description="The name of the queue to move the message to."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:pause" displayName="Pause"
description="Pause the queue.">
+ <results>
+ <c:simple-property name="operationResult"
description="Pause the queue." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:remove-message"
displayName="Remove Message" description="Remove the message corresponding
to the given message-id.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="string" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:remove-messages"
displayName="Remove Messages" description="Remove messages matching the
given filter from the destination.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:reset-message-counter"
displayName="Reset Message Counter" description="Reset the message
counters.">
+ <results>
+ <c:simple-property name="operationResult"
description="Reset the message counters." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:resume" displayName="Resume"
description="Resume the queue.">
+ <results>
+ <c:simple-property name="operationResult"
description="Resume the queue." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:send-message-to-dead-letter-address"
displayName="Send Message to Dead Letter Address" description="Send the
message corresponding to the given message-id to this queue's Dead Letter
Address.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="string" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:send-messages-to-dead-letter-address"
displayName="Send Messages to Dead Letter Address" description="Send the
messages corresponding to the given filter to this queue's Dead Letter
Address.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <metric property="consumer-count" description="The number of
consumers consuming messages from this queue."/>
+ <metric property="dead-letter-address" dataType="trait"
description="The address to send dead messages to."/>
+ <metric property="delivering-count" description="The number
of messages that this queue is currently delivering to its consumers."/>
+ <metric property="expiry-address" dataType="trait"
description="The address to send expired messages to."/>
+ <metric property="message-count" description="The number of
messages currently in this queue."/>
+ <metric property="messages-added" description="The number of
messages added to this queue since it was created."/>
+ <metric property="paused" dataType="trait"
description="Whether the queue is paused."/>
+ <metric property="scheduled-count" description="The number of
scheduled messages in this queue."/>
+ <metric property="temporary" dataType="trait"
description="Whether the queue is temporary."/>
+ <metric property="queue-address" dataType="trait"
description="The queue address defines what address is used for routing
messages."/>
+
+ <resource-configuration>
+ <c:simple-property name="durable" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Whether the queue is durable or not. The default value is
true."/>
+ <c:list-property name="entries" required="true"
readOnly="true" description="The jndi names the queue will be bound
to." >
+ <c:simple-property name="entry" type="string"
readOnly="true" description="A single JNDI entry"/>
+ </c:list-property>
+ <c:simple-property name="selector" required="false"
type="string" readOnly="true" description="The queue
selector."/>
+ </resource-configuration>
+ </service>
+
+ <service name="JMS Topic (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jms-topic"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:count-messages-for-subscription"
displayName="Count Messages for Subscription" description="Count the number
of messages matching the filter for the given subscription.">
+ <parameters>
+ <c:simple-property name="client-id" required="true"
type="string" readOnly="false" description="The client
ID."/>
+ <c:simple-property name="subscription-name"
required="true" type="string" readOnly="false"
description="The name of the durable subscription."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A JMS message
filter."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:drop-all-subscriptions"
displayName="Drop All Subscriptions" description="Drop all subscriptions
from this topic.">
+ <results>
+ <c:simple-property name="operationResult"
description="Drop all subscriptions from this topic." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:drop-durable-subscription"
displayName="Drop Durable Subscription" description="Drop a durable
subscription">
+ <parameters>
+ <c:simple-property name="client-id" required="true"
type="string" readOnly="false" description="The client
ID."/>
+ <c:simple-property name="subscription-name"
required="true" type="string" readOnly="false"
description="The name of the durable subscription."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
description="Drop a durable subscription" />
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-all-subscriptions"
displayName="List All Subscriptions" description="List all
subscriptions.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-all-subscriptions-as-json"
displayName="List All Subscriptions as JSON" description="List all
subscriptions as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-durable-subscriptions"
displayName="List Durable Subscriptions" description="List only the durable
subscriptions.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-durable-subscriptions-as-json"
displayName="List Durable Subscriptions as JSON" description="List only the
durable subscriptions, as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-messages-for-subscription"
displayName="List Messages for Subscription" description="List all the
messages for the given subscription.">
+ <parameters>
+ <c:simple-property name="queue-name" required="true"
type="string" readOnly="false" description="The name of the queue
representing a subscription"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-messages-for-subscription-as-json"
displayName="List Messages for Subscription as JSON" description="List all
the messages for the given subscription as a string in JSON format.">
+ <parameters>
+ <c:simple-property name="queue-name" required="true"
type="string" readOnly="false" description="The name of the queue
representing a subscription"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-non-durable-subscriptions"
displayName="List Non-Durable Subscriptions" description="List only the
non-durable subscriptions.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-non-durable-subscriptions-as-json"
displayName="List Non-Durable Subscriptions as JSON" description="List only
the non-durable subscriptions, as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:remove-messages"
displayName="Remove Messages" description="Remove messages matching the
given filter from the destination.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <metric property="delivering-count" description="The number
of messages that this queue is currently delivering to its consumers."/>
+ <metric property="durable-message-count" description="The
number of messages for all durable subscribers for this topic."/>
+ <metric property="durable-subscription-count"
description="The number of durable subscribers for this topic."/>
+ <metric property="message-count" description="The number of
messages currently in this queue."/>
+ <metric property="messages-added" description="The number of
messages added to this queue since it was created."/>
+ <metric property="non-durable-message-count" description="The
number of messages for all non-durable subscribers for this topic."/>
+ <metric property="non-durable-subscription-count"
description="The number of non-durable subscribers for this
topic."/>
+ <metric property="subscription-count" description="The number
of (durable and non-durable) subscribers for this topic."/>
+ <metric property="temporary" dataType="trait"
description="Whether the topic is temporary."/>
+ <metric property="topic-address" dataType="trait"
description="The address the topic points to."/>
+
+ <resource-configuration>
+ <c:list-property name="entries" required="true"
readOnly="true" displayName="JNDI Names" min="1"
description="The jndi names the queue will be bound to.">
+ <c:simple-property name="entry" type="string"
readOnly="true" description="A single JNDI entry"/>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Connection Factory (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-factory"/>
+ <c:simple-property name="includeRuntime"
readOnly="true" default="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="connector:collapsed"
required="false" readOnly="true" displayName="Connector"
description="Defines the connector to be used. This is mutually exclusive with
discovery-group-name">
+ <c:simple-property name="name:0" readOnly="true"
displayName="Name" description="Connector name. Mutually exclusive with
discovery-group-name" required="false"/>
+ </c:map-property>
+ <c:list-property name="entries" required="true"
readOnly="true" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:simple-property name="entry" type="string"
readOnly="true" description="A single JNDI entry"/>
+ </c:list-property>
+
+ <c:simple-property name="auto-group" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether or not message grouping is automatically used. The default value
is false."/>
+ <c:simple-property name="block-on-acknowledge"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to set block on acknowledge. The
default value is false."/>
+ <c:simple-property name="block-on-durable-send"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="True to set block on durable send. The
default value is true."/>
+ <c:simple-property name="block-on-non-durable-send"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to set block on non durable send.
The default value is false."/>
+ <c:simple-property name="cache-large-message-client"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to cache large messages. The default
value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="true"
defaultValue="30000" description="The call time out. The default value is
30000."/>
+ <c:simple-property name="client-failure-check-period"
required="false" type="integer" readOnly="true"
defaultValue="30000" description="The client failure check period. The
default value is 30000."/>
+ <c:simple-property name="client-id" required="false"
type="string" readOnly="true" description="The client
id."/>
+ <c:simple-property name="compress-large-messages"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether large messages should be
compressed. The default value is false."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The confirmation window size. The
default value is -1."/>
+ <c:simple-property
name="connection-load-balancing-policy-class-name" required="false"
type="string" readOnly="true"
defaultValue="org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy"
description="Name of a class implementing a client-side load balancing policy
that a client can use to load balance sessions across different nodes in a cluster. The
default value is
org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="true"
defaultValue="60000" description="The connection ttl. The default value is
60000."/>
+ <c:simple-property name="consumer-max-rate"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The consumer max rate. The default
value is -1."/>
+ <c:simple-property name="consumer-window-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The consumer window size. The default
value is 1048576."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="true"
description="The discovery group name."/>
+ <c:simple-property name="discovery-initial-wait-timeout"
required="false" type="long" readOnly="true"
description="The discovery initial wait time out."/>
+ <c:simple-property name="dups-ok-batch-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The dups ok batch size. The default
value is 1048576."/>
+ <c:simple-property name="factory-type"
required="false" type="string" readOnly="true"
description="The type of connection factory.">
+ <c:property-options>
+ <c:option value="GENERIC" name="GENERIC"/>
+ <c:option value="QUEUE" name="QUEUE"/>
+ <c:option value="TOPIC" name="TOPIC"/>
+ <c:option value="XA_GENERIC"
name="XA_GENERIC"/>
+ <c:option value="XA_QUEUE" name="XA_QUEUE"/>
+ <c:option value="XA_TOPIC" name="XA_TOPIC"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="failover-on-initial-connection"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to fail over on initial connection.
The default value is false."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="true"
description="True to fail over on server shutdown."/>
+ <c:simple-property name="group-id" required="false"
type="string" readOnly="true" description="The group
id."/>
+ <c:simple-property name="ha" required="true"
type="boolean" readOnly="true" defaultValue="false"
description="Whether the connection factory supports High Availability. The default
value is false."/>
+ <c:simple-property name="initial-message-packet-size"
required="true" type="integer" readOnly="true"
description="The initial size of messages created through this factory."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The max retry interval. The default value
is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="true"
defaultValue="102400" description="The min large message size. The default
value is 102400."/>
+ <c:simple-property name="pre-acknowledge"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to pre-acknowledge. The
default value is false."/>
+ <c:simple-property name="producer-max-rate"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The producer max rate. The default
value is -1."/>
+ <c:simple-property name="producer-window-size"
required="false" type="integer" readOnly="true"
defaultValue="65536" description="The producer window size. The default
value is 65536."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="true"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="true"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
+ <c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
+ <c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="True to use global pools. The default
value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Pooled Connection Factory (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="pooled-connection-factory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="connector:collapsed"
required="false" readOnly="true" displayName="Connector"
description="Defines the connectors. These are stored in a map by connector name,
with the backup connectors stored as the value, or an undefined value if there is no
backup connector.">
+ <c:simple-property name="name:0" displayName="Name"
description="Connector name." required="false"/>
+ </c:map-property>
+ <c:list-property name="entries" required="true"
readOnly="true" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ </c:list-property>
+
+ <c:simple-property name="auto-group" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="The autogroup. The default value is false."/>
+ <c:simple-property name="block-on-acknowledge"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to set block on acknowledge. The
default value is false."/>
+ <c:simple-property name="block-on-durable-send"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="True to set block on durable send. The
default value is true."/>
+ <c:simple-property name="block-on-non-durable-send"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to set block on non durable send.
The default value is false."/>
+ <c:simple-property name="cache-large-message-client"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to cache large messages. The default
value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="true"
defaultValue="30000" description="The call time out. The default value is
30000."/>
+ <c:simple-property name="client-failure-check-period"
required="false" type="integer" readOnly="true"
defaultValue="30000" description="The client failure check period. The
default value is 30000."/>
+ <c:simple-property name="client-id" required="false"
type="string" readOnly="true" description="The client
id."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The confirmation window size. The
default value is -1."/>
+ <c:simple-property
name="connection-load-balancing-policy-class-name" required="false"
type="string" readOnly="true"
defaultValue="org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy"
description="Name of a class implementing a client-side load balancing policy
that a client can use to load balance sessions across different nodes in a cluster. The
default value is
org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="true"
defaultValue="60000" description="The connection ttl. The default value is
60000."/>
+ <c:simple-property name="consumer-max-rate"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The consumer max rate. The default
value is -1."/>
+ <c:simple-property name="consumer-window-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The consumer window size. The default
value is 1048576."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="true"
description="The discovery group name."/>
+ <c:simple-property name="discovery-initial-wait-timeout"
required="false" type="long" readOnly="true"
description="The discovery initial wait time out."/>
+ <c:simple-property name="dups-ok-batch-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The dups ok batch size. The default
value is 1048576."/>
+ <c:simple-property name="failover-on-initial-connection"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to fail over on initial connection.
The default value is false."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="true"
description="True to fail over on server shutdown."/>
+ <c:simple-property name="group-id" required="false"
type="string" readOnly="true" description="The group
id."/>
+ <c:simple-property name="ha" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether the connection factory supports High Availability. The default
value is false."/>
+ <c:simple-property name="jndi-params" required="false"
type="string" readOnly="true" description="The JNDI params to use
for locating the destination for incoming connections."/>
+ <c:simple-property name="max-pool-size:expr"
displayName="Max Pool Size" required="false" type="string"
readOnly="true" defaultValue="-1" description="The
maximum size for the pool. The default value is -1."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The max retry interval. The default value
is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="true"
defaultValue="102400" description="The min large message size. The default
value is 102400."/>
+ <c:simple-property name="min-pool-size:expr"
displayName="Min Pool Size" required="false" type="string"
readOnly="true" defaultValue="-1" description="The
minimum size for the pool. The default value is -1."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="The default password
to use with this connection factory. This is only needed when pointing the connection
factory to a remote host."/>
+ <c:simple-property name="pre-acknowledge"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="True to pre-acknowledge. The
default value is false."/>
+ <c:simple-property name="producer-max-rate"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The producer max rate. The default
value is -1."/>
+ <c:simple-property name="producer-window-size"
required="false" type="integer" readOnly="true"
defaultValue="65536" description="The producer window size. The default
value is 65536."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="true"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="true"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
+ <c:simple-property name="setup-attempts"
required="false" type="integer" readOnly="true"
description="The number of times to set up an MDB endpoint"/>
+ <c:simple-property name="setup-interval"
required="false" type="long" readOnly="true"
description="The interval between attempts at setting up an MDB endpoint."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="true" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
+ <c:simple-property name="transaction" required="false"
type="string" readOnly="true" defaultValue="transaction"
description="TODO. The default value is transaction."/>
+ <c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
+ <c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="True to use global pools. The default
value is true."/>
+ <c:simple-property name="use-jndi" required="false"
type="boolean" readOnly="true" description="Use JNDI to locate
the destination for incoming connections"/>
+ <c:simple-property name="use-local-tx"
required="false" type="boolean" readOnly="true"
description="Use a local transaction for incoming sessions"/>
+ <c:simple-property name="user" required="false"
type="string" readOnly="true" description="The default username
to use with this connection factory. This is only needed when pointing the connection
factory to a remote host."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Security Setting (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-setting"/>
+ </plugin-configuration>
+
+ <service name="Role (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="role"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="consume" required="true"
type="boolean" readOnly="true" defaultValue="false"
description="his permission allows the user to consume a message from a queue bound
to matching addresses. The default value is false."/>
+ <c:simple-property name="create-durable-queue"
required="true" type="boolean" readOnly="true"
defaultValue="false" description="This permission allows the user to create
a durable queue. The default value is false."/>
+ <c:simple-property name="create-non-durable-queue"
required="true" type="boolean" readOnly="true"
defaultValue="false" description="This permission allows the user to create
a temporary queue. The default value is false."/>
+ <c:simple-property name="delete-durable-queue"
required="true" type="boolean" readOnly="true"
defaultValue="false" description="This permission allows the user to delete
a durable queue. The default value is false."/>
+ <c:simple-property name="delete-non-durable-queue"
required="true" type="boolean" readOnly="true"
defaultValue="false" description="This permission allows the user to delete
a temporary queue. The default value is false."/>
+ <c:simple-property name="manage" required="true"
type="boolean" readOnly="true" defaultValue="false"
description="This permission allows the user to invoke management operations by
sending management messages to the management address. The default value is
false."/>
+ <c:simple-property name="send" required="true"
type="boolean" readOnly="true" defaultValue="false"
description="This permission allows the user to send a message to matching addresses.
The default value is false."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Address Setting (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="address-setting"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="address-full-policy"
required="false" type="string" readOnly="true"
defaultValue="PAGE" description="Determines what happens when an address
where max-size-bytes is specified becomes full. (PAGE, DROP or BLOCK). The
default value is PAGE."/>
+ <c:simple-property name="dead-letter-address"
required="false" type="string" readOnly="true"
description="The dead letter address"/>
+ <c:simple-property name="expiry-address"
required="false" type="string" readOnly="true"
description="Defines where to send a message that has expired."/>
+ <c:simple-property name="last-value-queue"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Defines whether a queue only uses last
values or not. The default value is false."/>
+ <c:simple-property name="max-delivery-attempts"
required="false" type="integer" readOnly="true"
defaultValue="10" description="Defines how many time a cancelled message
can be redelivered before sending to the dead-letter-address. The default
value is 10."/>
+ <c:simple-property name="max-size-bytes"
required="false" type="long" readOnly="true"
defaultValue="-1" description="The max bytes size. The default
value is -1."/>
+ <c:simple-property name="message-counter-history-day-limit"
required="false" type="integer" readOnly="true"
defaultValue="0" description="Day limit for the message counter history.
The default value is 0."/>
+ <c:simple-property name="page-max-cache-size"
required="false" type="integer" readOnly="true"
defaultValue="5" description="The number of page files to keep in memory to
optimize IO during paging navigation. The default value is 5."/>
+ <c:simple-property name="page-size-bytes"
required="false" type="long" readOnly="true"
defaultValue="10485760" description="The paging size. The default value is
10485760."/>
+ <c:simple-property name="redelivery-delay"
required="false" type="long" readOnly="true"
defaultValue="0" description="Defines how long to wait before attempting
redelivery of a cancelled message. The default value is 0."/>
+ <c:simple-property name="redistribution-delay"
required="false" type="long" readOnly="true"
defaultValue="-1" description="Defines how long to wait when the
last consumer is closed on a queue before redistributing any messages. The default value
is -1."/>
+ <c:simple-property name="send-to-dla-on-no-route"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="If this parameter is set to true for that
address, if the message is not routed to any queues it will instead be sent to the dead
letter address (DLA) for that address, if it exists. The default value is
false."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Grouping Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="grouping-handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="grouping-handler-address"
required="true" type="string" readOnly="true"
description="A reference to a cluster connection and the address it uses."/>
+ <c:simple-property name="timeout" required="false"
type="integer" readOnly="true" defaultValue="5000"
description="How long to wait for a handling decision to be made; an exception will
be thrown during the send if this timeout is reached, ensuring that strict ordering is
kept. The default value is 5000."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Whether the handler is
the single 'Local' handler for the cluster, which makes handling
decisions, or a 'Remote' handler which converses with the local
handler."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Acceptor (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="acceptor"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ </results>
+ </operation>
+
+ <metric property="started" dataType="trait"
description="Whether this acceptor is started."/>
+
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="true"
description="The factory class."/>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="true"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Connector (HornetQ - Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="true"
description="The factory class."/>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="true"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="In VM Acceptor (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="in-vm-acceptor"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ </results>
+ </operation>
+
+ <metric property="started" dataType="trait"
description="Whether it's stopped or started."/>
+
+ <resource-configuration>
+ <c:simple-property name="server-id" required="true"
type="integer" readOnly="true" description="The server
id."/>
+ </resource-configuration>
+ </service>
+
+ <service name="In VM Connector (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="in-vm-connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="server-id" required="true"
type="integer" readOnly="true" description="The server
id."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Remote Acceptor (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="remote-acceptor"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ </results>
+ </operation>
+
+ <metric property="started" dataType="trait"
description="Whether this acceptor is started."/>
+
+ <resource-configuration>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="true"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Remote Connector (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="remote-connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="true"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Divert (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="divert"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="divert-address"
required="true" type="string" readOnly="true"
description="Address to divert from"/>
+ <c:simple-property name="exclusive" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether the divert is exclusive, meaning that the message is diverted to
the new address, and does not go to the old address at all. The default value is
false."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="An optional filter
string. If specified then only messages which match the filter expression specified will
be diverted. The filter string follows the HornetQ filter expression syntax described in
the HornetQ documentation."/>
+ <c:simple-property name="forwarding-address"
required="true" type="string" readOnly="true"
description="Address to divert to"/>
+ <c:simple-property name="routing-name"
required="false" type="string" readOnly="true"
description="Routing name of the divert"/>
+ <c:simple-property name="transformer-class-name"
required="false" type="string" readOnly="true"
description="The name of a class used to transform the message's body or
properties before it is diverted."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Queue (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="queue"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:change-message-priority"
displayName="Change Message Priority" description="Change the priority of
the message corresponding to the given message-id. Returns true if the message was
expired, false otherwise.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="long" readOnly="false"
description="A message id."/>
+ <c:simple-property name="new-priority"
required="true" type="integer" readOnly="false"
description="The new priority (between 0 and 9)."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:change-messages-priority"
displayName="Change Messages Priority" description="Change the priority of
the messages corresponding to the given filter.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="new-priority"
required="true" type="integer" readOnly="false"
description="The new priority (between 0 and 9)."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:count-messages" displayName="Count
Messages" description="Returns the number of the messages in the queue matching
the given filter.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:expire-message"
displayName="Expire Message" description="Expire the message corresponding
to the given message-id. Returns true if the message was expired, false
otherwise.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="long" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:expire-messages"
displayName="Expire Messages" description="Expire the messages matching the
given filter.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-consumers-as-json"
displayName="List Consumers as JSON" description="A string in JSON
format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-as-html"
displayName="List Message Counter as HTML" description="List the message
counter as a string in HTML format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-as-json"
displayName="List Message Counter as JSON" description="List the message
counter as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-history-as-html"
displayName="List Message Counter History as HTML" description="List the
message counter history.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-message-counter-history-as-json"
displayName="List Message Counter History as JSON" description="List the
message counter history as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-messages" displayName="List
Messages" description="List all messages in the queue that match the
filter">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-messages-as-json"
displayName="List Messages as JSON" description="List all messages in the
queue that match the filter and return them as a string in JSON format.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-scheduled-messages"
displayName="List Scheduled Messages" description="List the messages
scheduled for delivery.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:list-scheduled-messages-as-json"
displayName="List Scheduled Messages as JSON" description="List the
messages scheduled for delivery as a string in JSON format.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:move-message" displayName="Move
Message" description="Move the message corresponding to the given
message-id to another queue">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="long" readOnly="false"
description="A message id."/>
+ <c:simple-property name="other-queue-name"
required="true" type="string" readOnly="false"
description="The name of the queue to move the message to."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:move-messages" displayName="Move
Messages" description="Move the messages corresponding to the given filter to
another queue.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="other-queue-name"
required="true" type="string" readOnly="false"
description="The name of the queue to move the message to."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:pause" displayName="Pause"
description="Pause the queue.">
+ <results>
+ <c:simple-property name="operationResult"
description="Pause the queue." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:remove-message"
displayName="Remove Message" description="Remove the message corresponding
to the given message-id.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="long" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:remove-messages"
displayName="Remove Messages" description="Remove messages matching the
given filter from the destination.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:reset-message-counter"
displayName="Reset Message Counter" description="Reset the message
counters.">
+ <results>
+ <c:simple-property name="operationResult"
description="Reset the message counters." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:resume" displayName="Resume"
description="Resume the queue.">
+ <results>
+ <c:simple-property name="operationResult"
description="Resume the queue." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:send-message-to-dead-letter-address"
displayName="Send Message to Dead Letter Address" description="Send the
message corresponding to the given message-id to this queue's Dead Letter
Address.">
+ <parameters>
+ <c:simple-property name="message-id"
required="false" type="long" readOnly="false"
description="A message id."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:send-messages-to-dead-letter-address"
displayName="Send Messages to Dead Letter Address" description="Send the
messages corresponding to the given filter to this queue's Dead Letter
Address.">
+ <parameters>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <metric property="id" dataType="trait"
description="The id of the queue."/>
+ <metric property="paused" dataType="trait"
description="Whether the queue is paused."/>
+ <metric property="temporary" dataType="trait"
description="Whether the queue is temporary."/>
+
+ <resource-configuration>
+ <c:simple-property name="durable" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Defines whether the queue is durable. The default value is
true."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="A queue message filter
definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="queue-address"
required="true" type="string" readOnly="true"
description="The queue address defines what address is used for routing
messages."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Core Address (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A runtime-only resource representing a HornetQ
address. Zero or more queues can be bound to a single address. When a message is routed,
it is routed to the set of queues bound to the message's address."
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="core-address"/>
+ <c:simple-property name="includeRuntime"
readOnly="true" default="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="binding-names" required="true"
readOnly="true" description="The names of all bindings (both queues and
diverts) bound to this address." >
+ <c:simple-property name="binding-names" />
+ </c:list-property>
+ <c:simple-property name="number-of-bytes-per-page"
required="true" type="long" readOnly="true"
description="The number of bytes used by each page for this address."/>
+ <c:simple-property name="number-of-pages"
required="true" type="integer" readOnly="true"
description="The number of pages used by this address."/>
+ <c:list-property name="queue-names" required="true"
readOnly="true" description="The names of the queues associated with the
address." >
+ <c:simple-property name="queue-names" />
+ </c:list-property>
+ <c:list-property name="roles" required="true"
readOnly="true" description="A list of the security roles (name and
permissions) associated with the address." >
+ <c:map-property name="role">
+ <c:simple-property name="name" type="string"
readOnly="true" description="The name of a security role."/>
+ <c:simple-property name="send" type="boolean"
readOnly="true" description="This permission allows the user to send a
message to matching addresses."/>
+ <c:simple-property name="consume" type="boolean"
readOnly="true" description="This permission allows the user to consume a
message from a queue bound to matching addresses."/>
+ <c:simple-property name="create-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to create a durable queue."/>
+ <c:simple-property name="delete-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to delete a durable queue."/>
+ <c:simple-property name="create-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to create a temporary queue."/>
+ <c:simple-property name="delete-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to delete a temporary queue."/>
+ <c:simple-property name="manage" type="boolean"
readOnly="true" description="This permission allows the user to invoke
management operations by sending management messages to the management
address."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Cluster Connection (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cluster-connection"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:get-nodes" displayName="Get
Nodes" description="Returns a map of the nodes connected to this cluster
connection, where keys are node IDs and values are the addresses used to connect to the
nodes.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the cluster connection.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the cluster connection." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the cluster connection.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the cluster connection." />
+ </results>
+ </operation>
+
+ <metric property="node-id" dataType="trait"
description="The node ID used by this cluster connection."/>
+ <metric property="started" dataType="trait"
description="Whether the cluster connection is started."/>
+
+ <resource-configuration>
+ <c:simple-property name="allow-direct-connections-only"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether, if a node learns of the
existence of a node that is more than 1 hop away, we do not create a bridge for direct
cluster connection. Only relevant if 'static-connectors' is
defined. The default value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="true"
defaultValue="30000" description="The timeout (in ms) for remote calls made
by the cluster connection. The default value is 30000."/>
+ <c:simple-property name="check-period"
required="false" type="long" readOnly="true"
defaultValue="30000" description="The period (in milliseconds) between
client failure check. The default value is 30000."/>
+ <c:simple-property name="cluster-connection-address"
required="true" type="string" readOnly="true"
description="Each cluster connection only applies to messages sent to an address that
starts with this value."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The
confirmation-window-size to use for the connection used to forward
messages to a target node. The default value is 1048576."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="true"
defaultValue="60000" description="The maximum time (in milliseconds) for
which the connections used by the cluster connections are considered alive (in the absence
of heartbeat). The default value is 60000."/>
+ <c:simple-property name="connector-ref"
required="true" type="string" readOnly="true"
description="The confirmation-window-size to use for the connection
used to forward messages to a target node."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="true"
description="The discovery group used to obtain the list of other servers in the
cluster to which this cluster connection will make connections. Must be undefined (null)
if 'static-connectors' is defined."/>
+ <c:simple-property name="forward-when-no-consumers"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether messages will be distributed
round robin between other nodes of the cluster irrespective of whether there are matching
or indeed any consumers on other nodes. If this is set to false (the default) then HornetQ
will only forward messages to other nodes of the cluster if the address to which they are
being forwarded has queues which have consumers, and if those consumers have message
filters (selectors) at least one of those selectors must match the message. The default
value is false."/>
+ <c:simple-property name="max-hops" required="false"
type="integer" readOnly="true" defaultValue="1"
description="The maximum number of times a message can be forwarded. HornetQ can be
configured to also load balance messages to nodes which might be connected to it only
indirectly with other HornetQ servers as intermediates in a chain. The default value is
1."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The maximum interval of time used to retry
connections. The default value is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="true"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="true"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="true"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:list-property name="static-connectors"
required="false" readOnly="true" description="The statically
defined list of connectors to which this cluster connection will make connections. Must be
undefined (null) if 'discovery-group-name' is
defined." >
+ <c:simple-property name="static-connectors"
readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Broadcast Group (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description=""
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="broadcast-group"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:get-connector-pairs-as-json"
displayName="Get Connector Pairs as JSON" description="Returns the pairs of
live-backup connectors that are broadcasted by this broadcast group using JSON
serialization.">
+ <results>
+ <c:simple-property name="operationResult"
required="false" type="string" readOnly="false"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the broadcast group.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the broadcast group." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the broadcast group.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the broadcast group." />
+ </results>
+ </operation>
+
+ <metric property="started" dataType="trait"
description="Whether the broadcast group is started."/>
+
+ <resource-configuration>
+ <c:simple-property name="broadcast-period"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The period in milliseconds between
consecutive broadcasts. The default value is 2000."/>
+ <c:list-property name="connectors" required="false"
description="Specifies the names of connectors that will be broadcast." >
+ <c:simple-property name="connectors" />
+ </c:list-property>
+ <c:simple-property name="socket-binding"
required="true" type="string" readOnly="false"
description="The broadcast group socket binding.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Path (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="path=journal-directory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Bridge (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bridge"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the bridge.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the bridge." />
+ </results>
+ </operation>
+
+ <operation name="subsystem:stop" displayName="Stop"
description="Stops the bridge.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the bridge." />
+ </results>
+ </operation>
+
+ <metric property="started" dataType="trait"
description="Whether the bridge is started."/>
+
+ <resource-configuration>
+ <c:simple-property name="check-period"
required="false" type="long" readOnly="true"
defaultValue="30000" description="The period (in milliseconds) between
client failure check. The default value is 30000."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="true"
defaultValue="1048576" description="The
confirmation-window-size to use for the connection used to forward
messages to the target node. The default value is 1048576."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="true"
defaultValue="60000" description="The maximum time (in milliseconds) for
which the connections used by the bridges are considered alive (in the absence of
heartbeat). The default value is 60000."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="true"
description="The name of the discovery group used by this bridge. Must be undefined
(null) if 'static-connectors' is defined."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="true"
description="Whether the bridge will attempt to failover onto a backup server (if
specified) when the target server is cleanly shutdown rather than crashed."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="An optional filter
string. If specified then only messages which match the filter expression specified will
be forwarded. The filter string follows the HornetQ filter expression syntax described in
the HornetQ documentation."/>
+ <c:simple-property name="forwarding-address"
required="false" type="string" readOnly="true"
description="The address on the target server that the message will be forwarded to.
If a forwarding address is not specified then the original destination of the message will
be retained."/>
+ <c:simple-property name="ha" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Whether or not this bridge should support high availability. True means
it will connect to any available server in a cluster and support failover. The default
value is false."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The maximum interval of time used to retry
connections. The default value is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="true"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" defaultValue="CHANGE ME!!"
description="The password to use when creating the bridge connection to the remote
server. If it is not specified the default cluster password specified by the
cluster-password attribute in the root messaging subsystem resource will be used.
The default value is CHANGE ME!!."/>
+ <c:simple-property name="queue-name" required="true"
type="string" readOnly="true" description="The unique name of the
local queue that the bridge consumes from."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="true"
defaultValue="2000" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="true"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:list-property name="static-connectors"
required="false" description="A list of names of statically defined
connectors used by this bridge. Must be undefined (null) if
'discovery-group-name' is defined." >
+ <c:simple-property name="static-connectors" />
+ </c:list-property>
+ <c:simple-property name="transformer-class-name"
required="false" type="string" readOnly="true"
description="The name of a user-defined class which implements the
org.hornetq.core.server.cluster.Transformer interface."/>
+ <c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
+ <c:simple-property name="user" required="false"
type="string" readOnly="true"
defaultValue="HORNETQ.CLUSTER.ADMIN.USER" description="The user name to use
when creating the bridge connection to the remote server. If it is not specified the
default cluster user specified by the cluster-user attribute in the root messaging
subsystem resource will be used. The default value is
HORNETQ.CLUSTER.ADMIN.USER."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Discovery Group (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="discovery-group"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="initial-wait-timeout"
required="false" type="long" readOnly="true"
defaultValue="10000" description="Period, in ms, to wait for an initial
broadcast to give us at least one node in the cluster. The default value is
10000."/>
+ <c:simple-property name="refresh-timeout"
required="false" type="long" readOnly="true"
defaultValue="10000" description="Period the discovery group waits after
receiving the last broadcast from a particular server before removing that
server's connector pair entry from its list. The default value is
10000."/>
+ <c:simple-property name="socket-binding"
required="true" type="string" readOnly="true"
description="The discovery group socket binding.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Connector Service (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector-service"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="true"
description="Class name of the factory class that can instantiate the connector
service."/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ </server>
+
+
+ <service name="Profile"
+ description="A profile in a domain. Profiles are assigned to server
groups."
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="profile"
readOnly="true"/>
+ </plugin-configuration>
+
+ <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
+ list is different. Update similar Standalone service if changes are necessary.
-->
+ <service name="ModCluster Domain Service"
+ class="ModClusterComponent"
+ discovery="ModClusterDiscoveryComponent"
+ description="Mod_cluster support"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Domain Service Configuration"
+ discovery="SubsystemDiscovery"
+ class="ModClusterComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ </plugin-configuration>
+
+ &modclusterSharedOpsConfig;
+
+ <service name="Domain Dynamic Load Provider"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
+ <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
+ </resource-configuration>
+
+ <service name="Domain Custom Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of custom-load-metric service -->
+
+ <service name="Domain Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of load-metric service -->
+ </service><!-- End of dynamic-load-provider service -->
+
+ <service name="Domain Ssl"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-revocation-ur"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ </resource-configuration>
+ </service><!-- End of ssl service -->
+ </service><!-- End of Domain Modcluster Service Configuration -->
+ </service>
+
+ <service name="Naming (Profile)"
+ discovery="SubsystemDiscovery"
+ class="NamingComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
+ </plugin-configuration>
+
+ <service name="Binding (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JNDI bindings for primitive types"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="binding"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
+ <c:property-options>
+ <c:option value="simple"/>
+ <c:option value="lookup"/>
+ <c:option value="object-factory"/>
</c:property-options>
</c:simple-property>
<c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
@@ -3441,1076 +4813,1690 @@
</service>
</service>
- <service name="JBossWeb (Profile)"
+ <service name="JBossWeb (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-virtual-server"
required="true" type="string" readOnly="false"
defaultValue="default-host" description="The web container's default
virtual server. The default value is default-host.">
+ <c:option-source target="resource" expression="type=VHost
plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="instance-id" readOnly="true"
required="false" type="string" description="The identifier for
this server instance."/>
+ <c:simple-property name="native" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Add the native initialization listener to the web container. The default
value is true."/>
+
+ <c:group name="child:configuration=static-resources"
displayName="Static Resources">
+ <c:simple-property name="disabled:0" required="false"
type="boolean" defaultValue="false" description="Enable the
default Servlet mapping. The default value is false."/>
+ <c:simple-property name="file-encoding" required="false"
description="Force a file encoding." type="string"/>
+ <c:simple-property name="listings" required="false"
type="boolean" defaultValue="false" description="Enable folder
listings. The default value is false."/>
+ <c:simple-property name="max-depth" required="false"
type="integer" defaultValue="3" description="Maximum recursion
for PROPFIND. The default value is 3."/>
+ <c:simple-property name="read-only" required="false"
type="boolean" defaultValue="true" description="Allow write HTTP
methods (PUT, DELETE). The default value is true."/>
+ <c:simple-property name="sendfile" required="false"
type="integer" defaultValue="49152" description="Enable sendfile
if possible, for files bigger than the specified byte size. The default value is
49152."/>
+ <c:simple-property name="secret" required="false"
type="string" readOnly="true" description="Secret for WebDAV
locking operations."/>
+ <c:simple-property name="webdav" required="false"
type="boolean" defaultValue="false" description="Enable WebDAV
functionality. The default value is false."/>
+ </c:group>
+ <c:group name="child:configuration=jsp-configuration"
displayName="JSP Configuration">
+ <c:simple-property name="check-interval"
required="false" type="integer" readOnly="false"
defaultValue="0" description="Check interval for JSP updates using a
background thread. The default value is 0."/>
+ <c:simple-property name="development" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the development mode, which gives more information when an error
occurs. The default value is false."/>
+ <c:simple-property name="disabled:1" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the JSP container. The default value is false."/>
+ <c:simple-property name="display-source-fragment"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="When a runtime error occurs, attempts to
display corresponding JSP source fragment. The default value is true."/>
+ <c:simple-property name="dump-smap" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Write SMAP data to a file. The default value is false."/>
+ <c:simple-property
name="error-on-use-bean-invalid-class-attribute" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable errors when using a bad class in useBean. The default value is
false."/>
+ <c:simple-property name="generate-strings-as-char-arrays"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Generate String constants as char arrays.
The default value is false."/>
+ <c:simple-property name="java-encoding" required="false"
type="string" readOnly="false" defaultValue="UTF8"
description="Specify the encoding used for Java sources. The default value is
UTF8."/>
+ <c:simple-property name="keep-generated"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Keep the generated Servlets. The default
value is true."/>
+ <c:simple-property name="mapped-file" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Map to the JSP source. The default value is true."/>
+ <c:simple-property name="modification-test-interval"
required="false" type="integer" readOnly="false"
defaultValue="4" description="Minimum amount of time between two tests for
updates, in seconds. The default value is 4."/>
+ <c:simple-property name="recompile-on-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Retry failed JSP compilations on each
request. The default value is false."/>
+ <c:simple-property name="scratch-dir" required="false"
type="string" readOnly="false" description="Specify a different
work directory."/>
+ <c:simple-property name="smap" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable SMAP. The default value is true."/>
+ <c:simple-property name="source-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Source VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="tag-pooling" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable tag pooling. The default value is true."/>
+ <c:simple-property name="target-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Target VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="trim-spaces" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Trim some spaces from the generated Servlet. The default value is
false."/>
+ <c:simple-property name="x-powered-by" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable advertising the JSP engine in x-powered-by. The default value is
true."/>
+ </c:group>
+ <c:group name="child:configuration=container"
displayName="Container">
+ <!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
+ <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false">
+ <c:map-property name="mime-mapping:collapsed">
+ <c:simple-property name="name:0"
displayName="Name" description="A MIME mapping name without the dot (e.g.
'txt')"/>
+ <c:simple-property name="value:1"
displayName="Value" description="A MIME mapping value (e.g.
'text/plain' )"/>
+ </c:map-property>
+ </c:list-property>
+ -->
+ <c:list-property name="welcome-file" required="false"
description="A welcome file declaration.">
+ <c:simple-property name="welcome-file"
type="string"/>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Connector (Profile)"
+ discovery="SubsystemDiscovery"
+ class="WebConnectorComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="scheme" required="true"
type="string" readOnly="false" description="The web connector
scheme.">
+ <c:property-options>
+ <c:option value="http"/>
+ <c:option value="https"/>
+ <c:option value="ajp"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="socket-binding" required="true"
type="string" description="The web connector socket-binding reference, this
connector should be bound to.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Defines whether the connector should be started on startup. The default
value is true."/>
+ <c:simple-property name="enable-lookups"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Enable DNS lookups for Servlet API. The
default value is false."/>
+ <c:simple-property name="executor" required="false"
type="string" readOnly="false" description="The name of the
executor that should be used for the processing threads of this connector. If undefined
defaults to using an internal pool."/>
+ <c:simple-property name="max-connections"
required="false" type="integer" readOnly="false"
description="Amount of concurrent connections that can be processed by the connector
with optimum performance. The default value depends on the connector used and the number
of cpu cores (512*cores for HTTP, 32*cores for AJP)."/>
+ <c:simple-property name="max-post-size" required="false"
type="integer" readOnly="false" defaultValue="2097152"
description="Maximum size in bytes of a POST request that can be parsed by the
container. The default value is 2097152."/>
+ <c:simple-property name="max-save-post-size"
required="false" type="integer" readOnly="false"
defaultValue="4096" description="Maximum size in bytes of a POST request
that will be saved during certain authentication schemes. The default value is
4096."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique name for the
connector."/>
+ <c:simple-property name="protocol" required="true"
type="string" readOnly="false" default="HTTP/1.1"
defaultValue="HTTP/1.1"
+ description="The web connector protocol. (e.g.
'HTTP/1.1' or 'AJP' or a name of a class implementing ProtocolHandler and
MBeanRegistration )">
+ <!-- TODO let the user could enter a custom value here when the UI
supports this. -->
+ <c:property-options>
+ <c:option value="HTTP/1.1"/>
+ <c:option value="AJP/1.3"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="proxy-name" required="false"
type="string" readOnly="false" description="The host name that
will be used when sending a redirect. The default value is null."/>
+ <c:simple-property name="proxy-port" required="false"
type="integer" readOnly="false" description="The port that will
be used when sending a redirect."/>
+ <c:simple-property name="redirect-port" required="false"
type="integer" readOnly="false" defaultValue="8433"
description="The port for redirection to a secure connector. The default value is
8433."/>
+ <c:simple-property name="secure" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Indicates if content sent or received by the connector is secured from
the user perspective. The default value is false."/>
+ <c:simple-property name="virtual-server"
required="false" type="string" readOnly="false"
description="The list of virtual servers that can be accessed through this connector.
The default is to allow all virtual servers."/>
+
+ <c:group name="child:ssl=configuration:enabled=secure=true"
displayName="SSL Configuration">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-certificate-password"
required="false" type="string" readOnly="false"
description="Certificate password."/>
+ <c:simple-property name="ca-revocation-url"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-file"
required="false" type="string" readOnly="false"
description="Server certificate file. If the value is not given, ~/.keystore is the
default"/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
description="Key file for the certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="keystore-type"
required="false" type="string" readOnly="false"
description="Type of the keystore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The configuration
name."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" description="The SSL protocols
that are enabled." default="ALL" defaultValue="ALL">
+ <c:property-options>
+ <c:option value="SSLv2"/>
+ <c:option value="SSLv3"/>
+ <c:option value="TLSv1"/>
+ <c:option value="SSLv2+SSLv3"/>
+ <c:option value="ALL"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="session-cache-size"
required="false" type="integer" readOnly="false"
description="SSL session cache."/>
+ <c:simple-property name="session-timeout"
required="false" type="integer" readOnly="false"
description="SSL session cache timeout."/>
+ <c:simple-property name="truststore-type"
required="false" type="string" readOnly="false"
description="Type of the truststore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="verify-client"
required="false" type="string" readOnly="false"
description="Enable client certificate verification."/>
+ <c:simple-property name="verify-depth"
required="false" type="integer" readOnly="false"
description="Limit certificate nesting."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+
+ <service name="VHost (Profile)"
+ discovery="SubsystemDiscovery"
+ class="VHostComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="virtual-server"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="alias" description="The virtual server
aliases" displayName="Virtual server aliases">
+ <c:simple-property name="alias"/>
+ </c:list-property>
+ <c:simple-property name="default-web-module"
type="string" defaultValue="ROOT.war" description="The web module
deployment name that will be mapped as the root webapp."/>
+ <c:simple-property name="enable-welcome-root"
type="boolean" defaultValue="false" description="Whether or not
the bundled welcome directory is used as the root web context. The default value is
false."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique virtual host
name"/>
+
+ <c:group name="child:sso=configuration" displayName="The SSO
configuration for this virtual server.">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
description="Enables clustered SSO using the specified clustered cache
container.">
+ <c:option-source target="resource"
expression="type='Cache Container' plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="cache-name"
required="false" type="string" readOnly="false"
description="Name of the cache to use in the cache container."/>
+ <c:simple-property name="domain" required="false"
type="string" readOnly="false" description="The cookie domain
that will be used."/>
+ <c:simple-property name="reauthenticate"
required="false" type="boolean" readOnly="false"
description="Enables reauthentication with the realm when using SSO."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Rewrite Rules (Profile)"
+ discovery="SubsystemDiscovery"
+ description="A list of rewrite rules that will be processed in
order on the URL or vhost specified in the request. Those follow the rules for
mod_rewrite. Please consult the manual for help on settings"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="rewrite"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="false" description="Option flags for this
rewrite rule. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern" required="true"
type="string" readOnly="false" description="The pattern that will
be matched. Consult the mod_rewrite docs."/>
+ <c:simple-property name="substitution" required="true"
type="string" readOnly="false" description="The string that will
replace the original URL or vhost. Consult the mod_rewrite docs."/>
+ <!-- embedded condition children - commented out for the moment -->
+ <c:group name="children:condition:name+"
displayName="Rewrite conditions">
+ <c:list-property name="*1" displayName="Conditions"
required="false" readOnly="true">
+ <c:map-property name="*:name" displayName="Name"
readOnly="true">
+ <c:simple-property name="name" required="true"
readOnly="true" displayName="Condition-Name"/>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="true" description="Option flags for this
condition. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern"
required="true" type="string" readOnly="true"
description="The pattern to match. Consult the mod_rewrite docs."/>
+ <c:simple-property name="test" required="true"
type="string" readOnly="true" description="Test pattern for the
condition. Consult the mod_rewrite docs."/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+
+ <service name="Access Log (Profile)"
+ discovery="SubsystemDiscovery"
+ description="The access log configuration for this virtual
server."
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="access-log=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="extended" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable extended pattern, with more options. The default value is
false."/>
+ <c:simple-property name="pattern" required="false"
type="string" readOnly="false" defaultValue="common"
description="The access log pattern. The default value is common."/>
+ <c:simple-property name="prefix" required="false"
type="string" readOnly="false" defaultValue="false"
description="Prefix for the log file name. The default value is false."/>
+ <c:simple-property name="resolve-hosts"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Host resolution. The default value is
false."/>
+ <c:simple-property name="rotate" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Rotate the access log every day. The default value is true."/>
+
+ <c:group name="child:directory=configuration"
displayName="The location for the access logging.">
+ <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The relative folder
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
defaultValue="jboss.server.log.dir" description="The folder the path is
relative to. The default value is jboss.server.log.dir."/>
+ </c:group>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="JCA (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The Java EE Connector Architecture (JCA) subsystem
providing general configuration for resource adapters"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jca"
readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:group name="child:bean-validation=bean-validation"
displayName="Bean validation (JSR-303) for resource adapters.">
+ <c:simple-property name="enabled:1" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether bean validation is
enabled. The default value is true."/>
+ </c:group>
+ <c:group name="child:archive-validation=archive-validation"
displayName="Archive validation for resource adapters.">
+ <c:simple-property name="enabled:2" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether archive validation is
enabled. The default value is true."/>
+ <c:simple-property name="fail-on-error" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Should an archive validation error report fail the deployment. The
default value is true."/>
+ <c:simple-property name="fail-on-warn" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should an archive validation warning report fail the deployment. The
default value is false."/>
+ </c:group>
+ <c:group
name="child:cached-connection-manager=cached-connection-manager"
displayName="Cached connection manager for resource adapters.">
+ <c:simple-property name="debug" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable debug information logging. The default value is
false."/>
+ <c:simple-property name="error" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable error information logging. The default value is
false."/>
+ <c:simple-property name="install" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable the cached connection manager valve and interceptor. The
default value is false."/>
+ </c:group>
+ </resource-configuration>
+
+ <service name="BootstrapContext (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Bootstrap context for resource adapters."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bootstrap-context"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
BootstrapContext"/>
+ <c:simple-property name="workmanager" required="false"
type="string" readOnly="false" description="The WorkManager
instance for the BootstrapContext">
+ <c:option-source target="resource"
expression="type=Workmanager plugin=&pluginName;"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Workmanager (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="WorkManager for resource adapters."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="workmanager"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
WorkManager"/>
+ </resource-configuration>
+
+ <service name="Long Running Thread Pool (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Long running thread pool executor with a bounded queue
where threads submitting tasks may block."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="long-running-threads"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Short Running Thread Pool (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Short running thread pool executor with a bounded
queue where threads submitting tasks may block."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="short-running-threads"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="Osgi (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The OSGi subsystem configuration."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="activation" required="false"
type="string" readOnly="false" defaultValue="LAZY"
description="Activation flag for the OSGi subsystem. Possible values: lazy, eager.
The default value is LAZY."/>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The current Start
Level of the OSGi Framework. Changing this value will change the Start Level of the
Framework accordingly."/>
+ </resource-configuration>
+
+ <service name="Capability (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="capability"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The startlevel for
the capability. Can only be specified for OSGi bundles."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Resource Adapters (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Configuration of the resource adapters subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
+ </plugin-configuration>
+
+ <service name="Resource Adapter (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of a resource adapter."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="resource-adapter"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="archive" required="true"
type="string" readOnly="false" description="Specifies the
resource adapter archive"/>
+ <c:simple-property name="beanvalidationgroups"
required="false" type="string" readOnly="false"
description="Specifies the bean validation groups that should be used"/>
+ <c:simple-property name="bootstrapcontext"
required="false" type="string" readOnly="false"
description="Specifies the unique name of the bootstrap context that should be
used"/>
+ <c:simple-property name="transaction-support"
required="true" type="string" readOnly="false"
description="Specifies the transaction support level of the resource
adapter">
+ <c:property-options>
+ <c:option value="LocalTransaction"/>
+ <c:option value="XATransaction"/>
+ <c:option value="NoTransaction"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+
+ <service name="Admin Objects (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the administration objects."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="admin-objects"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Connection Definitions (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the connection definitions."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-definitions"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allocation-retry:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry" description="The allocation retry element
indicates the number of times that allocating a connection should be tried before throwing
an exception"/>
+ <c:simple-property name="allocation-retry-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry Wait Millis" description="The allocation
retry wait millis element specifies the amount of time, in milliseconds, to wait between
retrying to allocate a connection"/>
+ <c:simple-property name="background-validation"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to specify that connections
should be validated on a background thread versus being validated prior to use. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="background-validation-millis:expr"
required="false" type="integer" readOnly="false"
displayName="Background Validation Millis" description="The
background-validation-millis element specifies the amount of time, in
milliseconds, that background validation will run. Changing this value requires a server
restart"/>
+ <c:simple-property name="blocking-timeout-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Blocking Timeout Wait Millis" description="The
blocking-timeout-millis element specifies the maximum time, in
milliseconds, to block while waiting for a connection before throwing an exception. Note
that this blocks only while waiting for locking a connection, and will never throw an
exception if creating a new connection takes an inordinately long time"/>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="flush-strategy"
required="false" type="string" readOnly="true"
+ description="Specifies how the pool should be flush
in case of an error." default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
+ <c:property-options>
+ <c:option value="FailingConnectionOnly"/>
+ <c:option value="IdleConnections"/>
+ <c:option value="EntirePool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="idle-timeout-minutes:expr"
required="false" type="long" readOnly="false"
displayName="Idle Timeout Minutes" description="The
idle-timeout-minutes elements specifies the maximum time, in minutes, a
connection may be idle before being closed. The actual maximum time depends also on the
IdleRemover scan time, which is half of the smallest idle-timeout-minutes
value of any pool. Changing this value requires a server restart."/>
+ <c:simple-property name="interleaving"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to enable interleaving for XA
connections. The default value is false."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="max-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="20" displayName="Max Pool Size" description="The
max-pool-size element specifies the maximum number of connections for a
pool. No more connections will be created in each sub-pool. The default value is
20."/>
+ <c:simple-property name="min-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="0" displayName="Min Pool Size" description="The
min-pool-size element specifies the minimum number of connections for a
pool. The default value is 0."/>
+ <c:simple-property name="no-recovery" required="false"
type="boolean" readOnly="false" description="Specifies if the
connection pool should be excluded from recovery"/>
+ <c:simple-property name="no-tx-separate-pool"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Oracle does not like XA connections
getting used both inside and outside a JTA transaction. To workaround the problem you can
create separate sub-pools for the different contexts. The default value is
false."/>
+ <c:simple-property name="pad-xid" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should the Xid be padded. The default value is false."/>
+ <c:simple-property name="pool-prefill"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Should the pool be prefilled. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="pool-use-strict-min"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Specifies if the
min-pool-size should be considered strictly. The default value is
false."/>
+ <c:simple-property name="recovery-password"
required="false" type="string" readOnly="false"
description="The password used for recovery"/>
+ <c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="false"
description="The fully qualified class name of the recovery plugin
implementation"/>
+ <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin">
+ <c:simple-property name="recovery-plugin-properties"
required="false" type="string" readOnly="false"
displayName="Recovery Plugin Property"/>
+ </c:map-property>
+ <c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="false"
description="The security domain used for recovery"/>
+ <c:simple-property name="recovery-username"
required="false" type="string" readOnly="false"
description="The user name used for recovery"/>
+ <c:simple-property name="same-rm-override"
required="false" type="boolean" readOnly="false"
description="The is-same-rm-override element allows one to
unconditionally set whether the javax.transaction.xa.XAResource.isSameRM(XAResource)
returns true or false"/>
+ <c:simple-property name="security-application"
required="false" type="boolean" readOnly="false"
description="Indicates that app supplied parameters (such as from getConnection(user,
pw)) are used to distinguish connections in the pool"/>
+ <c:simple-property name="security-domain"
required="false" type="string" readOnly="false"
description="Specifies the security domain which defines the
javax.security.auth.Subject that are used to distinguish connections in the
pool"/>
+ <c:simple-property name="security-domain-and-application"
required="false" type="string" readOnly="false"
description="Indicates that either app supplied parameters (such as from
getConnection(user, pw)) or Subject (from security domain) are used to distinguish
connections in the pool"/>
+ <c:simple-property name="use-ccm" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable the use of a cached connection manager. The default value is
true."/>
+ <c:simple-property name="use-fast-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to fail a connection allocation
on the first try if it is invalid (true) or keep trying until the pool is exhausted of all
potential connections (false). The default value is false."/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ <c:simple-property name="use-try-lock:expr"
required="false" type="long" readOnly="false"
displayName="Use Try Lock" description="Any configured timeout for internal
locks on the resource adapter objects in seconds"/>
+ <c:simple-property name="wrap-xa-resource"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Should the XAResource instances be wrapped
in a org.jboss.tm.XAResourceWrapper instance. The default value is true."/>
+ <c:simple-property name="xa-resource-timeout:expr"
required="false" type="integer" readOnly="false"
displayName="XA Resource Timeout" description="The value is passed to
XAResource.setTransactionTimeout(), in seconds. Default is zero"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="EJB3 (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ description="The configuration of the ejb3 subsystem."
singleton="true">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=ejb3"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="default-virtual-server"
required="true" type="string" readOnly="false"
defaultValue="default-host" description="The web container's default
virtual server. The default value is default-host.">
- <c:option-source target="resource" expression="type=VHost
plugin=&pluginName;"/>
- </c:simple-property>
- <c:simple-property name="instance-id" readOnly="true"
required="false" type="string" description="The identifier for
this server instance."/>
- <c:simple-property name="native" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Add the native initialization listener to the web container. The default
value is true."/>
+ <c:simple-property name="default-clustered-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
clustered stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default entity bean instance pool, which will be applicable
to all entity beans, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-optimistic-locking"
required="false" type="boolean" readOnly="false"
description="If set to true entity beans will use optimistic locking by
default"/>
+ <c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="false"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
+ <c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
displayName="Default Singleton Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for singleton beans. The default value is
5000."/>
+ <c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
displayName="Default Stateful Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for stateful beans. The default value is
5000."/>
+ <c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
+ </resource-configuration>
- <c:group name="child:configuration=static-resources"
displayName="Static Resources">
- <c:simple-property name="disabled:0" required="false"
type="boolean" defaultValue="false" description="Enable the
default Servlet mapping. The default value is false."/>
- <c:simple-property name="file-encoding" required="false"
description="Force a file encoding." type="string"/>
- <c:simple-property name="listings" required="false"
type="boolean" defaultValue="false" description="Enable folder
listings. The default value is false."/>
- <c:simple-property name="max-depth" required="false"
type="integer" defaultValue="3" description="Maximum recursion
for PROPFIND. The default value is 3."/>
- <c:simple-property name="read-only" required="false"
type="boolean" defaultValue="true" description="Allow write HTTP
methods (PUT, DELETE). The default value is true."/>
- <c:simple-property name="sendfile" required="false"
type="integer" defaultValue="49152" description="Enable sendfile
if possible, for files bigger than the specified byte size. The default value is
49152."/>
- <c:simple-property name="secret" required="false"
type="string" readOnly="true" description="Secret for WebDAV
locking operations."/>
- <c:simple-property name="webdav" required="false"
type="boolean" defaultValue="false" description="Enable WebDAV
functionality. The default value is false."/>
- </c:group>
- <c:group name="child:configuration=jsp-configuration"
displayName="JSP Configuration">
- <c:simple-property name="check-interval"
required="false" type="integer" readOnly="false"
defaultValue="0" description="Check interval for JSP updates using a
background thread. The default value is 0."/>
- <c:simple-property name="development" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the development mode, which gives more information when an error
occurs. The default value is false."/>
- <c:simple-property name="disabled:1" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the JSP container. The default value is false."/>
- <c:simple-property name="display-source-fragment"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="When a runtime error occurs, attempts to
display corresponding JSP source fragment. The default value is true."/>
- <c:simple-property name="dump-smap" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Write SMAP data to a file. The default value is false."/>
- <c:simple-property
name="error-on-use-bean-invalid-class-attribute" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable errors when using a bad class in useBean. The default value is
false."/>
- <c:simple-property name="generate-strings-as-char-arrays"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Generate String constants as char arrays.
The default value is false."/>
- <c:simple-property name="java-encoding" required="false"
type="string" readOnly="false" defaultValue="UTF8"
description="Specify the encoding used for Java sources. The default value is
UTF8."/>
- <c:simple-property name="keep-generated"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Keep the generated Servlets. The default
value is true."/>
- <c:simple-property name="mapped-file" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Map to the JSP source. The default value is true."/>
- <c:simple-property name="modification-test-interval"
required="false" type="integer" readOnly="false"
defaultValue="4" description="Minimum amount of time between two tests for
updates, in seconds. The default value is 4."/>
- <c:simple-property name="recompile-on-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Retry failed JSP compilations on each
request. The default value is false."/>
- <c:simple-property name="scratch-dir" required="false"
type="string" readOnly="false" description="Specify a different
work directory."/>
- <c:simple-property name="smap" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable SMAP. The default value is true."/>
- <c:simple-property name="source-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Source VM level for compilation. The default value is 1.5."/>
- <c:simple-property name="tag-pooling" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable tag pooling. The default value is true."/>
- <c:simple-property name="target-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Target VM level for compilation. The default value is 1.5."/>
- <c:simple-property name="trim-spaces" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Trim some spaces from the generated Servlet. The default value is
false."/>
- <c:simple-property name="x-powered-by" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable advertising the JSP engine in x-powered-by. The default value is
true."/>
- </c:group>
- <c:group name="child:configuration=container"
displayName="Container">
- <!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
- <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false">
- <c:map-property name="mime-mapping:collapsed">
- <c:simple-property name="name:0"
displayName="Name" description="A MIME mapping name without the dot (e.g.
'txt')"/>
- <c:simple-property name="value:1"
displayName="Value" description="A MIME mapping value (e.g.
'text/plain' )"/>
- </c:map-property>
- </c:list-property>
- -->
- <c:list-property name="welcome-file" required="false"
description="A welcome file declaration.">
- <c:simple-property name="welcome-file"
type="string"/>
+ <service name="EJB3 Thread Pool (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="File Passivation Store (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A file system based passivation store."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="groups-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/groups"/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false"
defaultValue="jboss.server.data.dir"/>
+ <c:simple-property name="sessions-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/sessions"/>
+ <c:simple-property name="subdirectory-count:expr"
displayName="Subdirectory Count" required="false"
type="string" readOnly="false" defaultValue="100"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Strict Max Bean Instance Pool (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A bean instance pool with a strict upper limit"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="strict-max-bean-instance-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="false" defaultValue="20" description="The maximum
number of bean instances that the pool can hold at a given point in time. The default
value is 20."/>
+ <c:simple-property name="timeout:expr"
displayName="Timeout" required="false" type="string"
readOnly="false" defaultValue="5" description="The maximum amount
of time to wait for a bean instance to be available from the pool. The default value is
5."/>
+ <c:simple-property name="timeout-unit" required="false"
type="string" readOnly="false" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
+ </resource-configuration>
+ </service>
+
+ <service name="SFSB Cache (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A SFSB cache."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cache"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="aliases" description="The aliases by
which this cache may also be referenced">
+ <c:simple-property name="aliases"/>
</c:list-property>
- </c:group>
- </resource-configuration>
+ <c:simple-property name="passivation-store"
required="false" type="string" readOnly="false"
description="The passivation store used by this cache"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Cluster Passivation Store (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A clustered passivation store."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cluster-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="bean-cache" required="false"
type="string" readOnly="false" description="The name of the cache
used to store bean instances."/>
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
+ <c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="false"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
+ <c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Async Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB3 Asynchronous Invocation Service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=async"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool which handles asynchronous
invocations"/>
+ </resource-configuration>
+ </service>
- <service name="Connector (Profile)"
+ <service name="IIOP Service (Profile)"
discovery="SubsystemDiscovery"
- class="WebConnectorComponent"
- createDeletePolicy="both">
+ class="BaseComponent"
+ description="The IIOP service"
+ singleton="true">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="connector"/>
+ <c:simple-property name="path" readOnly="true"
default="service=iiop"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="scheme" required="true"
type="string" readOnly="false" description="The web connector
scheme.">
- <c:property-options>
- <c:option value="http"/>
- <c:option value="https"/>
- <c:option value="ajp"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="socket-binding" required="true"
type="string" description="The web connector socket-binding reference, this
connector should be bound to.">
- <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
- </c:simple-property>
- <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Defines whether the connector should be started on startup. The default
value is true."/>
- <c:simple-property name="enable-lookups"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Enable DNS lookups for Servlet API. The
default value is false."/>
- <c:simple-property name="executor" required="false"
type="string" readOnly="false" description="The name of the
executor that should be used for the processing threads of this connector. If undefined
defaults to using an internal pool."/>
- <c:simple-property name="max-connections"
required="false" type="integer" readOnly="false"
description="Amount of concurrent connections that can be processed by the connector
with optimum performance. The default value depends on the connector used and the number
of cpu cores (512*cores for HTTP, 32*cores for AJP)."/>
- <c:simple-property name="max-post-size" required="false"
type="integer" readOnly="false" defaultValue="2097152"
description="Maximum size in bytes of a POST request that can be parsed by the
container. The default value is 2097152."/>
- <c:simple-property name="max-save-post-size"
required="false" type="integer" readOnly="false"
defaultValue="4096" description="Maximum size in bytes of a POST request
that will be saved during certain authentication schemes. The default value is
4096."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique name for the
connector."/>
- <c:simple-property name="protocol" required="true"
type="string" readOnly="false" default="HTTP/1.1"
defaultValue="HTTP/1.1"
- description="The web connector protocol. (e.g.
'HTTP/1.1' or 'AJP' or a name of a class implementing ProtocolHandler and
MBeanRegistration )">
- <!-- TODO let the user could enter a custom value here when the UI
supports this. -->
- <c:property-options>
- <c:option value="HTTP/1.1"/>
- <c:option value="AJP/1.3"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="proxy-name" required="false"
type="string" readOnly="false" description="The host name that
will be used when sending a redirect. The default value is null."/>
- <c:simple-property name="proxy-port" required="false"
type="integer" readOnly="false" description="The port that will
be used when sending a redirect."/>
- <c:simple-property name="redirect-port" required="false"
type="integer" readOnly="false" defaultValue="8433"
description="The port for redirection to a secure connector. The default value is
8433."/>
- <c:simple-property name="secure" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Indicates if content sent or received by the connector is secured from
the user perspective. The default value is false."/>
- <c:simple-property name="virtual-server"
required="false" type="string" readOnly="false"
description="The list of virtual servers that can be accessed through this connector.
The default is to allow all virtual servers."/>
-
- <c:group name="child:ssl=configuration:enabled=secure=true"
displayName="SSL Configuration">
- <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
- <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
- <c:simple-property name="ca-certificate-password"
required="false" type="string" readOnly="false"
description="Certificate password."/>
- <c:simple-property name="ca-revocation-url"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
- <c:simple-property name="certificate-file"
required="false" type="string" readOnly="false"
description="Server certificate file. If the value is not given, ~/.keystore is the
default"/>
- <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
description="Key file for the certificate."/>
- <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
- <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
- <c:simple-property name="keystore-type"
required="false" type="string" readOnly="false"
description="Type of the keystore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
- <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The configuration
name."/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password."/>
- <c:simple-property name="protocol" required="false"
type="string" readOnly="false" description="The SSL protocols
that are enabled." default="ALL" defaultValue="ALL">
- <c:property-options>
- <c:option value="SSLv2"/>
- <c:option value="SSLv3"/>
- <c:option value="TLSv1"/>
- <c:option value="SSLv2+SSLv3"/>
- <c:option value="ALL"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="session-cache-size"
required="false" type="integer" readOnly="false"
description="SSL session cache."/>
- <c:simple-property name="session-timeout"
required="false" type="integer" readOnly="false"
description="SSL session cache timeout."/>
- <c:simple-property name="truststore-type"
required="false" type="string" readOnly="false"
description="Type of the truststore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
- <c:simple-property name="verify-client"
required="false" type="string" readOnly="false"
description="Enable client certificate verification."/>
- <c:simple-property name="verify-depth"
required="false" type="integer" readOnly="false"
description="Limit certificate nesting."/>
- </c:map-property>
- </c:group>
+ <c:simple-property name="enable-by-default"
required="false" type="boolean" readOnly="false"
description="If this is true EJB's will be exposed over IIOP by default,
otherwise it needs to be explicitly enabled in the deployment descriptor"/>
+ <c:simple-property name="use-qualified-name"
required="false" type="boolean" readOnly="false"
description="If true EJB names will be bound into the naming service with the
application and module name prepended to the name (e.g. myapp/mymodule/MyEjb)"/>
</resource-configuration>
</service>
- <service name="VHost (Profile)"
+ <service name="Remote Service (Profile)"
discovery="SubsystemDiscovery"
- class="VHostComponent"
- createDeletePolicy="both">
+ class="BaseComponent"
+ description="The EJB3 remote service"
+ singleton="true">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="virtual-server"/>
+ <c:simple-property name="path" readOnly="true"
default="service=remote"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="alias" description="The virtual server
aliases" displayName="Virtual server aliases">
- <c:simple-property name="alias"/>
- </c:list-property>
- <c:simple-property name="default-web-module"
type="string" defaultValue="ROOT.war" description="The web module
deployment name that will be mapped as the root webapp."/>
- <c:simple-property name="enable-welcome-root"
type="boolean" defaultValue="false" description="Whether or not
the bundled welcome directory is used as the root web context. The default value is
false."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique virtual host
name"/>
-
- <c:group name="child:sso=configuration" displayName="The SSO
configuration for this virtual server.">
- <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
- <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
description="Enables clustered SSO using the specified clustered cache
container.">
- <c:option-source target="resource"
expression="type='Cache Container' plugin=&pluginName;"/>
- </c:simple-property>
- <c:simple-property name="cache-name"
required="false" type="string" readOnly="false"
description="Name of the cache to use in the cache container."/>
- <c:simple-property name="domain" required="false"
type="string" readOnly="false" description="The cookie domain
that will be used."/>
- <c:simple-property name="reauthenticate"
required="false" type="boolean" readOnly="false"
description="Enables reauthentication with the realm when using SSO."/>
- </c:map-property>
- </c:group>
+ <c:simple-property name="connector-ref" required="false"
type="string" readOnly="false" description="The name of the
connector on which the EJB3 remoting channel is registered"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool that handles remote invocations"/>
</resource-configuration>
- <service name="Rewrite Rules (Profile)"
+ <service name="Channel Creation Options (Profile)"
discovery="SubsystemDiscovery"
- description="A list of rewrite rules that will be processed in
order on the URL or vhost specified in the request. Those follow the rules for
mod_rewrite. Please consult the manual for help on settings"
class="BaseComponent"
+ description="The options that will be used during the EJB remote
channel creation"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="rewrite"/>
+ <c:simple-property name="path" readOnly="true"
default="channel-creation-options"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="flags" required="true"
type="string" readOnly="false" description="Option flags for this
rewrite rule. Consult the mod_rewrite docs."/>
- <c:simple-property name="pattern" required="true"
type="string" readOnly="false" description="The pattern that will
be matched. Consult the mod_rewrite docs."/>
- <c:simple-property name="substitution" required="true"
type="string" readOnly="false" description="The string that will
replace the original URL or vhost. Consult the mod_rewrite docs."/>
- <!-- embedded condition children - commented out for the moment -->
- <c:group name="children:condition:name+"
displayName="Rewrite conditions">
- <c:list-property name="*1" displayName="Conditions"
required="false" readOnly="true">
- <c:map-property name="*:name" displayName="Name"
readOnly="true">
- <c:simple-property name="name" required="true"
readOnly="true" displayName="Condition-Name"/>
- <c:simple-property name="flags" required="true"
type="string" readOnly="true" description="Option flags for this
condition. Consult the mod_rewrite docs."/>
- <c:simple-property name="pattern"
required="true" type="string" readOnly="true"
description="The pattern to match. Consult the mod_rewrite docs."/>
- <c:simple-property name="test" required="true"
type="string" readOnly="true" description="Test pattern for the
condition. Consult the mod_rewrite docs."/>
- </c:map-property>
- </c:list-property>
- </c:group>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the
channel creation option">
+ <c:property-options>
+ <c:option value="remoting" name="remoting"/>
+ <c:option value="xnio" name="xnio"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value for the EJB
remote channel creation option"/>
</resource-configuration>
</service>
+ </service>
- <service name="Access Log (Profile)"
- discovery="SubsystemDiscovery"
- description="The access log configuration for this virtual
server."
- class="BaseComponent"
- singleton="true"
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="access-log=configuration"/>
- </plugin-configuration>
+ <service name="Timer Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB timer service"
+ singleton="true">
- <resource-configuration>
- <c:simple-property name="extended" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable extended pattern, with more options. The default value is
false."/>
- <c:simple-property name="pattern" required="false"
type="string" readOnly="false" defaultValue="common"
description="The access log pattern. The default value is common."/>
- <c:simple-property name="prefix" required="false"
type="string" readOnly="false" defaultValue="false"
description="Prefix for the log file name. The default value is false."/>
- <c:simple-property name="resolve-hosts"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Host resolution. The default value is
false."/>
- <c:simple-property name="rotate" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Rotate the access log every day. The default value is true."/>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=timer-service"/>
+ </plugin-configuration>
- <c:group name="child:directory=configuration"
displayName="The location for the access logging.">
- <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The relative folder
path."/>
- <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
defaultValue="jboss.server.log.dir" description="The folder the path is
relative to. The default value is jboss.server.log.dir."/>
- </c:group>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The directory to
store persistent timer information in"/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The relative path
that is used to resolve the timer data store location"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool used to run timer service
invocations"/>
+ </resource-configuration>
</service>
</service>
- <service name="JCA (Profile)"
- class="BaseComponent"
+ <service name="Threads (Profile)"
discovery="SubsystemDiscovery"
- description="The Java EE Connector Architecture (JCA) subsystem
providing general configuration for resource adapters"
+ class="ThreadsComponent"
singleton="true">
<plugin-configuration>
- <c:simple-property name="path" default="subsystem=jca"
readOnly="true"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
</plugin-configuration>
- <resource-configuration>
- <c:group name="child:bean-validation=bean-validation"
displayName="Bean validation (JSR-303) for resource adapters.">
- <c:simple-property name="enabled:1" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether bean validation is
enabled. The default value is true."/>
- </c:group>
- <c:group name="child:archive-validation=archive-validation"
displayName="Archive validation for resource adapters.">
- <c:simple-property name="enabled:2" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether archive validation is
enabled. The default value is true."/>
- <c:simple-property name="fail-on-error" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Should an archive validation error report fail the deployment. The
default value is true."/>
- <c:simple-property name="fail-on-warn" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should an archive validation warning report fail the deployment. The
default value is false."/>
- </c:group>
- <c:group
name="child:cached-connection-manager=cached-connection-manager"
displayName="Cached connection manager for resource adapters.">
- <c:simple-property name="debug" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable debug information logging. The default value is
false."/>
- <c:simple-property name="error" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable error information logging. The default value is
false."/>
- <c:simple-property name="install" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable the cached connection manager valve and interceptor. The
default value is false."/>
- </c:group>
- </resource-configuration>
-
- <service name="BootstrapContext (Profile)"
+ <service name="ThreadFactory (Profile)"
+ discovery="SubsystemDiscovery"
class="BaseComponent"
+ description="A thread factory (implementing
java.util.concurrent.ThreadFactory)."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-factory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="group-name" required="false"
type="string" readOnly="false" description="Specifies the name of
a thread group to create for this thread factory."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
created thread factory."/>
+ <c:simple-property name="priority:expr" required="false"
type="string" readOnly="false" defaultValue="-1"
displayName="Priority" description="May be used to specify the thread
priority of created threads. The default value is -1."/>
+ <c:simple-property name="thread-name-pattern"
required="false" type="string" readOnly="false"
description="The template used to create names for threads. The following patterns
may be used:
+ %% - emit a percent sign
+ %t - emit the per-factory thread sequence number
+ %g - emit the global thread sequence number
+ %f - emit the factory sequence number
+ %i - emit the thread ID."/>
+ </resource-configuration>
+ </service>
+
+ <service name="ThreadPool (Profile)"
discovery="SubsystemDiscovery"
- description="Bootstrap context for resource adapters."
+ class="ThreadPoolComponent"
+ description="A thread pool executor"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="bootstrap-context"/>
+ <c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
</plugin-configuration>
- <resource-configuration>
- <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
BootstrapContext"/>
- <c:simple-property name="workmanager" required="false"
type="string" readOnly="false" description="The WorkManager
instance for the BootstrapContext">
- <c:option-source target="resource"
expression="type=Workmanager plugin=&pluginName;"/>
- </c:simple-property>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
readOnly="false" type="long" description="The time"/>
+ <c:simple-property name="unit" required="true"
readOnly="false" type="string" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:property-options>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ </c:template>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Security (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the security subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
+ </resource-configuration>
- <service name="Workmanager (Profile)"
- class="BaseComponent"
+ <service name="Security Domain (Profile)"
discovery="SubsystemDiscovery"
- description="WorkManager for resource adapters."
+ class="BaseComponent"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="workmanager"/>
+ <c:simple-property name="path" readOnly="true"
default="security-domain"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
WorkManager"/>
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan" />
+ </c:property-options>
+ </c:simple-property>
</resource-configuration>
- <service name="Long Running Thread Pool (Profile)"
- class="BaseComponent"
+ <service name="ACL (Profile)"
discovery="SubsystemDiscovery"
- description="Long running thread pool executor with a bounded queue
where threads submitting tasks may block."
+ class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="long-running-threads"/>
+ <c:simple-property name="path" readOnly="true"
default="acl=classic"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
- <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
- <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
- <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
- <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
- </c:map-property>
- <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
- <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
- <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ <c:list-property name="acl-modules" required="false"
description="List of acl modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
</resource-configuration>
</service>
- <service name="Short Running Thread Pool (Profile)"
- class="BaseComponent"
+ <service name="Audit (Profile)"
discovery="SubsystemDiscovery"
- description="Short running thread pool executor with a bounded
queue where threads submitting tasks may block."
+ class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="short-running-threads"/>
+ <c:simple-property name="path" readOnly="true"
default="audit=classic"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
- <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
- <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
- <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
- <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
- </c:map-property>
- <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
- <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
- <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ <c:list-property name="provider-modules"
required="false" description="List of provider modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
</resource-configuration>
</service>
- </service>
- </service>
- <service name="Osgi (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The OSGi subsystem configuration."
- singleton="true">
+ <service name="Authentication (Classic - Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=classic"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="activation" required="false"
type="string" readOnly="false" defaultValue="LAZY"
description="Activation flag for the OSGi subsystem. Possible values: lazy, eager.
The default value is LAZY."/>
- <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The current Start
Level of the OSGi Framework. Changing this value will change the Start Level of the
Framework accordingly."/>
- </resource-configuration>
+ <resource-configuration>
+ <c:list-property name="login-modules" required="false"
description="List of authentication modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true"
+ description="Class name of the module to be instantiated.">
+ <c:property-options>
+ <c:option value="AdvancedADLdap" />
+ <c:option value="AdvancedLdap" />
+ <c:option value="Certificate" />
+ <c:option value="CertificateRoles" />
+ <c:option value="Client" />
+ <c:option value="Database" />
+ <c:option value="DatabaseCertificate" />
+ <c:option value="DatabaseUsers" />
+ <c:option value="Identity" />
+ <c:option value="Kerberos" />
+ <c:option value="Ldap" />
+ <c:option value="LdapExtended" />
+ <c:option value="RoleMapping" />
+ <c:option value="Simple" />
+ <c:option value="SPNEGOUsers" />
+ <c:option value="UserRoles" />
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
- <service name="Capability (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle."
- createDeletePolicy="both">
+ <service name="Authentication (Jaspi - Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="capability"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=jaspi"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The startlevel for
the capability. Can only be specified for OSGi bundles."/>
- </resource-configuration>
- </service>
- </service>
+ <resource-configuration>
+ <c:list-property name="auth-modules" required="true"
description="List of authentication modules to be used." >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ <c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
- <service name="Resource Adapters (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="Configuration of the resource adapters subsystem."
- singleton="true">
+ <service name="Login Module Stack (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="login-module-stack"/>
+ </plugin-configuration>
- <service name="Resource Adapter (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The configuration of a resource adapter."
- createDeletePolicy="both">
+ <resource-configuration>
+ <c:list-property name="login-modules"
required="true" description="List of authentication modules" >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="resource-adapter"/>
- </plugin-configuration>
+ <service name="Authorization (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
- <resource-configuration>
- <c:simple-property name="archive" required="true"
type="string" readOnly="false" description="Specifies the
resource adapter archive"/>
- <c:simple-property name="beanvalidationgroups"
required="false" type="string" readOnly="false"
description="Specifies the bean validation groups that should be used"/>
- <c:simple-property name="bootstrapcontext"
required="false" type="string" readOnly="false"
description="Specifies the unique name of the bootstrap context that should be
used"/>
- <c:simple-property name="transaction-support"
required="true" type="string" readOnly="false"
description="Specifies the transaction support level of the resource
adapter">
- <c:property-options>
- <c:option value="LocalTransaction"/>
- <c:option value="XATransaction"/>
- <c:option value="NoTransaction"/>
- </c:property-options>
- </c:simple-property>
- </resource-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authorization=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="policy-modules"
required="false" description="List of authorization modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the policy module code is
located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
- <service name="Admin Objects (Profile)"
+ <service name="Identity Trust (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="Specifies the administration objects."
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="admin-objects"/>
+ <c:simple-property name="path" readOnly="true"
default="identity-trust=classic"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
- <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
- <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
- <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ <c:list-property name="trust-modules" required="false"
description="List of trust modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
</resource-configuration>
</service>
- <service name="Connection Definitions (Profile)"
+ <service name="JSSE (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="Specifies the connection definitions."
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="connection-definitions"/>
+ <c:simple-property name="path" readOnly="true"
default="jsse"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="allocation-retry:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry" description="The allocation retry element
indicates the number of times that allocating a connection should be tried before throwing
an exception"/>
- <c:simple-property name="allocation-retry-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry Wait Millis" description="The allocation
retry wait millis element specifies the amount of time, in milliseconds, to wait between
retrying to allocate a connection"/>
- <c:simple-property name="background-validation"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to specify that connections
should be validated on a background thread versus being validated prior to use. Changing
this value requires a server restart. The default value is false."/>
- <c:simple-property name="background-validation-millis:expr"
required="false" type="integer" readOnly="false"
displayName="Background Validation Millis" description="The
background-validation-millis element specifies the amount of time, in
milliseconds, that background validation will run. Changing this value requires a server
restart"/>
- <c:simple-property name="blocking-timeout-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Blocking Timeout Wait Millis" description="The
blocking-timeout-millis element specifies the maximum time, in
milliseconds, to block while waiting for a connection before throwing an exception. Note
that this blocks only while waiting for locking a connection, and will never throw an
exception if creating a new connection takes an inordinately long time"/>
- <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
- <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
- <c:simple-property name="flush-strategy"
required="false" type="string" readOnly="true"
- description="Specifies how the pool should be flush
in case of an error." default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
- <c:property-options>
- <c:option value="FailingConnectionOnly"/>
- <c:option value="IdleConnections"/>
- <c:option value="EntirePool"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="idle-timeout-minutes:expr"
required="false" type="long" readOnly="false"
displayName="Idle Timeout Minutes" description="The
idle-timeout-minutes elements specifies the maximum time, in minutes, a
connection may be idle before being closed. The actual maximum time depends also on the
IdleRemover scan time, which is half of the smallest idle-timeout-minutes
value of any pool. Changing this value requires a server restart."/>
- <c:simple-property name="interleaving"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to enable interleaving for XA
connections. The default value is false."/>
- <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
- <c:simple-property name="max-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="20" displayName="Max Pool Size" description="The
max-pool-size element specifies the maximum number of connections for a
pool. No more connections will be created in each sub-pool. The default value is
20."/>
- <c:simple-property name="min-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="0" displayName="Min Pool Size" description="The
min-pool-size element specifies the minimum number of connections for a
pool. The default value is 0."/>
- <c:simple-property name="no-recovery" required="false"
type="boolean" readOnly="false" description="Specifies if the
connection pool should be excluded from recovery"/>
- <c:simple-property name="no-tx-separate-pool"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Oracle does not like XA connections
getting used both inside and outside a JTA transaction. To workaround the problem you can
create separate sub-pools for the different contexts. The default value is
false."/>
- <c:simple-property name="pad-xid" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should the Xid be padded. The default value is false."/>
- <c:simple-property name="pool-prefill"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Should the pool be prefilled. Changing
this value requires a server restart. The default value is false."/>
- <c:simple-property name="pool-use-strict-min"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Specifies if the
min-pool-size should be considered strictly. The default value is
false."/>
- <c:simple-property name="recovery-password"
required="false" type="string" readOnly="false"
description="The password used for recovery"/>
- <c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="false"
description="The fully qualified class name of the recovery plugin
implementation"/>
- <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin">
- <c:simple-property name="recovery-plugin-properties"
required="false" type="string" readOnly="false"
displayName="Recovery Plugin Property"/>
+ <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
+ <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
+ <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
+ <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the KeyManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
keystore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyStore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
+ <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
+ <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
+ <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the TrustManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the TrustManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
truststore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the truststore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
</c:map-property>
- <c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="false"
description="The security domain used for recovery"/>
- <c:simple-property name="recovery-username"
required="false" type="string" readOnly="false"
description="The user name used for recovery"/>
- <c:simple-property name="same-rm-override"
required="false" type="boolean" readOnly="false"
description="The is-same-rm-override element allows one to
unconditionally set whether the javax.transaction.xa.XAResource.isSameRM(XAResource)
returns true or false"/>
- <c:simple-property name="security-application"
required="false" type="boolean" readOnly="false"
description="Indicates that app supplied parameters (such as from getConnection(user,
pw)) are used to distinguish connections in the pool"/>
- <c:simple-property name="security-domain"
required="false" type="string" readOnly="false"
description="Specifies the security domain which defines the
javax.security.auth.Subject that are used to distinguish connections in the
pool"/>
- <c:simple-property name="security-domain-and-application"
required="false" type="string" readOnly="false"
description="Indicates that either app supplied parameters (such as from
getConnection(user, pw)) or Subject (from security domain) are used to distinguish
connections in the pool"/>
- <c:simple-property name="use-ccm" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable the use of a cached connection manager. The default value is
true."/>
- <c:simple-property name="use-fast-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to fail a connection allocation
on the first try if it is invalid (true) or keep trying until the pool is exhausted of all
potential connections (false). The default value is false."/>
- <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
- <c:simple-property name="use-try-lock:expr"
required="false" type="long" readOnly="false"
displayName="Use Try Lock" description="Any configured timeout for internal
locks on the resource adapter objects in seconds"/>
- <c:simple-property name="wrap-xa-resource"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Should the XAResource instances be wrapped
in a org.jboss.tm.XAResourceWrapper instance. The default value is true."/>
- <c:simple-property name="xa-resource-timeout:expr"
required="false" type="integer" readOnly="false"
displayName="XA Resource Timeout" description="The value is passed to
XAResource.setTransactionTimeout(), in seconds. Default is zero"/>
</resource-configuration>
</service>
- </service>
- </service>
-
- <service name="EJB3 (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The configuration of the ejb3 subsystem."
- singleton="true">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=ejb3"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="default-clustered-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
clustered stateful EJBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-entity-bean-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default entity bean instance pool, which will be applicable
to all entity beans, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-entity-bean-optimistic-locking"
required="false" type="boolean" readOnly="false"
description="If set to true entity beans will use optimistic locking by
default"/>
- <c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="false"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
- <c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-singleton-bean-access-timeout:expr"
displayName="Default Singleton Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for singleton beans. The default value is
5000."/>
- <c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
- <c:simple-property name="default-stateful-bean-access-timeout:expr"
displayName="Default Stateful Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for stateful beans. The default value is
5000."/>
- <c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
- </resource-configuration>
-
- <service name="EJB3 Thread Pool (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="thread-pool"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
- <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
- <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
- </c:map-property>
- <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
- <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
- </resource-configuration>
- </service>
-
- <service name="File Passivation Store (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A file system based passivation store."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="file-passivation-store"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="groups-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/groups"/>
- <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
- <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
- <c:simple-property name="relative-to" required="false"
type="string" readOnly="false"
defaultValue="jboss.server.data.dir"/>
- <c:simple-property name="sessions-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/sessions"/>
- <c:simple-property name="subdirectory-count:expr"
displayName="Subdirectory Count" required="false"
type="string" readOnly="false" defaultValue="100"/>
- </resource-configuration>
- </service>
-
- <service name="Strict Max Bean Instance Pool (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A bean instance pool with a strict upper limit"
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="strict-max-bean-instance-pool"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="false" defaultValue="20" description="The maximum
number of bean instances that the pool can hold at a given point in time. The default
value is 20."/>
- <c:simple-property name="timeout:expr"
displayName="Timeout" required="false" type="string"
readOnly="false" defaultValue="5" description="The maximum amount
of time to wait for a bean instance to be available from the pool. The default value is
5."/>
- <c:simple-property name="timeout-unit" required="false"
type="string" readOnly="false" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
- </resource-configuration>
- </service>
-
- <service name="SFSB Cache (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A SFSB cache."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="cache"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:list-property name="aliases" description="The aliases by
which this cache may also be referenced">
- <c:simple-property name="aliases"/>
- </c:list-property>
- <c:simple-property name="passivation-store"
required="false" type="string" readOnly="false"
description="The passivation store used by this cache"/>
- </resource-configuration>
- </service>
-
- <service name="Cluster Passivation Store (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A clustered passivation store."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="cluster-passivation-store"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="bean-cache" required="false"
type="string" readOnly="false" description="The name of the cache
used to store bean instances."/>
- <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
- <c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="false"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
- <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
- <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
- <c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
- </resource-configuration>
- </service>
- <service name="Async Service (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The EJB3 Asynchronous Invocation Service"
- singleton="true">
+ <service name="Mapping (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="service=async"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mapping=classic"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool which handles asynchronous
invocations"/>
- </resource-configuration>
+ <resource-configuration>
+ <c:list-property name="mapping-modules"
required="false" description="List of modules that map principal, role, and
credential information">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of mapping this
module performs. Allowed values are principal, role, attribute or credential.."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
</service>
- <service name="IIOP Service (Profile)"
+ <service name="Vault (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="The IIOP service"
- singleton="true">
+ singleton="true"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="service=iiop"/>
+ <c:simple-property name="path" readOnly="true"
default="vault=classic"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="enable-by-default"
required="false" type="boolean" readOnly="false"
description="If this is true EJB's will be exposed over IIOP by default,
otherwise it needs to be explicitly enabled in the deployment descriptor"/>
- <c:simple-property name="use-qualified-name"
required="false" type="boolean" readOnly="false"
description="If true EJB names will be bound into the naming service with the
application and module name prepended to the name (e.g. myapp/mymodule/MyEjb)"/>
+ <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
</resource-configuration>
</service>
+ </service>
- <service name="Remote Service (Profile)"
+ <service name="Messaging (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The messaging subsystems"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=messaging"/>
+ </plugin-configuration>
+
+ <service name="HornetQ (Profile)"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The EJB3 remote service"
- singleton="true">
+ class="HornetQComponent"
+ description="The HornetQ based messaging subsystem"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="service=remote"/>
+ <c:simple-property name="path" readOnly="true"
default="hornetq-server"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="connector-ref" required="false"
type="string" readOnly="false" description="The name of the
connector on which the EJB3 remoting channel is registered"/>
- <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool that handles remote invocations"/>
+ <c:simple-property name="allow-failback"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether this server will automatically
shutdown if the original live server comes back up. The default value is true."/>
+ <c:simple-property name="async-connection-execution-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether incoming packets on the server
should be handed off to a thread from the thread pool for processing. False if they should
be handled on the remoting thread. The default value is true."/>
+ <c:simple-property name="backup" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether this server is a backup server. The default value is
false."/>
+ <c:simple-property name="cluster-password"
required="false" type="string" readOnly="false"
defaultValue="CHANGE ME!!" description="The password used by cluster
connections to communicate between the clustered nodes. The default value is CHANGE
ME!!."/>
+ <c:simple-property name="cluster-user" required="false"
type="string" readOnly="false"
defaultValue="HORNETQ.CLUSTER.ADMIN.USER" description="The user used by
cluster connections to communicate between the clustered nodes. The default value is
HORNETQ.CLUSTER.ADMIN.USER."/>
+ <c:simple-property name="clustered" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether the server is clustered. The default value is false."/>
+ <c:simple-property name="connection-ttl-override"
required="false" type="long" readOnly="false"
defaultValue="-1" description="If set, this will override how long
(in ms) to keep a connection alive without receiving a ping. The default value is
-1."/>
+ <c:simple-property name="create-bindings-dir"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server should create the
bindings directory on start up. The default value is true."/>
+ <c:simple-property name="create-journal-dir"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server should create the
journal directory on start up. The default value is true."/>
+ <c:simple-property name="failback-delay"
required="false" type="long" readOnly="false"
defaultValue="5000" description="How long to wait before failback occurs on
live server restart. The default value is 5000."/>
+ <c:simple-property name="failover-on-shutdown"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether this backup server (if it is a
backup server) should come live on a normal server shutdown. The default value is
false."/>
+ <c:simple-property name="id-cache-size" required="false"
type="integer" readOnly="false" defaultValue="2000"
description="The size of the cache for pre-creating message IDs. The default
value is 2000."/>
+ <c:simple-property name="jmx-domain" required="false"
type="string" readOnly="false" defaultValue="org.hornetq"
description="The JMX domain used to register internal HornetQ MBeans in the
MBeanServer. The default value is org.hornetq."/>
+ <c:simple-property name="jmx-management-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether HornetQ should expose its
internal management API via JMX. This is not recommended, as accessing these MBeans can
lead to inconsistent configuration. The default value is false."/>
+ <c:simple-property name="journal-buffer-size"
required="false" type="long" readOnly="false"
description="The size of the internal buffer on the journal."/>
+ <c:simple-property name="journal-buffer-timeout"
required="false" type="long" readOnly="false"
description="The timeout (in nanoseconds) used to flush internal buffers on the
journal."/>
+ <c:simple-property name="journal-compact-min-files"
required="false" type="integer" readOnly="false"
defaultValue="10" description="The minimal number of journal data files
before we can start compacting. The default value is 10."/>
+ <c:simple-property name="journal-compact-percentage"
required="false" type="integer" readOnly="false"
defaultValue="30" description="The percentage of live data on which we
consider compacting the journal. The default value is 30."/>
+ <c:simple-property name="journal-file-size"
required="false" type="long" readOnly="false"
defaultValue="10485760" description="The size (in bytes) of each journal
file. The default value is 10485760."/>
+ <c:simple-property name="journal-max-io"
required="false" type="integer" readOnly="false"
description="The maximum number of write requests that can be in the AIO queue at any
one time."/>
+ <c:simple-property name="journal-min-files"
required="false" type="integer" readOnly="false"
defaultValue="2" description="How many journal files to pre-create.
The default value is 2."/>
+ <c:simple-property name="journal-sync-non-transactional"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether to wait for non transaction data
to be synced to the journal before returning a response to the client. The default value
is true."/>
+ <c:simple-property name="journal-sync-transactional"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether to wait for transaction data to be
synchronized to the journal before returning a response to the client. The default value
is true."/>
+ <c:simple-property name="journal-type" required="false"
type="string" readOnly="false" defaultValue="ASYNCIO"
description="The type of journal to use. The default value is ASYNCIO.">
+ <c:property-options>
+ <c:option value="ASYNCIO" name="ASYNCIO"/>
+ <c:option value="NIO" name="NIO"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="live-connector-ref"
required="false" type="string" readOnly="false"
description="The name of the connector used to connect to the live connector. If this
server is not a backup that uses shared nothing HA, it's value is
'undefined'."/>
+ <c:simple-property name="log-journal-write-rate"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to periodically log the
journal's write rate and flush rate. The default value is false."/>
+ <c:simple-property name="management-address"
required="false" type="string" readOnly="false"
defaultValue="jms.queue.hornetq.management" description="Address to send
management messages to. The default value is jms.queue.hornetq.management."/>
+ <c:simple-property name="management-notification-address"
required="false" type="string" readOnly="false"
defaultValue="hornetq.notifications" description="The name of the address
that consumers bind to to receive management notifications. The default value is
hornetq.notifications."/>
+ <c:simple-property name="memory-measure-interval:expr"
displayName="Memory Measure Interval" required="false"
type="string" readOnly="false" defaultValue="-1"
description="Frequency to sample JVM memory in ms (or -1 to disable memory
sampling). The default value is -1."/>
+ <c:simple-property name="memory-warning-threshold:expr"
displayName="Memory Warning Threshold" required="false"
type="string" readOnly="false" defaultValue="25"
description="Percentage of available memory which if exceeded results in a warning
log. The default value is 25."/>
+ <c:simple-property name="message-counter-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether message counters are enabled. The
default value is false."/>
+ <c:simple-property name="message-counter-max-day-history"
required="false" type="integer" readOnly="false"
defaultValue="10" description="How many days to keep message counter
history. The default value is 10."/>
+ <c:simple-property name="message-counter-sample-period"
required="false" type="long" readOnly="false"
defaultValue="10000" description="The sample period (in ms) to use for
message counters. The default value is 10000."/>
+ <c:simple-property name="message-expiry-scan-period"
required="false" type="long" readOnly="false"
defaultValue="30000" description="How often (in ms) to scan for expired
messages. The default value is 30000."/>
+ <c:simple-property name="message-expiry-thread-priority"
required="false" type="integer" readOnly="false"
defaultValue="3" description="The priority of the thread expiring messages.
The default value is 3."/>
+ <c:simple-property name="page-max-concurrent-io"
required="false" type="integer" readOnly="false"
defaultValue="5" description="The maximum number of concurrent reads
allowed on paging. The default value is 5."/>
+ <c:simple-property name="perf-blast-pages"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="TODO. The default value is
-1."/>
+ <c:simple-property name="persist-delivery-count-before-delivery"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether the delivery count is persisted
before delivery. False means that this only happens after a message has been cancelled.
The default value is false."/>
+ <c:simple-property name="persist-id-cache"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether IDs are persisted to the journal.
The default value is true."/>
+ <c:simple-property name="persistence-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server will use the file based
journal for persistence. The default value is true."/>
+ <c:list-property name="remoting-interceptors"
required="false" description="The list of interceptor classes used by this
server." >
+ <c:simple-property name="remoting-interceptors" />
+ </c:list-property>
+ <c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The number of threads that the main scheduled thread pool has. The
default value is 5."/>
+ <c:simple-property name="security-domain"
required="false" type="string" readOnly="false"
defaultValue="other" description="The security domain to use to verify user
and role information. The default value is other."/>
+ <c:simple-property name="security-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether security is enabled. The default
value is true."/>
+ <c:simple-property name="security-invalidation-interval"
required="false" type="long" readOnly="false"
defaultValue="10000" description="How long (in ms) to wait before
invalidating the security cache. The default value is 10000."/>
+ <c:simple-property name="server-dump-interval"
required="false" type="long" readOnly="false"
defaultValue="-1" description="How often to dump basic runtime
information to the server log. A value less than 1 disables this feature. The default
value is -1."/>
+ <c:simple-property name="shared-store" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Whether this server is using a shared store for failover. The default
value is true."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The number of threads that the main thread pool has. -1 means no
limit. The default value is 30."/>
+ <c:simple-property name="transaction-timeout"
required="false" type="long" readOnly="false"
defaultValue="300000" description="How long (in ms) before a transaction
can be removed from the resource manager after create time. The default value is
300000."/>
+ <c:simple-property name="transaction-timeout-scan-period"
required="false" type="long" readOnly="false"
defaultValue="1000" description="How often (in ms) to scan for timeout
transactions. The default value is 1000."/>
+ <c:simple-property name="wild-card-routing-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server supports wild card
routing. The default value is true."/>
</resource-configuration>
- <service name="Channel Creation Options (Profile)"
+ <service name="JMS Queue (Profile)"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The options that will be used during the EJB remote
channel creation"
+ class="JmsComponent"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="channel-creation-options"/>
+ <c:simple-property name="path" readOnly="true"
default="jms-queue"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the
channel creation option">
+ <c:simple-property name="durable" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Whether the queue is durable or not. The default value is
true."/>
+ <c:list-property name="entries" required="true"
description="The jndi names the queue will be bound to." >
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ </c:list-property>
+ <c:simple-property name="selector" required="false"
type="string" readOnly="false" description="The queue
selector."/>
+ </resource-configuration>
+ </service>
+
+ <service name="JMS Topic (Profile)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jms-topic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the queue will be bound to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Connection Factory (Profile)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-factory"/>
+ <c:simple-property name="includeRuntime"
readOnly="true" default="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="connector:collapsed"
required="false" readOnly="false" displayName="Connector"
description="Defines the connector to be used. This is mutually exclusive with
discovery-group-name">
+ <c:simple-property name="name:0" displayName="Name"
description="Connector name. Mutually exclusive with discovery-group-name"
required="false"/>
+ </c:map-property>
+ <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ </c:list-property>
+ <c:simple-property name="auto-group" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether or not message grouping is automatically used. The default value
is false."/>
+ <c:simple-property name="block-on-acknowledge"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to set block on acknowledge. The
default value is false."/>
+ <c:simple-property name="block-on-durable-send"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to set block on durable send. The
default value is true."/>
+ <c:simple-property name="block-on-non-durable-send"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to set block on non durable send.
The default value is false."/>
+ <c:simple-property name="cache-large-message-client"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to cache large messages. The default
value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="false"
defaultValue="30000" description="The call time out. The default value is
30000."/>
+ <c:simple-property name="client-failure-check-period"
required="false" type="integer" readOnly="false"
defaultValue="30000" description="The client failure check period. The
default value is 30000."/>
+ <c:simple-property name="client-id" required="false"
type="string" readOnly="false" description="The client
id."/>
+ <c:simple-property name="compress-large-messages"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether large messages should be
compressed. The default value is false."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The confirmation window size. The
default value is -1."/>
+ <c:simple-property
name="connection-load-balancing-policy-class-name" required="false"
type="string" readOnly="false"
defaultValue="org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy"
description="Name of a class implementing a client-side load balancing policy
that a client can use to load balance sessions across different nodes in a cluster. The
default value is
org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="false"
defaultValue="60000" description="The connection ttl. The default value is
60000."/>
+ <c:simple-property name="consumer-max-rate"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The consumer max rate. The default
value is -1."/>
+ <c:simple-property name="consumer-window-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The consumer window size. The default
value is 1048576."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="false"
description="The discovery group name."/>
+ <c:simple-property name="discovery-initial-wait-timeout"
required="false" type="long" readOnly="false"
description="The discovery initial wait time out."/>
+ <c:simple-property name="dups-ok-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The dups ok batch size. The default
value is 1048576."/>
+ <c:simple-property name="factory-type"
required="false" type="string" readOnly="true"
description="The type of connection factory.">
<c:property-options>
- <c:option value="remoting" name="remoting"/>
- <c:option value="xnio" name="xnio"/>
+ <c:option value="GENERIC" name="GENERIC"/>
+ <c:option value="QUEUE" name="QUEUE"/>
+ <c:option value="TOPIC" name="TOPIC"/>
+ <c:option value="XA_GENERIC"
name="XA_GENERIC"/>
+ <c:option value="XA_QUEUE" name="XA_QUEUE"/>
+ <c:option value="XA_TOPIC" name="XA_TOPIC"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value for the EJB
remote channel creation option"/>
+ <c:simple-property name="failover-on-initial-connection"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to fail over on initial connection.
The default value is false."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="false"
description="True to fail over on server shutdown."/>
+ <c:simple-property name="group-id" required="false"
type="string" readOnly="false" description="The group
id."/>
+ <c:simple-property name="ha" required="true"
type="boolean" readOnly="false" defaultValue="false"
description="Whether the connection factory supports High Availability. The default
value is false."/>
+ <c:simple-property name="initial-message-packet-size"
required="true" type="integer" readOnly="true"
description="The initial size of messages created through this factory."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The max retry interval. The default value
is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The min large message size. The default
value is 102400."/>
+ <c:simple-property name="pre-acknowledge"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to pre-acknowledge. The
default value is false."/>
+ <c:simple-property name="producer-max-rate"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The producer max rate. The default
value is -1."/>
+ <c:simple-property name="producer-window-size"
required="false" type="integer" readOnly="false"
defaultValue="65536" description="The producer window size. The default
value is 65536."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
+ <c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
+ <c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to use global pools. The default
value is true."/>
</resource-configuration>
</service>
- </service>
- <service name="Timer Service (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The EJB timer service"
- singleton="true">
+ <service name="Pooled Connection Factory (Profile)"
+ discovery="SubsystemDiscovery"
+ class="JmsComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="service=timer-service"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="pooled-connection-factory"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The directory to
store persistent timer information in"/>
- <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The relative path
that is used to resolve the timer data store location"/>
- <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool used to run timer service
invocations"/>
- </resource-configuration>
- </service>
- </service>
+ <resource-configuration>
+ <c:map-property name="connector:collapsed"
required="false" readOnly="false" displayName="Connector"
description="Defines the connectors. These are stored in a map by connector name,
with the backup connectors stored as the value, or an undefined value if there is no
backup connector.">
+ <c:simple-property name="name:0" displayName="Name"
description="Connector name." required="false"/>
+ </c:map-property>
+ <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ </c:list-property>
- <service name="Threads (Profile)"
- discovery="SubsystemDiscovery"
- class="ThreadsComponent"
- singleton="true">
+ <c:simple-property name="auto-group" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="The autogroup. The default value is false."/>
+ <c:simple-property name="block-on-acknowledge"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to set block on acknowledge. The
default value is false."/>
+ <c:simple-property name="block-on-durable-send"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to set block on durable send. The
default value is true."/>
+ <c:simple-property name="block-on-non-durable-send"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to set block on non durable send.
The default value is false."/>
+ <c:simple-property name="cache-large-message-client"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to cache large messages. The default
value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="false"
defaultValue="30000" description="The call time out. The default value is
30000."/>
+ <c:simple-property name="client-failure-check-period"
required="false" type="integer" readOnly="false"
defaultValue="30000" description="The client failure check period. The
default value is 30000."/>
+ <c:simple-property name="client-id" required="false"
type="string" readOnly="false" description="The client
id."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The confirmation window size. The
default value is -1."/>
+ <c:simple-property
name="connection-load-balancing-policy-class-name" required="false"
type="string" readOnly="false"
defaultValue="org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy"
description="Name of a class implementing a client-side load balancing policy
that a client can use to load balance sessions across different nodes in a cluster. The
default value is
org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="false"
defaultValue="60000" description="The connection ttl. The default value is
60000."/>
+ <c:simple-property name="consumer-max-rate"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The consumer max rate. The default
value is -1."/>
+ <c:simple-property name="consumer-window-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The consumer window size. The default
value is 1048576."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="false"
description="The discovery group name."/>
+ <c:simple-property name="discovery-initial-wait-timeout"
required="false" type="long" readOnly="false"
description="The discovery initial wait time out."/>
+ <c:simple-property name="dups-ok-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The dups ok batch size. The default
value is 1048576."/>
+ <c:simple-property name="failover-on-initial-connection"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to fail over on initial connection.
The default value is false."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="false"
description="True to fail over on server shutdown."/>
+ <c:simple-property name="group-id" required="false"
type="string" readOnly="false" description="The group
id."/>
+ <c:simple-property name="ha" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether the connection factory supports High Availability. The default
value is false."/>
+ <c:simple-property name="jndi-params" required="false"
type="string" readOnly="false" description="The JNDI params to
use for locating the destination for incoming connections."/>
+ <c:simple-property name="max-pool-size:expr"
displayName="Max Pool Size" required="false" type="string"
readOnly="false" defaultValue="-1" description="The
maximum size for the pool. The default value is -1."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The max retry interval. The default value
is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The min large message size. The default
value is 102400."/>
+ <c:simple-property name="min-pool-size:expr"
displayName="Min Pool Size" required="false" type="string"
readOnly="false" defaultValue="-1" description="The
minimum size for the pool. The default value is -1."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="The default password
to use with this connection factory. This is only needed when pointing the connection
factory to a remote host."/>
+ <c:simple-property name="pre-acknowledge"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to pre-acknowledge. The
default value is false."/>
+ <c:simple-property name="producer-max-rate"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The producer max rate. The default
value is -1."/>
+ <c:simple-property name="producer-window-size"
required="false" type="integer" readOnly="false"
defaultValue="65536" description="The producer window size. The default
value is 65536."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
+ <c:simple-property name="setup-attempts"
required="false" type="integer" readOnly="false"
description="The number of times to set up an MDB endpoint"/>
+ <c:simple-property name="setup-interval"
required="false" type="long" readOnly="false"
description="The interval between attempts at setting up an MDB endpoint."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
+ <c:simple-property name="transaction" required="false"
type="string" readOnly="false" defaultValue="transaction"
description="TODO. The default value is transaction."/>
+ <c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
+ <c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to use global pools. The default
value is true."/>
+ <c:simple-property name="use-jndi" required="false"
type="boolean" readOnly="false" description="Use JNDI to locate
the destination for incoming connections"/>
+ <c:simple-property name="use-local-tx"
required="false" type="boolean" readOnly="false"
description="Use a local transaction for incoming sessions"/>
+ <c:simple-property name="user" required="false"
type="string" readOnly="false" description="The default username
to use with this connection factory. This is only needed when pointing the connection
factory to a remote host."/>
+ </resource-configuration>
+ </service>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
- </plugin-configuration>
+ <service name="Security Setting (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <service name="ThreadFactory (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A thread factory (implementing
java.util.concurrent.ThreadFactory)."
- createDeletePolicy="both">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-setting"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="thread-factory"/>
- </plugin-configuration>
+ <service name="Role (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <resource-configuration>
- <c:simple-property name="group-name" required="false"
type="string" readOnly="false" description="Specifies the name of
a thread group to create for this thread factory."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
created thread factory."/>
- <c:simple-property name="priority:expr" required="false"
type="string" readOnly="false" defaultValue="-1"
displayName="Priority" description="May be used to specify the thread
priority of created threads. The default value is -1."/>
- <c:simple-property name="thread-name-pattern"
required="false" type="string" readOnly="false"
description="The template used to create names for threads. The following patterns
may be used:
- %% - emit a percent sign
- %t - emit the per-factory thread sequence number
- %g - emit the global thread sequence number
- %f - emit the factory sequence number
- %i - emit the thread ID."/>
- </resource-configuration>
- </service>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="role"/>
+ </plugin-configuration>
- <service name="ThreadPool (Profile)"
- discovery="SubsystemDiscovery"
- class="ThreadPoolComponent"
- description="A thread pool executor"
- createDeletePolicy="both">
+ <resource-configuration>
+ <c:simple-property name="consume" required="true"
type="boolean" readOnly="false" defaultValue="false"
description="his permission allows the user to consume a message from a queue bound
to matching addresses. The default value is false."/>
+ <c:simple-property name="create-durable-queue"
required="true" type="boolean" readOnly="false"
defaultValue="false" description="This permission allows the user to create
a durable queue. The default value is false."/>
+ <c:simple-property name="create-non-durable-queue"
required="true" type="boolean" readOnly="false"
defaultValue="false" description="This permission allows the user to create
a temporary queue. The default value is false."/>
+ <c:simple-property name="delete-durable-queue"
required="true" type="boolean" readOnly="false"
defaultValue="false" description="This permission allows the user to delete
a durable queue. The default value is false."/>
+ <c:simple-property name="delete-non-durable-queue"
required="true" type="boolean" readOnly="false"
defaultValue="false" description="This permission allows the user to delete
a temporary queue. The default value is false."/>
+ <c:simple-property name="manage" required="true"
type="boolean" readOnly="false" defaultValue="false"
description="This permission allows the user to invoke management operations by
sending management messages to the management address. The default value is
false."/>
+ <c:simple-property name="send" required="true"
type="boolean" readOnly="false" defaultValue="false"
description="This permission allows the user to send a message to matching addresses.
The default value is false."/>
+ </resource-configuration>
+ </service>
+ </service>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
- </plugin-configuration>
+ <service name="Address Setting (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <resource-configuration>
- <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
- <c:simple-property name="time" required="true"
readOnly="false" type="long" description="The time"/>
- <c:simple-property name="unit" required="true"
readOnly="false" type="string" description="The time
unit"/>
- </c:map-property>
- <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
- <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
- <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="address-setting"/>
+ </plugin-configuration>
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
- <c:property-options>
- <c:option value="bounded-queue-thread-pool"/>
- <c:option value="queueless-thread-pool"/>
- <c:option value="unbounded-queue-thread-pool"/>
- <c:option value="scheduled-thread-pool"/>
- </c:property-options>
- </c:simple-property>
- <c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
- </c:template>
- <c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
- </c:template>
- <c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
- </c:template>
- <c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
- <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
- </c:template>
- </resource-configuration>
- </service>
- </service>
+ <resource-configuration>
+ <c:simple-property name="address-full-policy"
required="false" type="string" readOnly="false"
defaultValue="PAGE" description="Determines what happens when an address
where max-size-bytes is specified becomes full. (PAGE, DROP or BLOCK). The
default value is PAGE."/>
+ <c:simple-property name="dead-letter-address"
required="false" type="string" readOnly="false"
description="The dead letter address"/>
+ <c:simple-property name="expiry-address"
required="false" type="string" readOnly="false"
description="Defines where to send a message that has expired."/>
+ <c:simple-property name="last-value-queue"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Defines whether a queue only uses last
values or not. The default value is false."/>
+ <c:simple-property name="max-delivery-attempts"
required="false" type="integer" readOnly="false"
defaultValue="10" description="Defines how many time a cancelled message
can be redelivered before sending to the dead-letter-address. The default
value is 10."/>
+ <c:simple-property name="max-size-bytes"
required="false" type="long" readOnly="false"
defaultValue="-1" description="The max bytes size. The default
value is -1."/>
+ <c:simple-property name="message-counter-history-day-limit"
required="false" type="integer" readOnly="false"
defaultValue="0" description="Day limit for the message counter history.
The default value is 0."/>
+ <c:simple-property name="page-max-cache-size"
required="false" type="integer" readOnly="false"
defaultValue="5" description="The number of page files to keep in memory to
optimize IO during paging navigation. The default value is 5."/>
+ <c:simple-property name="page-size-bytes"
required="false" type="long" readOnly="false"
defaultValue="10485760" description="The paging size. The default value is
10485760."/>
+ <c:simple-property name="redelivery-delay"
required="false" type="long" readOnly="false"
defaultValue="0" description="Defines how long to wait before attempting
redelivery of a cancelled message. The default value is 0."/>
+ <c:simple-property name="redistribution-delay"
required="false" type="long" readOnly="false"
defaultValue="-1" description="Defines how long to wait when the
last consumer is closed on a queue before redistributing any messages. The default value
is -1."/>
+ <c:simple-property name="send-to-dla-on-no-route"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="If this parameter is set to true for that
address, if the message is not routed to any queues it will instead be sent to the dead
letter address (DLA) for that address, if it exists. The default value is
false."/>
+ </resource-configuration>
+ </service>
- <service name="Security (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The configuration of the security subsystem."
- singleton="true">
+ <service name="Grouping Handler (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="grouping-handler"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="grouping-handler-address"
required="true" type="string" readOnly="false"
description="A reference to a cluster connection and the address it uses."/>
+ <c:simple-property name="timeout" required="false"
type="integer" readOnly="false" defaultValue="5000"
description="How long to wait for a handling decision to be made; an exception will
be thrown during the send if this timeout is reached, ensuring that strict ordering is
kept. The default value is 5000."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Whether the handler
is the single 'Local' handler for the cluster, which makes handling
decisions, or a 'Remote' handler which converses with the local
handler."/>
+ </resource-configuration>
+ </service>
- <service name="Security Domain (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both">
+ <service name="Acceptor (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="security-domain"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="acceptor"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="false"
description="The factory class."/>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="false"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Connector (HornetQ - Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="false"
description="The factory class."/>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="false"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="In VM Acceptor (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="in-vm-acceptor"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="server-id" required="true"
type="integer" readOnly="false" description="The server
id."/>
+ </resource-configuration>
+ </service>
+
+ <service name="In VM Connector (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="in-vm-connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="server-id" required="true"
type="integer" readOnly="false" description="The server
id."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Remote Acceptor (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="remote-acceptor"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
- <c:property-options>
- <c:option value="default"/>
- <c:option value="infinispan" />
- </c:property-options>
- </c:simple-property>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="false"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
- <service name="ACL (Profile)"
+ <service name="Remote Connector (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="acl=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="remote-connector"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="acl-modules" required="false"
description="List of acl modules">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
+ <c:simple-property name="socket-binding"
required="false" type="string" readOnly="false"
description="The socket binding reference.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
</resource-configuration>
</service>
- <service name="Audit (Profile)"
+ <service name="Divert (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="audit=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="divert"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="provider-modules"
required="false" description="List of provider modules">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
+ <c:simple-property name="divert-address"
required="true" type="string" readOnly="false"
description="Address to divert from"/>
+ <c:simple-property name="exclusive" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether the divert is exclusive, meaning that the message is diverted to
the new address, and does not go to the old address at all. The default value is
false."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="An optional filter
string. If specified then only messages which match the filter expression specified will
be diverted. The filter string follows the HornetQ filter expression syntax described in
the HornetQ documentation."/>
+ <c:simple-property name="forwarding-address"
required="true" type="string" readOnly="false"
description="Address to divert to"/>
+ <c:simple-property name="routing-name"
required="false" type="string" readOnly="false"
description="Routing name of the divert"/>
+ <c:simple-property name="transformer-class-name"
required="false" type="string" readOnly="false"
description="The name of a class used to transform the message's body or
properties before it is diverted."/>
</resource-configuration>
</service>
- <service name="Authentication (Classic - Profile)"
+ <service name="Queue (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authentication=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="queue"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="login-modules" required="false"
description="List of authentication modules">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="true"
- description="Class name of the module to be instantiated.">
- <c:property-options>
- <c:option value="AdvancedADLdap" />
- <c:option value="AdvancedLdap" />
- <c:option value="Certificate" />
- <c:option value="CertificateRoles" />
- <c:option value="Client" />
- <c:option value="Database" />
- <c:option value="DatabaseCertificate" />
- <c:option value="DatabaseUsers" />
- <c:option value="Identity" />
- <c:option value="Kerberos" />
- <c:option value="Ldap" />
- <c:option value="LdapExtended" />
- <c:option value="RoleMapping" />
- <c:option value="Simple" />
- <c:option value="SPNEGOUsers" />
- <c:option value="UserRoles" />
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
+ <c:simple-property name="durable" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Defines whether the queue is durable. The default value is
true."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
+ <c:simple-property name="queue-address"
required="true" type="string" readOnly="false"
description="The queue address defines what address is used for routing
messages."/>
</resource-configuration>
</service>
- <service name="Authentication (Jaspi - Profile)"
+ <service name="Core Address (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
+ description="A runtime-only resource representing a HornetQ
address. Zero or more queues can be bound to a single address. When a message is routed,
it is routed to the set of queues bound to the message's address."
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authentication=jaspi"/>
+ <c:simple-property name="path" readOnly="true"
default="core-address"/>
+ <c:simple-property name="includeRuntime"
readOnly="true" default="true"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="auth-modules" required="true"
description="List of authentication modules to be used." >
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- <c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
+ <c:list-property name="binding-names" required="true"
readOnly="true" description="The names of all bindings (both queues and
diverts) bound to this address." >
+ <c:simple-property name="binding-names" />
+ </c:list-property>
+ <c:simple-property name="number-of-bytes-per-page"
required="true" type="long" readOnly="true"
description="The number of bytes used by each page for this address."/>
+ <c:simple-property name="number-of-pages"
required="true" type="integer" readOnly="true"
description="The number of pages used by this address."/>
+ <c:list-property name="queue-names" required="true"
readOnly="true" description="The names of the queues associated with the
address." >
+ <c:simple-property name="queue-names" />
+ </c:list-property>
+ <c:list-property name="roles" required="true"
readOnly="true" description="A list of the security roles (name and
permissions) associated with the address." >
+ <c:map-property name="role">
+ <c:simple-property name="name" type="string"
readOnly="true" description="The name of a security role."/>
+ <c:simple-property name="send" type="boolean"
readOnly="true" description="This permission allows the user to send a
message to matching addresses."/>
+ <c:simple-property name="consume" type="boolean"
readOnly="true" description="This permission allows the user to consume a
message from a queue bound to matching addresses."/>
+ <c:simple-property name="create-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to create a durable queue."/>
+ <c:simple-property name="delete-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to delete a durable queue."/>
+ <c:simple-property name="create-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to create a temporary queue."/>
+ <c:simple-property name="delete-durable-queue"
type="boolean" readOnly="true" description="This permission
allows the user to delete a temporary queue."/>
+ <c:simple-property name="manage" type="boolean"
readOnly="true" description="This permission allows the user to invoke
management operations by sending management messages to the management
address."/>
</c:map-property>
</c:list-property>
</resource-configuration>
+ </service>
- <service name="Login Module Stack (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both">
+ <service name="Cluster Connection (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="login-module-stack"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cluster-connection"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:list-property name="login-modules"
required="true" description="List of authentication modules" >
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the login module code is located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:simple-property name="allow-direct-connections-only"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether, if a node learns of the
existence of a node that is more than 1 hop away, we do not create a bridge for direct
cluster connection. Only relevant if 'static-connectors' is
defined. The default value is false."/>
+ <c:simple-property name="call-timeout"
required="false" type="long" readOnly="false"
defaultValue="30000" description="The timeout (in ms) for remote calls made
by the cluster connection. The default value is 30000."/>
+ <c:simple-property name="check-period"
required="false" type="long" readOnly="false"
defaultValue="30000" description="The period (in milliseconds) between
client failure check. The default value is 30000."/>
+ <c:simple-property name="cluster-connection-address"
required="true" type="string" readOnly="false"
description="Each cluster connection only applies to messages sent to an address that
starts with this value."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The
confirmation-window-size to use for the connection used to forward
messages to a target node. The default value is 1048576."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="false"
defaultValue="60000" description="The maximum time (in milliseconds) for
which the connections used by the cluster connections are considered alive (in the absence
of heartbeat). The default value is 60000."/>
+ <c:simple-property name="connector-ref"
required="true" type="string" readOnly="false"
description="The confirmation-window-size to use for the connection
used to forward messages to a target node."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="false"
description="The discovery group used to obtain the list of other servers in the
cluster to which this cluster connection will make connections. Must be undefined (null)
if 'static-connectors' is defined."/>
+ <c:simple-property name="forward-when-no-consumers"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether messages will be distributed
round robin between other nodes of the cluster irrespective of whether there are matching
or indeed any consumers on other nodes. If this is set to false (the default) then HornetQ
will only forward messages to other nodes of the cluster if the address to which they are
being forwarded has queues which have consumers, and if those consumers have message
filters (selectors) at least one of those selectors must match the message. The default
value is false."/>
+ <c:simple-property name="max-hops" required="false"
type="integer" readOnly="false" defaultValue="1"
description="The maximum number of times a message can be forwarded. HornetQ can be
configured to also load balance messages to nodes which might be connected to it only
indirectly with other HornetQ servers as intermediates in a chain. The default value is
1."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The maximum interval of time used to retry
connections. The default value is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:list-property name="static-connectors"
required="false" description="The statically defined list of connectors to
which this cluster connection will make connections. Must be undefined (null) if
'discovery-group-name' is defined." >
+ <c:simple-property name="static-connectors" />
+ </c:list-property>
+ <c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
+ </resource-configuration>
</service>
- <service name="Authorization (Profile)"
+ <service name="Broadcast Group (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
+ description=""
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authorization=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="broadcast-group"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="policy-modules"
required="false" description="List of authorization modules">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the policy module code is
located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
+ <c:simple-property name="broadcast-period"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The period in milliseconds between
consecutive broadcasts. The default value is 2000."/>
+ <c:list-property name="connectors" required="false"
description="Specifies the names of connectors that will be broadcast." >
+ <c:simple-property name="connectors" />
</c:list-property>
+ <c:simple-property name="socket-binding"
required="true" type="string" readOnly="false"
description="The broadcast group socket binding.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
</resource-configuration>
</service>
- <service name="Identity Trust (Profile)"
+ <service name="Path (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
- createDeletePolicy="both">
+ createDeletePolicy="both"
+ singleton="true">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="identity-trust=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="path=journal-directory"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="trust-modules" required="false"
description="List of trust modules">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
- <c:property-options>
- <c:option value="sufficient"/>
- <c:option value="requisite"/>
- <c:option value="optional"/>
- <c:option value="required"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
+ <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The actual filesystem
path. Treated as an absolute path, unless the 'relative-to'
attribute is specified, in which case the value is treated as relative to that path.
<p>If treated as an absolute path, the actual runtime pathname specified by
the value of this attribute will be determined as follows: </p>If
this value is already absolute, then the value is directly used. Otherwise the runtime
pathname is resolved in a system-dependent way. On UNIX systems, a relative
pathname is made absolute by resolving it against the current user directory. On Microsoft
Windows systems, a relative pathname is made absolute by resolving it against the current
directory of the drive named by the pathname, if any; if not, it is resolved against the
current user directory."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The name of another
previously named path, or of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>"/>
</resource-configuration>
</service>
- <service name="JSSE (Profile)"
+ <service name="Bridge (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="jsse"/>
+ <c:simple-property name="path" readOnly="true"
default="bridge"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
- <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
- <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
- <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
- <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the KeyManagerFactory."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyManagerFactory."/>
- </c:map-property>
- <c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
keystore."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyStore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
- </c:map-property>
- <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
- <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
- <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
- <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
- <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the TrustManagerFactory."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the TrustManagerFactory."/>
- </c:map-property>
- <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
truststore."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the truststore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
- </c:map-property>
+ <c:simple-property name="check-period"
required="false" type="long" readOnly="false"
defaultValue="30000" description="The period (in milliseconds) between
client failure check. The default value is 30000."/>
+ <c:simple-property name="confirmation-window-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The
confirmation-window-size to use for the connection used to forward
messages to the target node. The default value is 1048576."/>
+ <c:simple-property name="connection-ttl"
required="false" type="long" readOnly="false"
defaultValue="60000" description="The maximum time (in milliseconds) for
which the connections used by the bridges are considered alive (in the absence of
heartbeat). The default value is 60000."/>
+ <c:simple-property name="discovery-group-name"
required="false" type="string" readOnly="false"
description="The name of the discovery group used by this bridge. Must be undefined
(null) if 'static-connectors' is defined."/>
+ <c:simple-property name="failover-on-server-shutdown"
required="false" type="boolean" readOnly="false"
description="Whether the bridge will attempt to failover onto a backup server (if
specified) when the target server is cleanly shutdown rather than crashed."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="false" description="An optional filter
string. If specified then only messages which match the filter expression specified will
be forwarded. The filter string follows the HornetQ filter expression syntax described in
the HornetQ documentation."/>
+ <c:simple-property name="forwarding-address"
required="false" type="string" readOnly="false"
description="The address on the target server that the message will be forwarded to.
If a forwarding address is not specified then the original destination of the message will
be retained."/>
+ <c:simple-property name="ha" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether or not this bridge should support high availability. True means
it will connect to any available server in a cluster and support failover. The default
value is false."/>
+ <c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The maximum interval of time used to retry
connections. The default value is 2000."/>
+ <c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The minimum size (in bytes) for a
message before it is considered as a large message. The default value is
102400."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="CHANGE ME!!"
description="The password to use when creating the bridge connection to the remote
server. If it is not specified the default cluster password specified by the
cluster-password attribute in the root messaging subsystem resource will be used.
The default value is CHANGE ME!!."/>
+ <c:simple-property name="queue-name" required="true"
type="string" readOnly="false" description="The unique name of
the local queue that the bridge consumes from."/>
+ <c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
+ <c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 2000."/>
+ <c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
+ <c:list-property name="static-connectors"
required="false" description="A list of names of statically defined
connectors used by this bridge. Must be undefined (null) if
'discovery-group-name' is defined." >
+ <c:simple-property name="static-connectors" />
+ </c:list-property>
+ <c:simple-property name="transformer-class-name"
required="false" type="string" readOnly="false"
description="The name of a user-defined class which implements the
org.hornetq.core.server.cluster.Transformer interface."/>
+ <c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
+ <c:simple-property name="user" required="false"
type="string" readOnly="false"
defaultValue="HORNETQ.CLUSTER.ADMIN.USER" description="The user name to use
when creating the bridge connection to the remote server. If it is not specified the
default cluster user specified by the cluster-user attribute in the root messaging
subsystem resource will be used. The default value is
HORNETQ.CLUSTER.ADMIN.USER."/>
</resource-configuration>
</service>
- <service name="Mapping (Profile)"
+ <service name="Discovery Group (Profile)"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mapping=classic"/>
+ <c:simple-property name="path" readOnly="true"
default="discovery-group"/>
</plugin-configuration>
<resource-configuration>
- <c:list-property name="mapping-modules"
required="false" description="List of modules that map principal, role, and
credential information">
- <c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
- <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of mapping this
module performs. Allowed values are principal, role, attribute or credential.."/>
- <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
- </c:map-property>
- </c:list-property>
+ <c:simple-property name="initial-wait-timeout"
required="false" type="long" readOnly="false"
defaultValue="10000" description="Period, in ms, to wait for an initial
broadcast to give us at least one node in the cluster. The default value is
10000."/>
+ <c:simple-property name="refresh-timeout"
required="false" type="long" readOnly="false"
defaultValue="10000" description="Period the discovery group waits after
receiving the last broadcast from a particular server before removing that
server's connector pair entry from its list. The default value is
10000."/>
+ <c:simple-property name="socket-binding"
required="true" type="string" readOnly="false"
description="The discovery group socket binding.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
</resource-configuration>
</service>
- </service>
- <service name="Vault (Profile)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- createDeletePolicy="both">
+ <service name="Connector Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="vault=classic"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector-service"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="factory-class"
required="true" type="string" readOnly="false"
description="Class name of the factory class that can instantiate the connector
service."/>
+ </resource-configuration>
+ </service>
</service>
</service>
@@ -8133,7 +10119,7 @@
</operation>
<resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
<c:property-options>
<c:option value="default"/>
<c:option value="infinispan" />
@@ -9263,21 +11249,18 @@
</service>
- <service name="Messaging-Provider"
+ <service name="Messaging"
discovery="SubsystemDiscovery"
class="BaseComponent"
description="The messaging subsystems"
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=messaging"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="HornetQ"
@@ -10657,6 +12640,14 @@
<parent-resource-type name="Remote Acceptor"
plugin="&pluginName;"/>
<parent-resource-type name="Remote Connector"
plugin="&pluginName;"/>
<parent-resource-type name="Connector Service"
plugin="&pluginName;"/>
+
+ <parent-resource-type name="Acceptor (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Connector (HornetQ - Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="In VM Acceptor (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="In VM Connector (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Remote Acceptor (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Remote Connector (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Connector Service (Profile)"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
@@ -10668,6 +12659,31 @@
</resource-configuration>
</service>
+ <service name="Param (Read Only)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="neither">
+
+ <runs-inside>
+ <parent-resource-type name="Acceptor (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Connector (HornetQ - Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="In VM Acceptor (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="In VM Connector (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Remote Acceptor (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Remote Connector (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Connector Service (Managed Server)"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="param"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="true"
type="string" readOnly="true" description="The parameter
value"/>
+ </resource-configuration>
+ </service>
+
+
<service name="Property"
discovery="SubsystemDiscovery"
commit 51de5682bac6dcd7cc0b83a806cc1bc01e3cb2bf
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 22:43:28 2012 -0400
minor: fix typo in comment
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
index 4233202..88dd865 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
@@ -255,7 +255,7 @@ public class PluginMetadataParser {
parseServerDescriptor(childServerDescriptor, serverResourceType);
}
- // Look for child server types
+ // Look for child service types
for (ServiceDescriptor childServiceDescriptor :
serverDescriptor.getServices()) {
parseServiceDescriptor(childServiceDescriptor, serverResourceType,
null);
}
commit b1d14a0faab37b7469c121240bf7bd6b5235923a
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 22:43:02 2012 -0400
various fixes and improvements to generation of DocBook plugin docs
diff --git
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
index 1b5a40c..d5ef123 100644
---
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
+++
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDescriptorProcessor.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -18,6 +18,8 @@
*/
package org.rhq.core.tool.plugindoc;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -54,6 +56,7 @@ import org.rhq.core.domain.resource.CreateDeletePolicy;
import org.rhq.core.domain.resource.ProcessScan;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceCreationDataType;
+import org.rhq.core.domain.resource.ResourceSubCategory;
import org.rhq.core.domain.resource.ResourceType;
/**
@@ -86,7 +89,7 @@ public class PluginDescriptorProcessor {
}
for (ServiceDescriptor serviceDescriptor : pluginDescriptor.getServices()) {
- ResourceType serviceType = parseServiceDescriptor(serviceDescriptor, null);
+ ResourceType serviceType = parseServiceDescriptor(serviceDescriptor, null,
null);
if (isRootType(serviceType)) {
resourceTypes.add(serviceType);
}
@@ -97,8 +100,8 @@ public class PluginDescriptorProcessor {
private static boolean isRootType(ResourceType type) {
boolean result;
- if ((type.getParentResourceTypes() == null) ||
(type.getParentResourceTypes().size() <= 1)) {
- result = true;
+ if ((type.getParentResourceTypes() == null) ||
(type.getParentResourceTypes().isEmpty())) {
+ result = (type.getCategory() != ResourceCategory.SERVICE);
} else {
result = false;
for (ResourceType parentType : type.getParentResourceTypes()) {
@@ -159,7 +162,7 @@ public class PluginDescriptorProcessor {
sourcePlugin = (sourcePlugin == null) ? "" : sourcePlugin.trim();
sourceServer = (sourceServer == null) ? "" : sourceServer.trim();
- if ((sourcePlugin.length() == 0) && (sourceServer.length() == 0)) {
+ if (sourcePlugin.isEmpty() && sourceServer.isEmpty()) {
// not using Embedded extension model
serverResourceType = new ResourceType(serverDescriptor.getName(),
pluginDescriptor.getName(),
ResourceCategory.SERVER, parentType);
@@ -175,24 +178,45 @@ public class PluginDescriptorProcessor {
parseResourceDescriptor(serverDescriptor, serverResourceType, null, null,
null);
} else if ((sourcePlugin.length() > 0) && (sourceServer.length() >
0)) {
// using Embedded extension model - the defined type is actually a copy of
another plugin's server type
- // TODO
+ log.debug("Parsing embedded server type {" +
pluginDescriptor.getName() + "}"
+ + serverDescriptor.getName() + ", which extends server type
{" + sourcePlugin + "}" + sourceServer + "...");
+
+ Map<String, ServerDescriptor> pluginServerDescriptors =
getPluginServerDescriptors(sourcePlugin);
+ ServerDescriptor sourceServerDescriptor =
pluginServerDescriptors.get(sourceServer);
+
+ if (sourceServerDescriptor == null) {
+ log.warn("There is no server type named [" + sourceServer +
"] from a plugin named [" + sourcePlugin
+ + "]. This is probably because that plugin is missing.
Resource Type [{"
+ + pluginDescriptor.getName() + "}" +
serverDescriptor.getName() + "] will be ignored.");
+ return null;
+ }
serverResourceType = new ResourceType(serverDescriptor.getName(),
pluginDescriptor.getName(),
ResourceCategory.SERVER, parentType);
- // let the plugin writer override these, if not, pick up the source
type's values
+ // Let the plugin writer override these, or if not, parseResourceDescriptor()
will pick up the source type's
+ // values.
serverResourceType.setDescription(serverDescriptor.getDescription());
-
serverResourceType.setSubCategory(SubCategoriesMetadataParser.findSubCategoryOnResourceTypeAncestor(
- serverResourceType, serverDescriptor.getSubCategory()));
+ setSubCategory(serverDescriptor, serverResourceType);
+
serverResourceType.setCreationDataType(convertCreationDataType(serverDescriptor.getCreationDataType()));
serverResourceType
.setCreateDeletePolicy(convertCreateDeletePolicy(serverDescriptor.getCreateDeletePolicy()));
serverResourceType.setSingleton(serverDescriptor.isSingleton());
- String discoveryClass =
getFullyQualifiedComponentClassName(pluginDescriptor.getPackage(), serverDescriptor
- .getDiscovery());
- String componentClass =
getFullyQualifiedComponentClassName(pluginDescriptor.getPackage(), serverDescriptor
- .getClazz());
+ parseResourceDescriptor(sourceServerDescriptor, serverResourceType, null,
null, sourcePlugin);
+ // The above incorporates children from the source descriptor. The following
incorporates
+ // children from this descriptor
+
+ // Look for child server types
+ for (ServerDescriptor childServerDescriptor : serverDescriptor.getServers())
{
+ parseServerDescriptor(childServerDescriptor, serverResourceType);
+ }
+
+ // Look for child service types
+ for (ServiceDescriptor childServiceDescriptor :
serverDescriptor.getServices()) {
+ parseServiceDescriptor(childServiceDescriptor, serverResourceType,
null);
+ }
} else {
// this should never happen - the XML parser should have failed to even get
this far
throw new InvalidPluginDescriptorException("Both sourcePlugin and
sourceType must be defined: "
@@ -213,16 +237,21 @@ public class PluginDescriptorProcessor {
return serverResourceType;
}
- private ResourceType parseServiceDescriptor(ServiceDescriptor serviceDescriptor,
ResourceType parentType)
+ private ResourceType parseServiceDescriptor(ServiceDescriptor serviceDescriptor,
ResourceType parentType,
+ String parentSourcePlugin)
throws InvalidPluginDescriptorException {
ResourceType serviceResourceType;
String sourcePlugin = serviceDescriptor.getSourcePlugin();
- String sourceService = serviceDescriptor.getSourceType();
+ // Fallback to using the source plugin of your parent if you don't override.
+ if (sourcePlugin == null) {
+ sourcePlugin = parentSourcePlugin;
+ }
+ String sourceType = serviceDescriptor.getSourceType();
sourcePlugin = (sourcePlugin == null) ? "" : sourcePlugin.trim();
- sourceService = (sourceService == null) ? "" : sourceService.trim();
+ sourceType = (sourceType == null) ? "" : sourceType.trim();
- if ((sourcePlugin.length() == 0) && (sourceService.length() == 0)) {
+ if (sourcePlugin.isEmpty() && sourceType.isEmpty()) {
// not using Embedded extension model
serviceResourceType = new ResourceType(serviceDescriptor.getName(),
pluginDescriptor.getName(),
ResourceCategory.SERVICE, parentType);
@@ -242,29 +271,43 @@ public class PluginDescriptorProcessor {
+ "The <process-scan> elements will be ignored in resource
type: " + serviceResourceType);
}
} else if (sourcePlugin.length() > 0) {
- // using Embedded extension model - the defined type is actually a copy of
another plugin's service type
- // TODO
+ // Using Embedded extension model - the defined type is actually a copy of
another plugin's service or server type.
+ log.debug("Parsing embedded service type {" +
pluginDescriptor.getName() + "}"
+ + serviceDescriptor.getName() + ", which extends type {" +
sourcePlugin + "}" + sourceType + "...");
+
+ ResourceDescriptor sourceTypeDescriptor;
+ if (sourceType.isEmpty()) {
+ sourceTypeDescriptor = serviceDescriptor;
+ } else {
+ Map<String, ServiceDescriptor> pluginServiceDescriptors =
getPluginServiceDescriptors(sourcePlugin);
+ sourceTypeDescriptor = pluginServiceDescriptors.get(sourceType);
+ if (sourceTypeDescriptor == null) {
+ Map<String, ServerDescriptor> pluginServerDescriptors =
getPluginServerDescriptors(sourcePlugin);
+ sourceTypeDescriptor = pluginServerDescriptors.get(sourceType);
+ }
+ }
- ServiceDescriptor sourceServiceDescriptor;
- if (sourceService.length() == 0) {
- sourceServiceDescriptor = serviceDescriptor;
+ if (sourceTypeDescriptor == null) {
+ log.warn("There is no service or server type named [" +
sourceType + "] from a plugin named ["
+ + sourcePlugin + "]. This is probably because that plugin is
missing. Resource Type [{"
+ + pluginDescriptor.getName() + "}" +
serviceDescriptor.getName() + "] will be ignored.");
+ return null;
}
serviceResourceType = new ResourceType(serviceDescriptor.getName(),
pluginDescriptor.getName(),
ResourceCategory.SERVICE, parentType);
- // let the plugin writer override these, if not, pick up the source
type's values
+ // Let the plugin writer override these, or if not, parseResourceDescriptor()
will pick up the source type's
+ // values.
serviceResourceType.setDescription(serviceDescriptor.getDescription());
-
serviceResourceType.setSubCategory(SubCategoriesMetadataParser.findSubCategoryOnResourceTypeAncestor(
- serviceResourceType, serviceDescriptor.getSubCategory()));
+ setSubCategory(serviceDescriptor, serviceResourceType);
+
serviceResourceType.setCreationDataType(convertCreationDataType(serviceDescriptor.getCreationDataType()));
serviceResourceType.setCreateDeletePolicy(convertCreateDeletePolicy(serviceDescriptor
.getCreateDeletePolicy()));
serviceResourceType.setSingleton(serviceDescriptor.isSingleton());
- String pluginPackage = ""; // TODO
- String discoveryClass = getFullyQualifiedComponentClassName(pluginPackage,
serviceDescriptor.getDiscovery());
- String componentClass = getFullyQualifiedComponentClassName(pluginPackage,
serviceDescriptor.getClazz());
+ parseResourceDescriptor(sourceTypeDescriptor, serviceResourceType, null,
null, sourcePlugin);
} else {
// this should never happen - the XML parser should have failed to even get
this far
throw new InvalidPluginDescriptorException("Both sourcePlugin and
sourceType must be defined: "
@@ -281,6 +324,20 @@ public class PluginDescriptorProcessor {
return serviceResourceType;
}
+ private static void setSubCategory(ResourceDescriptor resourceDescriptor,
ResourceType resourceType)
+ throws InvalidPluginDescriptorException {
+ String subCatName = resourceDescriptor.getSubCategory();
+ if (subCatName != null) {
+ ResourceSubCategory subCat =
SubCategoriesMetadataParser.findSubCategoryOnResourceTypeAncestor(
+ resourceType, subCatName);
+ if (subCat == null)
+ throw new InvalidPluginDescriptorException("Resource type [" +
resourceType.getName()
+ + "] specified a subcategory (" + subCatName
+ + ") that is not defined as a child subcategory of one of its
ancestor resource types.");
+ resourceType.setSubCategory(subCat);
+ }
+ }
+
private void addRunsInsideParentTypes(ResourceDescriptor resourceDescriptor,
ResourceType resourceType) {
RunsInsideType runsInside = resourceDescriptor.getRunsInside();
if (runsInside != null) {
@@ -401,7 +458,7 @@ public class PluginDescriptorProcessor {
}
for (ServiceDescriptor serviceDescriptor : ((PlatformDescriptor)
resourceDescriptor).getServices()) {
- parseServiceDescriptor(serviceDescriptor, resourceType);
+ parseServiceDescriptor(serviceDescriptor, resourceType, sourcePlugin);
}
}
@@ -411,13 +468,13 @@ public class PluginDescriptorProcessor {
}
for (ServiceDescriptor serviceDescriptor : ((ServerDescriptor)
resourceDescriptor).getServices()) {
- parseServiceDescriptor(serviceDescriptor, resourceType);
+ parseServiceDescriptor(serviceDescriptor, resourceType, sourcePlugin);
}
}
if (resourceDescriptor instanceof ServiceDescriptor) {
for (ServiceDescriptor serviceDescriptor : ((ServiceDescriptor)
resourceDescriptor).getServices()) {
- parseServiceDescriptor(serviceDescriptor, resourceType);
+ parseServiceDescriptor(serviceDescriptor, resourceType, sourcePlugin);
}
}
}
@@ -434,6 +491,53 @@ public class PluginDescriptorProcessor {
return packageName + '.' + baseClassName;
}
+ private Map<String, ServerDescriptor> getPluginServerDescriptors(String
pluginName) {
+ Map<String, ServerDescriptor> pluginServerDescriptors = new
HashMap<String, ServerDescriptor>();
+
+ // In plugindoc, we only support embedding types from this plugin.
+ if (pluginName.equals(this.pluginDescriptor.getName())) {
+ for (ServerDescriptor server : pluginDescriptor.getServers()) {
+ pluginServerDescriptors.put(server.getName(), server);
+ }
+ }
+
+ return pluginServerDescriptors;
+ }
+
+ private Map<String, ServiceDescriptor> getPluginServiceDescriptors(String
pluginName) {
+ Map<String, ServiceDescriptor> pluginServiceDescriptors = new
HashMap<String, ServiceDescriptor>();
+
+ // In plugindoc, we only support embedding types from this plugin.
+ if (pluginName.equals(this.pluginDescriptor.getName())) {
+ addPluginServiceDescriptors(pluginDescriptor.getServices(),
pluginServiceDescriptors);
+ addPluginServiceDescriptors(pluginDescriptor.getServers(),
pluginServiceDescriptors);
+ }
+
+ return pluginServiceDescriptors;
+ }
+
+ private void addPluginServiceDescriptors(Collection<? extends
ResourceDescriptor> parents,
+ Map<String, ServiceDescriptor> descriptors) {
+ if (parents != null) {
+ for (ResourceDescriptor parent : parents) {
+ List<ServiceDescriptor> services;
+ if (parent instanceof ServerDescriptor) {
+ services = ((ServerDescriptor) parent).getServices();
+ } else if (parent instanceof ServiceDescriptor) {
+ services = ((ServiceDescriptor) parent).getServices();
+ } else {
+ throw new IllegalStateException("Unsupported parent descriptor
type: "
+ + parent.getClass().getName());
+ }
+
+ for (ServiceDescriptor service : services) {
+ descriptors.put(service.getName(), service);
+ addPluginServiceDescriptors(service.getServices(), descriptors); //
recurse down the hierarchy
+ }
+ }
+ }
+ }
+
/**
* Converts the creation data descriptor (JAXB) object into the domain enumeration.
*
@@ -444,13 +548,13 @@ public class PluginDescriptorProcessor {
*/
private ResourceCreationDataType convertCreationDataType(ResourceCreationData
creationType) {
switch (creationType) {
- case CONTENT: {
- return ResourceCreationDataType.CONTENT;
- }
+ case CONTENT: {
+ return ResourceCreationDataType.CONTENT;
+ }
- case CONFIGURATION: {
- return ResourceCreationDataType.CONFIGURATION;
- }
+ case CONFIGURATION: {
+ return ResourceCreationDataType.CONFIGURATION;
+ }
}
return null;
@@ -466,24 +570,24 @@ public class PluginDescriptorProcessor {
*/
private CreateDeletePolicy convertCreateDeletePolicy(ResourceCreateDeletePolicy
policy) {
switch (policy) {
- case BOTH: {
- return CreateDeletePolicy.BOTH;
- }
+ case BOTH: {
+ return CreateDeletePolicy.BOTH;
+ }
- case CREATE_ONLY: {
- return CreateDeletePolicy.CREATE_ONLY;
- }
+ case CREATE_ONLY: {
+ return CreateDeletePolicy.CREATE_ONLY;
+ }
- case DELETE_ONLY: {
- return CreateDeletePolicy.DELETE_ONLY;
- }
+ case DELETE_ONLY: {
+ return CreateDeletePolicy.DELETE_ONLY;
+ }
- case NEITHER: {
- return CreateDeletePolicy.NEITHER;
- }
+ case NEITHER: {
+ return CreateDeletePolicy.NEITHER;
+ }
}
return null;
}
-}
\ No newline at end of file
+}
diff --git
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
index 5a9d91b..605b644 100644
---
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
+++
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
@@ -27,6 +27,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Properties;
@@ -110,6 +111,7 @@ public class PluginDocGenerator {
+ ioe.getMessage());
}
+ loadProperties(props);
}
public void loadProperties(Properties props) {
@@ -336,7 +338,7 @@ public class PluginDocGenerator {
Plugin plugin = descriptorProcessor.getPlugin();
generateDocbookPluginPage(resourceTypes, docbookOutputDir, plugin);
- generateDocbookResourceTypePages(null, resourceTypes, docbookOutputDir, plugin);
+ generateDocbookResourceTypePages(new ArrayList<ResourceType>(),
resourceTypes, docbookOutputDir, plugin);
}
private File generateDocbookPluginPage(Set<ResourceType> resourceTypes, File
docBookOutputDir, Plugin plugin) {
@@ -352,15 +354,23 @@ public class PluginDocGenerator {
docbookPluginTemplateProcessor.getContext().put("rhqVersion",
RHQ_VERSION);
docbookPluginTemplateProcessor.getContext().put("plugin", plugin);
- docbookPluginTemplateProcessor.getContext().put("resourceTypes",
resourceTypes);
- String docbookOutputFileName = escapeFileName(getPageTitle(plugin) +
".xml");
+ String pluginId = getPluginId(plugin);
+ docbookPluginTemplateProcessor.getContext().put("pluginId", pluginId);
+ List<String> typeIds = new ArrayList<String>(resourceTypes.size());
+ for (ResourceType type : resourceTypes) {
+ String typeId = getTypeId(type, new ArrayList<ResourceType>());
+ typeIds.add(typeId);
+ }
+ docbookPluginTemplateProcessor.getContext().put("typeIds", typeIds);
+
+ String docbookOutputFileName = escapeFileName(pluginId + ".xml");
File docbookPluginOutputFile = new File(docBookOutputDir,
docbookOutputFileName);
docbookPluginTemplateProcessor.processTemplate(docbookPluginOutputFile);
return docbookPluginOutputFile;
}
- private void generateDocbookResourceTypePages(ResourceType parentType,
Set<ResourceType> resourceTypes,
+ private void generateDocbookResourceTypePages(List<ResourceType> ancestorTypes,
Set<ResourceType> resourceTypes,
File docbookOutputDir, Plugin plugin)
{
VelocityTemplateProcessor docbookTemplateProcessor = new
VelocityTemplateProcessor(
DOCBOOK_RESOURCE_TYPE_TEMPLATE_RESOURCE_PATH,
DOCBOOK_MACRO_LIBRARY_RESOURCE_PATH,
@@ -375,12 +385,22 @@ public class PluginDocGenerator {
System.out.println("Generating DocBook content for " + resourceType
+ " Resource type...");
docbookTemplateProcessor.getContext().put("resourceType",
resourceType);
- String docbookOutputFileName = escapeFileName(getPageTitle(resourceType,
parentType) + ".xml");
+ String typeId = getTypeId(resourceType, ancestorTypes);
+ docbookTemplateProcessor.getContext().put("typeId", typeId);
+ List<String> childTypeIds = new
ArrayList<String>(resourceType.getChildResourceTypes().size());
+ for (ResourceType childType : resourceType.getChildResourceTypes()) {
+ String childTypeId = typeId + ":" +
escapeXmlId(childType.getName());
+ childTypeIds.add(childTypeId);
+ }
+ docbookTemplateProcessor.getContext().put("childTypeIds",
childTypeIds);
+ String docbookOutputFileName = escapeFileName(typeId) + ".xml";
File docbookOutputFile = new File(docbookOutputDir, docbookOutputFileName);
docbookTemplateProcessor.processTemplate(docbookOutputFile);
// Recurse on child types.
- generateDocbookResourceTypePages(resourceType,
resourceType.getChildResourceTypes(), docbookOutputDir,
+ List<ResourceType> childAncestorTypes = new
ArrayList<ResourceType>(ancestorTypes);
+ childAncestorTypes.add(resourceType);
+ generateDocbookResourceTypePages(childAncestorTypes,
resourceType.getChildResourceTypes(), docbookOutputDir,
plugin);
}
}
@@ -540,6 +560,10 @@ public class PluginDocGenerator {
return escapePageTitle(title);
}
+ private static String getPluginId(Plugin plugin) {
+ return escapeXmlId(plugin.getName());
+ }
+
private static String getPageTitle(ResourceType resourceType, ResourceType
parentType) {
StringBuilder buffer = new StringBuilder();
@@ -572,6 +596,21 @@ public class PluginDocGenerator {
return escapePageTitle(buffer.toString());
}
+ private static String getTypeId(ResourceType resourceType, List<ResourceType>
ancestorTypes) {
+ StringBuilder buffer = new StringBuilder();
+
+ String pluginName = resourceType.getPlugin();
+ buffer.append(pluginName).append(':');
+
+ for (ResourceType ancestorType : ancestorTypes) {
+ buffer.append(ancestorType.getName()).append(':');
+ }
+
+ buffer.append(resourceType.getName());
+
+ return escapeXmlId(buffer.toString());
+ }
+
private static String getContentAsString(File contentFile) throws IOException {
StringBuilder content = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new
FileInputStream(contentFile)));
@@ -587,17 +626,18 @@ public class PluginDocGenerator {
}
private static String escapeFileName(String fileName) {
- // DocBook doesn't like parentheses or dashes in filenames.
- fileName = fileName.replaceAll("\\(",
"").replaceAll("\\)", "").replace('-',
':');
-
- // Remove other characters that are generally undesirable in filenames.
- return fileName.replace('/', '_').replace('\\',
'_').replace(' ', '_');
+ // Remove characters that are generally undesirable in filenames.
+ return fileName.replace(' ',
'_').replaceAll("[\\\\/\\(\\)\\[\\]\\?\\*]", "-");
}
private static String escapePageTitle(String fileName) {
return fileName.replace('/', '-');
}
+ private static String escapeXmlId(String id) {
+ return id.replace(' ',
'_').replaceAll("[^-\\._:A-Za-z0-9]", "-");
+ }
+
public static void main(String[] args) throws PluginDocGeneratorException {
if (args.length < 1 || args.length > 2) {
System.out.println("Usage: " +
PluginDocGenerator.class.getSimpleName()
diff --git a/modules/core/plugindoc/src/main/resources/common-macros.vm
b/modules/core/plugindoc/src/main/resources/common-macros.vm
index e36ed7b..9699bcf 100644
--- a/modules/core/plugindoc/src/main/resources/common-macros.vm
+++ b/modules/core/plugindoc/src/main/resources/common-macros.vm
@@ -1,2 +1,2 @@
#macro( displayResourceTypeName $resourceType )
-${resourceType.plugin} - #if (
${resourceType.name.startsWith("${resourceType.plugin}")} )
${resourceType.name.substring(${resourceType.plugin.length()})}#else
${resourceType.name}#end#if ( !${resourceType.name.endsWith("
${resourceType.category}")} ) ${resourceType.category}#end#end
+${resourceType.plugin} -#if (
${resourceType.name.startsWith("${resourceType.plugin}")} )
${resourceType.name.substring(${resourceType.plugin.length()})}#else
${resourceType.name}#end#if ( !${resourceType.name.endsWith("
${resourceType.category}")} ) ${resourceType.category}#end#end
diff --git a/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
b/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
index 7dc86dd..33cf68e 100644
--- a/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
+++ b/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
@@ -2,7 +2,7 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<section id="${plugin.displayName} Plugin">
+<section id="${pluginId}">
<title>${plugin.displayName} Plugin</title>
<table>
@@ -31,9 +31,13 @@
<para>${plugin.help}</para>
#end
-#if ( !${resourceTypes.empty} )
- <bridgehead>Resource Types</bridgehead>
- <para>{children:all=true|style=h3}</para>
+ <bridgehead>Top-Level Resource Types</bridgehead>
+#if ( !${typeIds.empty} )
+ <itemizedlist>
+#foreach( ${typeId} in ${typeIds} )
+ <listitem><simpara><xref
linkend="${typeId}"/></simpara></listitem>
+#end
+ </itemizedlist>
#else
<para>This plugin does not define any Resource types. It it probably an
"abstract plugin", that is, one that
provides Resource components and/or discovery components that can be used by
other plugins.</para>
diff --git a/modules/core/plugindoc/src/main/resources/resource-type-doc-docbook.vm
b/modules/core/plugindoc/src/main/resources/resource-type-doc-docbook.vm
index 576bead..284a0c9 100644
--- a/modules/core/plugindoc/src/main/resources/resource-type-doc-docbook.vm
+++ b/modules/core/plugindoc/src/main/resources/resource-type-doc-docbook.vm
@@ -2,7 +2,7 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<section id="#displayResourceTypeLink( ${resourceType} )">
+<section id="${typeId}">
<title>#displayResourceTypeName( ${resourceType} )</title>
<bridgehead>Overview</bridgehead>
@@ -32,34 +32,13 @@
#end
- <bridgehead>Parent Resource Types</bridgehead>
-#if ( !${resourceType.parentResourceTypes.isEmpty()} )
- <itemizedlist>
-#foreach ( ${parentResourceType} in ${resourceType.parentResourceTypes} )
- <listitem><simpara><xref linkend="#displayResourceTypeLink(
${parentResourceType} )"/></simpara></listitem>
-#end
- </itemizedlist>
-#elseif ( ${resourceType.category.name} != "PLATFORM" )
- <itemizedlist>
- <listitem><simpara><xref
linkend="Managed_Platforms"/></simpara></listitem>
- </itemizedlist>
-#else
- <para>none</para>
-#end
-
-
<bridgehead>Child Resource Types</bridgehead>
-#if ( !${resourceType.childResourceTypes.isEmpty()} )
+#if ( !${childTypeIds.isEmpty()} )
<itemizedlist>
-#foreach( ${childResourceType} in ${resourceType.childResourceTypes} )
- <listitem><simpara><xref linkend="#displayResourceTypeLink(
${childResourceType} )"/></simpara></listitem>
+#foreach( ${childTypeId} in ${childTypeIds} )
+ <listitem><simpara><xref
linkend="${childTypeId}"/></simpara></listitem>
#end
</itemizedlist>
-#elseif ( ${resourceType.category.name} == "PLATFORM" )
- <itemizedlist>
- <listitem><simpara><xref
linkend="Managed_Servers"/></simpara></listitem>
- <listitem><simpara><xref
linkend="Managed_Platform_Services"/></simpara></listitem>
- </itemizedlist>
#else
<para>none</para>
#end
@@ -188,8 +167,8 @@
#end
-#foreach( ${childResourceType} in ${resourceType.childResourceTypes} )
- <xi:include href="#displayResourceTypeLink( ${childResourceType} ).xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
+#foreach( ${childTypeId} in ${childTypeIds} )
+ <xi:include href="${childTypeId}.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
#end
</section>
commit 2bc3201b3a1914ae14f6f2ceaa5d91ec1bc4aff9
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri May 25 17:38:37 2012 -0400
Missed one more option-set update.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 755fae4..a1cf8cf 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -4283,7 +4283,27 @@
<resource-configuration>
<c:list-property name="login-modules" required="false"
description="List of authentication modules">
<c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="code" required="true"
type="string" readOnly="true"
+ description="Class name of the module to be instantiated.">
+ <c:property-options>
+ <c:option value="AdvancedADLdap" />
+ <c:option value="AdvancedLdap" />
+ <c:option value="Certificate" />
+ <c:option value="CertificateRoles" />
+ <c:option value="Client" />
+ <c:option value="Database" />
+ <c:option value="DatabaseCertificate" />
+ <c:option value="DatabaseUsers" />
+ <c:option value="Identity" />
+ <c:option value="Kerberos" />
+ <c:option value="Ldap" />
+ <c:option value="LdapExtended" />
+ <c:option value="RoleMapping" />
+ <c:option value="Simple" />
+ <c:option value="SPNEGOUsers" />
+ <c:option value="UserRoles" />
+ </c:property-options>
+ </c:simple-property>
<c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
<c:property-options>
<c:option value="sufficient"/>
@@ -8183,7 +8203,27 @@
<resource-configuration>
<c:list-property name="login-modules" required="false"
description="List of authentication modules">
<c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="code" required="true"
type="string" readOnly="true"
+ description="Class name of the module to be instantiated.">
+ <c:property-options>
+ <c:option value="AdvancedADLdap" />
+ <c:option value="AdvancedLdap" />
+ <c:option value="Certificate" />
+ <c:option value="CertificateRoles" />
+ <c:option value="Client" />
+ <c:option value="Database" />
+ <c:option value="DatabaseCertificate" />
+ <c:option value="DatabaseUsers" />
+ <c:option value="Identity" />
+ <c:option value="Kerberos" />
+ <c:option value="Ldap" />
+ <c:option value="LdapExtended" />
+ <c:option value="RoleMapping" />
+ <c:option value="Simple" />
+ <c:option value="SPNEGOUsers" />
+ <c:option value="UserRoles" />
+ </c:property-options>
+ </c:simple-property>
<c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
<c:property-options>
<c:option value="sufficient"/>
commit e97ca2d233f8a00aab30a31547e4bad83bfcc0d6
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri May 25 15:55:40 2012 -0400
Add option-set values for some more resource-configurations for Security subsystem.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 9fe561f..755fae4 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -2970,6 +2970,7 @@
<service name="Security Domain (Managed Server)"
discovery="SubsystemDiscovery"
+ description="Configures a security domain. Authentication,
authorization, ACL, mapping, auditing and identity trust are configured here."
class="BaseComponent">
<plugin-configuration>
@@ -2989,7 +2990,12 @@
</operation>
<resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="true" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan" />
+ </c:property-options>
+ </c:simple-property>
</resource-configuration>
<service name="ACL (Managed Server)"
@@ -3051,7 +3057,27 @@
<resource-configuration>
<c:list-property name="login-modules" required="false"
description="List of authentication modules">
<c:map-property name="*" required="false">
- <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="code" required="true"
type="string" readOnly="true"
+ description="Class name of the module to be instantiated.">
+ <c:property-options>
+ <c:option value="AdvancedADLdap" />
+ <c:option value="AdvancedLdap" />
+ <c:option value="Certificate" />
+ <c:option value="CertificateRoles" />
+ <c:option value="Client" />
+ <c:option value="Database" />
+ <c:option value="DatabaseCertificate" />
+ <c:option value="DatabaseUsers" />
+ <c:option value="Identity" />
+ <c:option value="Kerberos" />
+ <c:option value="Ldap" />
+ <c:option value="LdapExtended" />
+ <c:option value="RoleMapping" />
+ <c:option value="Simple" />
+ <c:option value="SPNEGOUsers" />
+ <c:option value="UserRoles" />
+ </c:property-options>
+ </c:simple-property>
<c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
<c:property-options>
<c:option value="sufficient"/>
@@ -4187,7 +4213,12 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan" />
+ </c:property-options>
+ </c:simple-property>
</resource-configuration>
<service name="ACL (Profile)"
@@ -5415,7 +5446,8 @@
<c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
&logLevel;
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="The module that the
logging handler depends on."/>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true"
+ description="The module that the logging handler depends on." />
<c:list-property name="properties">
<c:map-property name="properties:collapsed"
displayName="Properties">
<c:simple-property name="name:0" displayName="Name"
required="true" description="The name of the configuration
property."/>
@@ -8081,7 +8113,12 @@
</operation>
<resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ <c:simple-property name="cache-type" required="false"
type="string" defaultValue="default" readOnly="false"
description="Adds a cache to speed up authentication checks. Allowed values are
'default' to use simple map as the cache and
'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan" />
+ </c:property-options>
+ </c:simple-property>
</resource-configuration>
<service name="ACL"
commit 536e0949945638a9dc57c1903826830cd8aae376
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri May 25 16:16:05 2012 -0400
[BZ 824898] if it looks like the exception message came from our ThrowableUtil (i.e.
we look for the " -> " marker in the message), then we extract the last
message after the last -> marker and assume that is the root cause.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
index 3758acd..fdf4acb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
@@ -64,7 +64,16 @@ public class ErrorHandler {
if (allMessages == null || allMessages.length == 0) {
return null;
}
- return allMessages[allMessages.length - 1];
+ String lastMessage = allMessages[allMessages.length - 1];
+
+ // our server side uses ThrowableUtil.getAllMessages which combines all
+ // causes into one long message with each cause separated with the marker "
-> ".
+ // If we see that marker, take the message after the last marker.
+ int lastMarker = lastMessage.lastIndexOf(" -> ");
+ if (lastMarker != -1) {
+ lastMessage = lastMessage.substring(lastMarker + 4);
+ }
+ return lastMessage;
}
public static String getAllMessages(Throwable t) {
commit 6b1cb15677020e5ed941029b1e82c8a5adb9a701
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri May 25 13:24:17 2012 -0400
eclipse change
diff --git a/etc/eclipse-tools/RHQ Remote Debugging - GWT.launch b/etc/eclipse-tools/RHQ
Remote Debugging - GWT.launch
index 2388949..02de92f 100644
--- a/etc/eclipse-tools/RHQ Remote Debugging - GWT.launch
+++ b/etc/eclipse-tools/RHQ Remote Debugging - GWT.launch
@@ -1,19 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
-<launchConfiguration
type="org.eclipse.jdt.launching.remoteJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/rhq"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE"
value="true"/>
-<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">
-<mapEntry key="port" value="8000"/>
-<mapEntry key="hostname" value="localhost"/>
-</mapAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR"
value="rhq"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID"
value="org.eclipse.jdt.launching.socketAttachConnector"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
+<launchConfiguration
type="org.eclipse.jdt.launching.remoteJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/rhq"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id"
value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento"
value="<?xml version="1.0"
encoding="UTF-8"
standalone="no"?> <sourceLookupDirector> <sourceContainers
duplicates="false"> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject
name=&quot;rhq&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/integration/jboss-profileservice-spi/5.1.0.SP1/jboss-profileservice-spi-5.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/man/jboss-managed/2.1.1.GA/jboss-managed-2.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/man/jboss-metatype/2.1.1.GA/jboss-metatype-2.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/commons/commons-io/1.3.2/commons-io-1.3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.12/jaxb-impl-2.1.12.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/i18nlog/i18nlog/1.0.10/i18nlog-1.0.10.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-remoting/2.2.2.SP8/jboss-remoting-2.2.2.SP8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/oswego-concurrent/concurrent/1.3.4/concurrent-1.3.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/rss4j/rss4j/0.92-on.2/rss4j-0.92-on.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant/1.8.0/ant-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant-nodeps/1.8.0/ant-nodeps-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/struts/struts/1.2.9/struts-1.2.9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/jsp-api/2.0/jsp-api-2.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/testng/testng/6.1.1/testng-6.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/snmp4j/snmp4j/1.8.2/snmp4j-1.8.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/tomcat/tomcat-jk/4.1.31/tomcat-jk-4.1.31.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jdom/jdom/1.0/jdom-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-jmx/4.2.3.GA/jboss-jmx-4.2.3.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/tomcat/catalina/5.5.20/catalina-5.5.20.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-common/1.2.1.GA/jboss-common-1.2.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/struts-menu/struts-menu/2.3/struts-menu-2.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/junit/junit/3.8.2/junit-3.8.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/velocity/velocity/1.5/velocity-1.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/xalan/xalan/2.5.1/xalan-2.5.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-embeddable-ejb3/jboss-ejb3-all/1.0.0.Alpha9/jboss-ejb3-all-1.0.0.Alpha9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jbpm/3.1.1/jbpm-3.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-embeddable-ejb3/hibernate-all/1.0.0.Alpha9/hibernate-all-1.0.0.Alpha9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jetbrains/annotations/7.0.2/annotations-7.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant-launcher/1.8.0/ant-launcher-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-lang/commons-lang/2.4/commons-lang-2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/faces/jsf-api/1.2_14/jsf-api-1.2_14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/faces/jsf-impl/1.2_14/jsf-impl-1.2_14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/sun/facelets/jsf-facelets/1.1.15.B1/jsf-facelets-1.1.15.B1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/mc4j/org-mc4j-ems/1.2.16/org-mc4j-ems-1.2.16.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/opensymphony/quartz/quartz/1.6.5/quartz-1.6.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/mail/mail/1.4.2/mail-1.4.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/framework/richfaces-api/3.3.3.Final/richfaces-api-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/framework/richfaces-impl/3.3.3.Final/richfaces-impl-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/ui/richfaces-ui/3.3.3.Final/richfaces-ui-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/postgresql/postgresql/9.0-801.jdbc4/postgresql-9.0-801.jdbc4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-cache/1.4.1.SP9/jboss-cache-1.4.1.SP9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hyperic/sigar/1.6.5.132/sigar-1.6.5.132.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/transaction/jboss-jta/4.2.3.SP5/jboss-jta-4.2.3.SP5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/transaction/jboss-jts-common/4.2.3.SP5/jboss-jts-common-4.2.3.SP5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/jbossws-spi/1.1.1.GA/jbossws-spi-1.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/jbossws/jbossws-native-core/3.1.1.GA/jbossws-native-core-3.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/swizzle/swizzle-confluence/1.6.1/swizzle-confluence-1.6.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jvnet/inflector/0.7.0/inflector-0.7.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/augeas/augeas/0.0.2/augeas-0.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/json/json/20080701/json-20080701.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/java/dev/jna/jna/3.2.5/jna-3.2.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/freemarker/freemarker/2.3.11/freemarker-2.3.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/seam/jboss-seam/2.1.0.SP1/jboss-seam-2.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/seam/jboss-seam-ui/2.1.0.SP1/jboss-seam-ui-2.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/hibernate/hibernate3/3.2.r14201-2/hibernate3-3.2.r14201-2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jline/jline/0.9.94/jline-0.9.94.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javassist/javassist/3.9.0.GA/javassist-3.9.0.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/sf/opencsv/opencsv/1.8/opencsv-1.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bouncycastle/bcpg-jdk15/140/bcpg-jdk15-140.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bouncycastle/bcprov-jdk15/140/bcprov-jdk15-140.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/xmlrpc/xmlrpc-client/3.1.2/xmlrpc-client-3.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/xmlrpc/xmlrpc-common/3.1.2/xmlrpc-common-3.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ws/commons/util/ws-commons-util/1.0.2/ws-commons-util-1.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/pircbot/pircbot/1.4.2/pircbot-1.4.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/twitter4j/twitter4j-core/2.2.4/twitter4j-core-2.2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/antlr/antlr-runtime/3.2/antlr-runtime-3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/web/jbossweb/2.0.1.GA/jbossweb-2.0.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/libvirt/libvirt/0.4.1/libvirt-0.4.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/byteman/byteman/1.2.1/byteman-1.2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/fedorahosted/cobbler/cobbler4j/0.1/cobbler4j-0.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/gwt/gwt-user/2.4.0/gwt-user-2.4.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/gwt/gwt-dev/2.4.0/gwt-dev-2.4.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/smartgwt/smartgwt/3.0/smartgwt-3.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/code/gwt-log/gwt-log/3.1.0/gwt-log-3.1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/ca/nanometrics/gflot/1.0.0/gflot-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/jcraft/jsch/0.1.29/jsch-0.1.29.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/dbunit/dbunit/2.4.8/dbunit-2.4.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/poi/poi/3.7/poi-3.7.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bsh/bsh/1.3.0/bsh-1.3.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-core/3.1/unitils-core-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-dbunit/3.1/unitils-dbunit-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-orm/3.1/unitils-orm-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-testng/3.1/unitils-testng-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/jackson/jackson-core-asl/1.7.4/jackson-core-asl-1.7.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.7.4/jackson-mapper-asl-1.7.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/mongodb/mongo-java-driver/2.6.5/mongo-java-driver-2.6.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/googlecode/java-diff-utils/diffutils/1.2.1/diffutils-1.2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/code/morphia/morphia/1.00-SNAPSHOT/morphia-1.00-SNAPSHOT.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-links/2.3.3.Final/resteasy-links-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.3.Final/resteasy-jaxrs-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.3.Final/resteasy-jackson-provider-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/jaxrs-api/2.3.3.Final/jaxrs-api-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/sasl/jboss-sasl/1.0.0.Beta9/jboss-sasl-1.0.0.Beta9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;JDK_HOME/lib/tools.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-api-mockito/1.4.11/powermock-api-mockito-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-core/1.4.11/powermock-core-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-api-support/1.4.11/powermock-api-support-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-module-testng-common/1.4.11/powermock-module-testng-common-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-module-testng/1.4.11/powermock-module-testng-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/liquibase/liquibase-core/2.0.3/liquibase-core-2.0.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-impl-base/1.0.0/shrinkwrap-impl-base-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-api/1.0.0/shrinkwrap-api-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-spi/1.0.0/shrinkwrap-spi-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-api-base/2.0.0-alpha-2/shrinkwrap-descriptors-api-base-2.0.0-alpha-2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-api/1.0.0-beta-6/shrinkwrap-resolver-api-1.0.0-beta-6.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-api-maven/1.0.0-beta-6/shrinkwrap-resolver-api-maven-1.0.0-beta-6.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/test/arquillian-test-spi/1.0.0.Final/arquillian-test-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/test/arquillian-test-api/1.0.0.Final/arquillian-test-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/core/arquillian-core-spi/1.0.0.Final/arquillian-core-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/core/arquillian-core-api/1.0.0.Final/arquillian-core-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/container/arquillian-container-spi/1.0.0.Final/arquillian-container-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/container/arquillian-container-test-api/1.0.0.Final/arquillian-container-test-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/testng/arquillian-testng-core/1.0.0.Final/arquillian-testng-core-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;"
typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE"
value="true"/>
+<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">
+<mapEntry key="hostname" value="localhost"/>
+<mapEntry key="port" value="8000"/>
+<mapEntry key="timeout" value="20000"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR"
value="rhq"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID"
value="org.eclipse.jdt.launching.socketAttachConnector"/>
+</launchConfiguration>
commit 9cb619f40a3cc7609989e9890a1da1f2c8b95273
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri May 25 13:23:44 2012 -0400
[Bug 824778 - Schedules cannot be deleted]
This was odd. (nod to lkrejci for doing original analysis)
SmartGWT for whatever reason seemd to be getting confused
as to what sort of object that SubjectRecord was. It seems to stem from
setting a ListGrid "object" as an attribute on a ListGridRecord. Perhaps
under the covers it is sometimes a Java object and sometimes a javascript
object. Either way, remove the use of it completely and just use simple
attributes to store the subject name and id. It adds an attribute but
overall simplfies things (and, as a bonus, works).
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/SubjectRecordCellFormatter.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/SubjectRecordCellFormatter.java
deleted file mode 100644
index dc3b8f5..0000000
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/SubjectRecordCellFormatter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.rhq.enterprise.gui.coregui.client.components.table;
-
-import com.google.gwt.core.client.JavaScriptObject;
-import com.smartgwt.client.data.Record;
-import com.smartgwt.client.widgets.grid.CellFormatter;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import org.rhq.core.domain.auth.Subject;
-
-/**
- * Formats a {@link
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.AbstractOperationScheduleDataSource.SubjectRecord}
- * (the SmartGWT {@link Record} representation of a {@link Subject}).
- *
- * @author Ian Springer
- */
-public class SubjectRecordCellFormatter implements CellFormatter {
-
- public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
- String result;
- if (value == null) {
- result = "";
- } else if (value instanceof JavaScriptObject) {
- JavaScriptObject javaScriptObject = (JavaScriptObject) value;
- Record subjectRecord = new ListGridRecord(javaScriptObject);
- result = subjectRecord.getAttribute("name"); // the Subject's
username
- } else {
- throw new IllegalArgumentException("value parameter is not a
SubjectRecord - it is a "
- + value.getClass().getName() + ".");
- }
- return result;
- }
-
-}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
index 2c1940b..d4663a6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
@@ -62,6 +62,7 @@ public abstract class AbstractOperationScheduleDataSource<T extends
OperationSch
public static final String OPERATION_DISPLAY_NAME =
"operationDisplayName";
public static final String PARAMETERS = "parameters";
public static final String SUBJECT = "subject";
+ public static final String SUBJECT_ID = "subjectId";
public static final String DESCRIPTION = "description";
public static final String NEXT_FIRE_TIME = "nextFireTime";
public static final String TIMEOUT = "timeout";
@@ -152,8 +153,10 @@ public abstract class AbstractOperationScheduleDataSource<T
extends OperationSch
to.setId(from.getAttributeAsInt(Field.ID));
to.setJobName(from.getAttribute(Field.JOB_NAME));
to.setJobGroup(from.getAttribute(Field.JOB_GROUP));
- SubjectRecord subjectRecord = (SubjectRecord)
from.getAttributeAsRecord(Field.SUBJECT);
- to.setSubject(subjectRecord.toSubject());
+ Subject subject = new Subject();
+ subject.setName(from.getAttribute(Field.SUBJECT));
+ subject.setId(from.getAttributeAsInt(Field.SUBJECT_ID));
+ to.setSubject(subject);
Configuration parameters = (Configuration)
from.getAttributeAsObject(Field.PARAMETERS);
Integer timeout = RecordUtility.getAttributeAsInteger(from, Field.TIMEOUT);
if (timeout != null) {
@@ -179,8 +182,8 @@ public abstract class AbstractOperationScheduleDataSource<T extends
OperationSch
to.setAttribute(Field.ID, from.getId());
to.setAttribute(Field.JOB_NAME, from.getJobName());
to.setAttribute(Field.JOB_GROUP, from.getJobGroup());
- SubjectRecord subjectRecord = new SubjectRecord(from.getSubject());
- to.setAttribute(Field.SUBJECT, subjectRecord);
+ to.setAttribute(Field.SUBJECT, from.getSubject().getName());
+ to.setAttribute(Field.SUBJECT_ID, from.getSubject().getId());
Configuration parameters = from.getParameters();
to.setAttribute(Field.PARAMETERS, parameters);
to.setAttribute(Field.OPERATION_NAME, from.getOperationName());
@@ -266,30 +269,4 @@ public abstract class AbstractOperationScheduleDataSource<T
extends OperationSch
protected Criteria getFetchCriteria(DSRequest request) {
return null;
}
-
- public static class SubjectRecord extends ListGridRecord {
- static final String FIELD_ID = "id";
- static final String FIELD_NAME = "name";
-
- public SubjectRecord(Subject subject) {
- setAttribute(FIELD_ID, subject.getId());
- setAttribute(FIELD_NAME, subject.getName());
- }
-
- public int getId() {
- return getAttributeAsInt(FIELD_ID);
- }
-
- public String getName() {
- return getAttribute(FIELD_NAME);
- }
-
- public Subject toSubject() {
- Subject subject = new Subject();
- subject.setId(getId());
- subject.setName(getName());
- return subject;
- }
- }
-
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
index 55c7de4..1ac329d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
@@ -19,6 +19,15 @@
*/
package
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
@@ -35,6 +44,7 @@ import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.VLayout;
+
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.JobTrigger;
import org.rhq.core.domain.common.ProductInfo;
@@ -45,23 +55,23 @@ import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
-import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
-import org.rhq.enterprise.gui.coregui.client.components.form.*;
+import org.rhq.enterprise.gui.coregui.client.components.form.AbstractRecordEditor;
+import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem;
+import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit;
+import org.rhq.enterprise.gui.coregui.client.components.form.UnitType;
import org.rhq.enterprise.gui.coregui.client.components.trigger.JobTriggerEditor;
import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleDataSource;
-import org.rhq.enterprise.gui.coregui.client.operation.OperationHistoryView;
import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.TypeConversionUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
-import java.util.*;
-
/**
* A view for viewing or editing an RHQ {@link
org.rhq.core.domain.operation.bean.OperationSchedule operation schedule}.
*
@@ -298,9 +308,8 @@ public abstract class AbstractOperationScheduleDetailsView extends
Record record = super.createNewRecord();
Subject sessionSubject = UserSessionManager.getSessionSubject();
- AbstractOperationScheduleDataSource.SubjectRecord subjectRecord = new
AbstractOperationScheduleDataSource.SubjectRecord(
- sessionSubject);
- record.setAttribute(ResourceOperationScheduleDataSource.Field.SUBJECT,
subjectRecord);
+ record.setAttribute(ResourceOperationScheduleDataSource.Field.SUBJECT,
sessionSubject.getName());
+ record.setAttribute(ResourceOperationScheduleDataSource.Field.SUBJECT_ID,
sessionSubject.getId());
return record;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleListView.java
index 54052a5..70a14cf 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleListView.java
@@ -23,7 +23,6 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.enterprise.gui.coregui.client.components.table.EscapedHtmlCellFormatter;
-import
org.rhq.enterprise.gui.coregui.client.components.table.SubjectRecordCellFormatter;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
@@ -50,7 +49,6 @@ public abstract class AbstractOperationScheduleListView extends
TableSection<Abs
AbstractOperationScheduleDataSource.Field.OPERATION_DISPLAY_NAME, 180);
ListGridField subjectField = new
ListGridField(AbstractOperationScheduleDataSource.Field.SUBJECT, 110);
- subjectField.setCellFormatter(new SubjectRecordCellFormatter());
ListGridField nextFireTimeField = new
ListGridField(AbstractOperationScheduleDataSource.Field.NEXT_FIRE_TIME,
190);
commit c4eac5bd361f5290d62b28ac3b6afb4ca5708635
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 13:06:18 2012 -0400
fix bug where DocBook files were only being generated for the root resource types
diff --git
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
index 83f2c11..5a9d91b 100644
---
a/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
+++
b/modules/core/plugindoc/src/main/java/org/rhq/core/tool/plugindoc/PluginDocGenerator.java
@@ -66,7 +66,8 @@ public class PluginDocGenerator {
private static final String PLUGIN_DESCRIPTOR_JAXB_CONTEXT_PATH =
"org.rhq.core.clientapi.descriptor.plugin";
private static final String CONFLUENCE_PLUGIN_TEMPLATE_RESOURCE_PATH =
"plugin-doc-confluence.vm";
private static final String CONFLUENCE_RESOURCE_TYPE_TEMPLATE_RESOURCE_PATH =
"resource-type-doc-confluence.vm";
- private static final String DOCBOOK_TEMPLATE_RESOURCE_PATH =
"resource-type-doc-docbook.vm";
+ private static final String DOCBOOK_PLUGIN_TEMPLATE_RESOURCE_PATH =
"plugin-doc-docbook.vm";
+ private static final String DOCBOOK_RESOURCE_TYPE_TEMPLATE_RESOURCE_PATH =
"resource-type-doc-docbook.vm";
private static final String CONFLUENCE_MACRO_LIBRARY_RESOURCE_PATH =
"confluence-macros.vm";
private static final String DOCBOOK_MACRO_LIBRARY_RESOURCE_PATH =
"docbook-macros.vm";
private static final String RHQ_VERSION = "4.4.0";
@@ -142,7 +143,7 @@ public class PluginDocGenerator {
File baseOutputDir = new File(projectBaseDir.getParentFile(), OUTPUT_DIR_PATH);
generateConfluenceContent(descriptorProcessor, resourceTypes, baseOutputDir);
- generateDocBookContent(descriptorProcessor, resourceTypes, baseOutputDir);
+ generateDocbookContent(descriptorProcessor, resourceTypes, baseOutputDir);
}
private static Set<ResourceType> sortResourceTypes(Set<ResourceType>
resourceTypes) {
@@ -155,7 +156,7 @@ public class PluginDocGenerator {
Set<ResourceType> resourceTypes, File
baseOutputDir)
throws PluginDocGeneratorException {
String pluginName = descriptorProcessor.getPluginDescriptor().getName();
- log.info("Generating Confluence content for " + pluginName + "
plugin...");
+ System.out.println("Generating Confluence content for " + pluginName +
" plugin...");
File confluenceBaseOutputDir = new File(baseOutputDir, "confluence");
File confluenceOutputDir = new File(confluenceBaseOutputDir, pluginName);
@@ -248,6 +249,19 @@ public class PluginDocGenerator {
return confluenceHelp;
}
+ private static String getDocbookHelp(String helpContentType, String help) {
+ String docbookHelp;
+ if (helpContentType.contains("docbook")) {
+ docbookHelp = help;
+ } else if (helpContentType.endsWith("html")) {
+ docbookHelp = DocConverter.htmlToDocBook(help);
+ } else {
+ docbookHelp = null;
+ }
+
+ return docbookHelp;
+ }
+
private void generateConfluenceResourceTypePages(ResourceType parentType,
Set<ResourceType> resourceTypes, File confluenceOutputDir,
Plugin plugin) {
VelocityTemplateProcessor confluenceResourceTypeTemplateProcessor = new
VelocityTemplateProcessor(
@@ -311,26 +325,63 @@ public class PluginDocGenerator {
storePage(confluence, pluginPage);
}
- private void generateDocBookContent(PluginDescriptorProcessor descriptorProcessor,
Set<ResourceType> resourceTypes,
+ private void generateDocbookContent(PluginDescriptorProcessor descriptorProcessor,
Set<ResourceType> resourceTypes,
File baseOutputDir) {
+ String pluginName = descriptorProcessor.getPluginDescriptor().getName();
+ System.out.println("Generating DocBook content for " + pluginName +
" plugin...");
+
File docbookBaseOutputDir = new File(baseOutputDir, "docbook");
File docbookOutputDir = new File(docbookBaseOutputDir,
descriptorProcessor.getPlugin().getName());
docbookOutputDir.mkdirs();
+ Plugin plugin = descriptorProcessor.getPlugin();
+ generateDocbookPluginPage(resourceTypes, docbookOutputDir, plugin);
+ generateDocbookResourceTypePages(null, resourceTypes, docbookOutputDir, plugin);
+ }
+
+ private File generateDocbookPluginPage(Set<ResourceType> resourceTypes, File
docBookOutputDir, Plugin plugin) {
+ if (plugin.getHelp() != null) {
+ String docBookHelp = getDocbookHelp(plugin.getHelpContentType(),
plugin.getHelp());
+ plugin.setHelpContentType("docbook");
+ plugin.setHelp(docBookHelp);
+ }
+
+ VelocityTemplateProcessor docbookPluginTemplateProcessor = new
VelocityTemplateProcessor(
+ DOCBOOK_PLUGIN_TEMPLATE_RESOURCE_PATH,
DOCBOOK_MACRO_LIBRARY_RESOURCE_PATH,
+ EscapeDocBookReference.class);
+
+ docbookPluginTemplateProcessor.getContext().put("rhqVersion",
RHQ_VERSION);
+ docbookPluginTemplateProcessor.getContext().put("plugin", plugin);
+ docbookPluginTemplateProcessor.getContext().put("resourceTypes",
resourceTypes);
+ String docbookOutputFileName = escapeFileName(getPageTitle(plugin) +
".xml");
+ File docbookPluginOutputFile = new File(docBookOutputDir,
docbookOutputFileName);
+ docbookPluginTemplateProcessor.processTemplate(docbookPluginOutputFile);
+
+ return docbookPluginOutputFile;
+ }
+
+ private void generateDocbookResourceTypePages(ResourceType parentType,
Set<ResourceType> resourceTypes,
+ File docbookOutputDir, Plugin plugin)
{
VelocityTemplateProcessor docbookTemplateProcessor = new
VelocityTemplateProcessor(
- DOCBOOK_TEMPLATE_RESOURCE_PATH, DOCBOOK_MACRO_LIBRARY_RESOURCE_PATH,
EscapeDocBookReference.class);
+ DOCBOOK_RESOURCE_TYPE_TEMPLATE_RESOURCE_PATH,
DOCBOOK_MACRO_LIBRARY_RESOURCE_PATH,
+ EscapeDocBookReference.class);
+ // Traverse the type tree depth first.
for (ResourceType resourceType : resourceTypes) {
String htmlHelpText = resourceType.getHelpText();
String docBookHelpText = DocConverter.htmlToDocBook(htmlHelpText);
resourceType.setHelpText(docBookHelpText);
- log.info("Generating Docbook content for " + resourceType + "
Resource type...");
+ System.out.println("Generating DocBook content for " + resourceType
+ " Resource type...");
docbookTemplateProcessor.getContext().put("resourceType",
resourceType);
- String docbookOutputFileName = escapeFileName(resourceType.getName() +
".xml");
+ String docbookOutputFileName = escapeFileName(getPageTitle(resourceType,
parentType) + ".xml");
File docbookOutputFile = new File(docbookOutputDir, docbookOutputFileName);
docbookTemplateProcessor.processTemplate(docbookOutputFile);
+
+ // Recurse on child types.
+ generateDocbookResourceTypePages(resourceType,
resourceType.getChildResourceTypes(), docbookOutputDir,
+ plugin);
}
}
diff --git a/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
b/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
new file mode 100644
index 0000000..7dc86dd
--- /dev/null
+++ b/modules/core/plugindoc/src/main/resources/plugin-doc-docbook.vm
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<section id="${plugin.displayName} Plugin">
+ <title>${plugin.displayName} Plugin</title>
+
+ <table>
+ <title>Basic Details</title>
+ <tgroup cols="2" align="left" colsep="1"
rowsep="1">
+ <tbody>
+ <row>
+ <entry>Internal Name:</entry>
+ <entry>${plugin.name}</entry>
+ </row>
+ <row>
+ <entry>Description:</entry>
+ <entry>$!{plugin.description}</entry>
+ </row>
+ <row>
+ <entry>Version:</entry>
+ <entry>${rhqVersion}</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+#if ( ${plugin.help} )
+ <bridgehead>Overview</bridgehead>
+
+ <para>${plugin.help}</para>
+#end
+
+#if ( !${resourceTypes.empty} )
+ <bridgehead>Resource Types</bridgehead>
+ <para>{children:all=true|style=h3}</para>
+#else
+ <para>This plugin does not define any Resource types. It it probably an
"abstract plugin", that is, one that
+ provides Resource components and/or discovery components that can be used by
other plugins.</para>
+#end
commit 4990d3896d4197e56274541d49902346abe97e22
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 12:54:04 2012 -0400
ensure tests run in a predictable order
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
index 9322b2d..005e900 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
@@ -148,7 +148,7 @@ public class AvailTest extends Arquillian {
}
}
- @Test(groups = "pc.itest.avail")
+ @Test(groups = "pc.itest.avail", priority = 20)
public void testDiscovery() throws Exception {
Assert.assertNotNull(pluginContainer);
Assert.assertTrue(pluginContainer.isStarted());
@@ -170,7 +170,7 @@ public class AvailTest extends Arquillian {
Assert.assertEquals(grandchildComponents2.size(), 8, "missing
grandchild2");
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
public void testAvailReport() throws Exception {
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
dumpContainers("testAvailReport() Start");
@@ -213,7 +213,7 @@ public class AvailTest extends Arquillian {
assertScan(scan, true, false, 29, 7, 23, 28, 0, 6);
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
public void testScheduling() throws Exception {
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
@@ -266,7 +266,7 @@ public class AvailTest extends Arquillian {
Assert.assertTrue(numBuckets >= 3, "Random distribution seems wrong,
buckets hit= " + numBuckets);
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
// If a parent changes to UP, its children must all be checked as they could
legitimately be something
// other than UP.
public void testForceChildrenOfParentUp() throws Exception {
@@ -330,7 +330,7 @@ public class AvailTest extends Arquillian {
assertScan(scan, false, false, 29, 14, 15, 12, 2, 0);
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
// If a parent changes to DOWN, its children should all defer to being DOWN as well.
public void testDeferToParentDown() throws Exception {
// don't use a ForceAvailabilityExecutor for this test, we want to manipulate
what gets checked
@@ -401,7 +401,7 @@ public class AvailTest extends Arquillian {
assertScan(scan, false, false, 29, 14, 3, 0, 2, 12);
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
public void testCheckOnlyEligible() throws Exception {
// Force all the avails to UP to start so we can avoid the scenario in
testForceChildrenOfParentUp()
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
@@ -466,7 +466,7 @@ public class AvailTest extends Arquillian {
assertScan(scan, false, false, 29, 0, 1, 0, 0, 0);
}
- @Test(groups = "pc.itest.avail", dependsOnMethods =
"testDiscovery")
+ @Test(groups = "pc.itest.avail", priority = 21)
public void testDeferToParent() throws Exception {
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
index 95379b9..474c5c9 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
@@ -97,7 +97,7 @@ public class DiscoveryTest extends Arquillian {
* @throws Exception if an error occurs
*/
@RunDiscovery
- @Test(groups = "pc.itest.discovery")
+ @Test(groups = "pc.itest.discovery", priority = 10)
public void testDiscoveryRunsOnlyOncePerType() throws Exception {
// make sure our inventory is as we expect it to be
validatePluginContainerInventory();
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index e9305fc..dcacd01 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -52,6 +52,7 @@ import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
*
* @author Ian Springer
*/
+@RunDiscovery
public class InventoryManagerTest extends Arquillian {
@Deployment(name = "test")
@@ -99,8 +100,7 @@ public class InventoryManagerTest extends Arquillian {
*
* @throws Exception if an error occurs
*/
- @Test(groups = "pc.itest.inventorymanager")
- @RunDiscovery
+ @Test(groups = "pc.itest.inventorymanager", priority = 1)
public void testSyncUnknownResources() throws Exception {
validatePluginContainerInventory();
@@ -130,7 +130,7 @@ public class InventoryManagerTest extends Arquillian {
*
* @throws Exception if an error occurs
*/
- @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources")
+ @Test(groups = "pc.itest.inventorymanager", priority = 1)
public void testUninventoryResources() throws Exception {
validatePluginContainerInventory();
@@ -164,10 +164,14 @@ public class InventoryManagerTest extends Arquillian {
Assert.assertNotNull(platform);
Assert.assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+ Assert.assertEquals(platform.getChildResources().size(), 1,
+ "platform child Resources: " + platform.getChildResources());
Resource server = platform.getChildResources().iterator().next();
Assert.assertNotNull(server);
Assert.assertEquals(server.getInventoryStatus(), InventoryStatus.COMMITTED);
+ Assert.assertEquals(server.getChildResources().size(), 1,
+ "server child Resources: " + server.getChildResources());
Resource service = server.getChildResources().iterator().next();
Assert.assertNotNull(service);
Assert.assertEquals(service.getInventoryStatus(), InventoryStatus.COMMITTED);
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/getnativeprocess/NativeProcessRetrievalTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/getnativeprocess/NativeProcessRetrievalTest.java
index 7df75d0..4170115 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/getnativeprocess/NativeProcessRetrievalTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/getnativeprocess/NativeProcessRetrievalTest.java
@@ -84,7 +84,7 @@ public class NativeProcessRetrievalTest extends Arquillian {
}
}
- @Test(groups = "pc.itest.native")
+ @Test(groups = "pc.itest.native", priority = 30)
public void testProcessInfoAccurateAfterProcessRestart() throws Exception {
Assert.assertEquals(components.size(), 1, "There should be exactly 1
resource discovered");
@@ -107,7 +107,7 @@ public class NativeProcessRetrievalTest extends Arquillian {
Assert.assertNotEquals(beforePid, afterPid, "The process info should have
refreshed");
}
- @Test(groups = "pc.itest.native")
+ @Test(groups = "pc.itest.native", priority = 30)
public void testProcessInfoAccurateWhenProcessStopped() throws Exception {
Assert.assertEquals(components.size(), 1, "There should be exactly 1
resource discovered");
@@ -131,7 +131,7 @@ public class NativeProcessRetrievalTest extends Arquillian {
startTestProcess();
}
- @Test(groups = "pc.itest.native")
+ @Test(groups = "pc.itest.native", priority = 30)
public void testProcessInfoAccurateAfterProcessStarted() throws Exception {
Assert.assertEquals(components.size(), 1, "There should be exactly 1
resource discovered");
@@ -161,4 +161,5 @@ public class NativeProcessRetrievalTest extends Arquillian {
Assert.assertEquals(afterDiscoveryCallCount, beforeDiscoveryCallCount + 1,
"Exactly 1 discovery call should have been made to refresh the process info after the
process started again.");
Assert.assertNotEquals(afterPid, 0, "The process info should have
refreshed");
}
+
}
commit 81711fb7e1a77e5717cdb4296157c2f3ef835ac5
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 12:53:23 2012 -0400
upgrade TestNG from 6.4 to 6.5.2
diff --git a/pom.xml b/pom.xml
index de04570..a660fa2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
<jna.version>3.2.5</jna.version>
<twitter4j.version>2.2.4</twitter4j.version>
<commons-codec.version>1.4</commons-codec.version>
- <testng.version>6.4</testng.version>
+ <testng.version>6.5.2</testng.version>
<cobertura.version>1.9.4.1</cobertura.version>
<augeas.version>0.9.0</augeas.version>
<augeas.classifier>el5</augeas.classifier>
commit f4c13d0d9f62d24274c620d1a53d2e5e4c9184a2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri May 25 12:20:59 2012 -0400
[BZ 820716] unit tests to test the search bar queries when using the availability
keyword
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/group/test/LargeGroupCriteriaTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/group/test/LargeGroupCriteriaTest.java
index 7cd09e6..93bb887 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/group/test/LargeGroupCriteriaTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/group/test/LargeGroupCriteriaTest.java
@@ -77,8 +77,9 @@ public class LargeGroupCriteriaTest extends LargeGroupTestBase {
* Remove the group and all its members.
*/
@AfterMethod(alwaysRun = true)
- public void afterMethod() throws Exception {
+ public void tearDownGroups() throws Exception {
if (env != null) {
+ System.out.println("Tearing down groups...");
Iterator<LargeGroupEnvironment> iter = env.iterator();
while (iter.hasNext()) {
LargeGroupEnvironment doomed = iter.next();
@@ -90,6 +91,55 @@ public class LargeGroupCriteriaTest extends LargeGroupTestBase {
}
@Test(enabled = TEST_ENABLED)
+ public void testSearchBarAvailabilityQueryUP() throws Exception {
+ GroupAvailCounts gac = new GroupAvailCounts(5, 0, 0, 0);
+ PageList<ResourceGroupComposite> pageList =
testGroupQueriesWithSearchBar(gac, "availability=up");
+ assert pageList.size() == 1;
+
+ tearDownGroups();
+ pageList = testGroupQueriesWithSearchBar(gac, "availability != up");
+ assert pageList.size() == 0;
+ }
+
+ @Test(enabled = TEST_ENABLED)
+ public void testSearchBarAvailabilityQueryDOWN() throws Exception {
+ GroupAvailCounts gac = new GroupAvailCounts(0, 5, 0, 0);
+ PageList<ResourceGroupComposite> pageList =
testGroupQueriesWithSearchBar(gac, "availability=down");
+ assert pageList.size() == 1;
+
+ tearDownGroups();
+ pageList = testGroupQueriesWithSearchBar(gac, "availability != down");
+ assert pageList.size() == 0;
+ }
+
+ @Test(enabled = TEST_ENABLED)
+ public void testSearchBarAvailabilityQueryDISABLED() throws Exception {
+ GroupAvailCounts gac = new GroupAvailCounts(0, 0, 0, 5);
+ PageList<ResourceGroupComposite> pageList =
testGroupQueriesWithSearchBar(gac, "availability=disabled");
+ assert pageList.size() == 1;
+
+ tearDownGroups();
+ pageList = testGroupQueriesWithSearchBar(gac, "availability !=
disabled");
+ assert pageList.size() == 0;
+ }
+
+ @Test(enabled = TEST_ENABLED)
+ public void testSearchBarAvailabilityQueryMIXED() throws Exception {
+ // when a group has a mix of up/down/disabled resources, it will not be returned
with the avail search expression
+ GroupAvailCounts gac = new GroupAvailCounts(2, 2, 0, 2);
+ PageList<ResourceGroupComposite> pageList =
testGroupQueriesWithSearchBar(gac, "availability=up");
+ assert pageList.size() == 0;
+
+ tearDownGroups();
+ pageList = testGroupQueriesWithSearchBar(gac, "availability=down");
+ assert pageList.size() == 0;
+
+ tearDownGroups();
+ pageList = testGroupQueriesWithSearchBar(gac,
"availability=disabled");
+ assert pageList.size() == 0;
+ }
+
+ @Test(enabled = TEST_ENABLED)
public void testUncommitted() throws Exception {
ArrayList<GroupAvailCounts> gacs = new
ArrayList<LargeGroupCriteriaTest.GroupAvailCounts>();
gacs.add(new GroupAvailCounts(1, 1, 1, 1, 1));
@@ -139,6 +189,30 @@ public class LargeGroupCriteriaTest extends LargeGroupTestBase {
testGroupQueries(gacs);
}
+ private PageList<ResourceGroupComposite>
testGroupQueriesWithSearchBar(GroupAvailCounts gac, String searchExpression)
+ throws Exception {
+ ResourceGroupManagerLocal groupManager = LookupUtil.getResourceGroupManager();
+
+ env = new ArrayList<LargeGroupEnvironment>(1);
+
+ LargeGroupEnvironment lgeWithTypes = null;
+ env.add(createLargeGroupWithNormalUserRoleAccessWithInventoryStatus(lgeWithTypes,
gac.total, gac.down,
+ gac.unknown, gac.disabled, gac.uncommitted, Permission.CONFIGURE_READ));
+
+ ResourceGroupCriteria criteria;
+ PageList<ResourceGroupComposite> pageList;
+ long start;
+
+ // test findResourceGroupCompositesByCriteria where the criteria will use the
search bar feature
+ SessionTestHelper.simulateLogin(env.get(0).normalSubject);
+ criteria = new ResourceGroupCriteria();
+ criteria.setSearchExpression(searchExpression);
+ start = System.currentTimeMillis();
+ pageList =
groupManager.findResourceGroupCompositesByCriteria(env.get(0).normalSubject, criteria);
+ System.out.println("criteria with search==>" +
(System.currentTimeMillis() - start) + "ms");
+ return pageList;
+ }
+
private void testGroupQueries(ArrayList<GroupAvailCounts> groupAvailCounts)
throws Exception {
ResourceGroupManagerLocal groupManager = LookupUtil.getResourceGroupManager();
AuthorizationManagerLocal authManager = LookupUtil.getAuthorizationManager();
@@ -166,7 +240,8 @@ public class LargeGroupCriteriaTest extends LargeGroupTestBase {
criteria = new ResourceGroupCriteria();
start = System.currentTimeMillis();
pageList =
groupManager.findResourceGroupCompositesByCriteria(lge.normalSubject, criteria);
- System.out.println("findResourceGroupCompositesByCriteria #" + i +
"==>" + (System.currentTimeMillis() - start) + "ms");
+ System.out.println("findResourceGroupCompositesByCriteria #" + i +
"==>"
+ + (System.currentTimeMillis() - start) + "ms");
assert pageList.size() == 1 : "the query should only have selected the
one group for our user";
groupComp = pageList.get(0);
System.out.println("-->" + groupComp);
@@ -176,7 +251,7 @@ public class LargeGroupCriteriaTest extends LargeGroupTestBase {
assert groupComp.getExplicitDown() == gac.down;
assert groupComp.getExplicitUnknown() == gac.unknown;
assert groupComp.getExplicitDisabled() == gac.disabled;
-
+
// mainly to help test when there are uncommitted resources in the group -
see BZ 820981
Resource committed = pickAResourceWithInventoryStatus(lge.platformResource,
InventoryStatus.COMMITTED);
assert true == authManager.hasResourcePermission(lge.normalSubject,
Permission.CONFIGURE_READ,
commit 569559b37fee14bf17c2e20de872cf365c1428b9
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 25 10:35:32 2012 -0400
[BZ 802003] fix bug in original fix, which caused embedded JVM's to never get
discovered (
https://bugzilla.redhat.com/show_bug.cgi?id=802003)
diff --git
a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/EmbeddedJMXServerDiscoveryComponent.java
b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/EmbeddedJMXServerDiscoveryComponent.java
index 9a5fb0d..bf456a1 100644
---
a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/EmbeddedJMXServerDiscoveryComponent.java
+++
b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/EmbeddedJMXServerDiscoveryComponent.java
@@ -29,6 +29,7 @@ import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jetbrains.annotations.Nullable;
import org.mc4j.ems.connection.EmsConnection;
import org.mc4j.ems.connection.bean.EmsBean;
import org.mc4j.ems.connection.bean.attribute.EmsAttribute;
@@ -77,15 +78,17 @@ public class EmbeddedJMXServerDiscoveryComponent implements
ResourceDiscoveryCom
return Collections.singleton(resourceDetails);
}
+ @Nullable
private EmsBean
getRuntimeMXBean(ResourceDiscoveryContext<JMXComponent<?>> context) {
EmsConnection emsConnection =
context.getParentResourceComponent().getEmsConnection();
- EmsBean runtimeMBean;
- if (emsConnection != null) {
+ if (emsConnection == null) {
log.debug("Parent EMS connection is null for [" +
context.getParentResourceContext().getResourceKey() + "] "
- + context.getParentResourceContext().getResourceType() + "
JVM.");
- runtimeMBean = emsConnection.getBean(ManagementFactory.RUNTIME_MXBEAN_NAME);
- } else {
- runtimeMBean = null;
+ + context.getParentResourceContext().getResourceType() +
" JVM.");
+ return null;
+ }
+
+ EmsBean runtimeMBean =
emsConnection.getBean(ManagementFactory.RUNTIME_MXBEAN_NAME);
+ if (runtimeMBean == null) {
log.debug("MBean [" + ManagementFactory.RUNTIME_MXBEAN_NAME +
"] not found for ["
+ context.getParentResourceContext().getResourceKey() + "]
"
+ context.getParentResourceContext().getResourceType() + "
JVM.");
commit f5ac59bf58ff39228790b4dbdcc59c7861cf0344
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri May 25 09:19:37 2012 -0500
[BZ 811288] Module property can be undefined for security subsystem's
subresources.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 54c1ca5..9fe561f 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -3013,7 +3013,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="Name of JBoss Module
where the acl provider module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -3060,7 +3060,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="Name of JBoss Module
where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -3088,7 +3088,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="Name of JBoss Module
where the auth module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
<c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="true"
description="Reference to a login module stack name previously configured in the same
security domain."/>
</c:map-property>
@@ -3115,7 +3115,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module"
required="false" type="string" readOnly="true"
description="Name of JBoss Module where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -3144,7 +3144,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module"
required="false" type="string" readOnly="true"
description="Name of JBoss Module where the policy module code is
located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -3172,7 +3172,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="Name of JBoss Module
where the identity trust module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -4212,7 +4212,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -4261,7 +4261,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -4290,7 +4290,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
<c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
</c:map-property>
@@ -4318,7 +4318,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -4348,7 +4348,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module"
required="false" type="string" readOnly="false"
description="Name of JBoss Module where the policy module code is
located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -4377,7 +4377,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -8106,7 +8106,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -8155,7 +8155,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -8184,7 +8184,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
<c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
</c:map-property>
@@ -8212,7 +8212,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -8242,7 +8242,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the policy module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
@@ -8271,7 +8271,7 @@
<c:option value="required"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
<c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
</c:map-property>
</c:list-property>
commit 1ee873f2e9eec7507e65f77e5aa70336c5beaa7e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 25 15:28:09 2012 +0200
BZ 811288 - If a property name ends in :expr, we need to set a displayName
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index c4371af..54c1ca5 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -2680,9 +2680,9 @@
<c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="true"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
<c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="true"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
<c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="true"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-singleton-bean-access-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="5000" description="The default access timeout for singleton
beans. The default value is 5000."/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
displayName="Default Singleton Bean Access Timeout" required="false"
type="string" readOnly="true" defaultValue="5000"
description="The default access timeout for singleton beans. The default value is
5000."/>
<c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="true"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
- <c:simple-property name="default-stateful-bean-access-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="5000" description="The default access timeout for stateful
beans. The default value is 5000."/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
displayName="Default Stateful Bean Access Timeout" required="false"
type="string" readOnly="true" defaultValue="5000"
description="The default access timeout for stateful beans. The default value is
5000."/>
<c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
</resource-configuration>
@@ -2708,7 +2708,7 @@
<c:simple-property name="time" required="true"
type="long" readOnly="true" description="The time"/>
<c:simple-property name="unit" required="true"
type="string" readOnly="true" description="The time
unit"/>
</c:map-property>
- <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="true"
description="The maximum thread pool size."/>
+ <c:simple-property name="max-threads:expr" displayName="Max
Threads" required="false" type="string" readOnly="true"
description="The maximum thread pool size."/>
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
<c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
</resource-configuration>
@@ -2725,12 +2725,12 @@
<resource-configuration>
<c:simple-property name="groups-path" required="false"
type="string" readOnly="true"
defaultValue="ejb3/groups"/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="true"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="true" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="true"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="relative-to" required="false"
type="string" readOnly="true"
defaultValue="jboss.server.data.dir"/>
<c:simple-property name="sessions-path" required="false"
type="string" readOnly="true"
defaultValue="ejb3/sessions"/>
- <c:simple-property name="subdirectory-count:expr"
required="false" type="string" readOnly="true"
defaultValue="100"/>
+ <c:simple-property name="subdirectory-count:expr"
displayName="Subdirectory Count" required="false"
type="string" readOnly="true" defaultValue="100"/>
</resource-configuration>
</service>
@@ -2744,8 +2744,8 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="true"
defaultValue="20" description="The maximum number of bean instances that
the pool can hold at a given point in time. The default value is 20."/>
- <c:simple-property name="timeout:expr" required="false"
type="string" readOnly="true" defaultValue="5"
description="The maximum amount of time to wait for a bean instance to be available
from the pool. The default value is 5."/>
+ <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="true" defaultValue="20" description="The maximum number
of bean instances that the pool can hold at a given point in time. The default value is
20."/>
+ <c:simple-property name="timeout:expr"
displayName="Timeout" required="false" type="string"
readOnly="true" defaultValue="5" description="The maximum amount
of time to wait for a bean instance to be available from the pool. The default value is
5."/>
<c:simple-property name="timeout-unit" required="false"
type="string" readOnly="true" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
</resource-configuration>
</service>
@@ -2780,9 +2780,9 @@
<c:simple-property name="bean-cache" required="false"
type="string" readOnly="true" description="The name of the cache
used to store bean instances."/>
<c:simple-property name="cache-container"
required="false" type="string" readOnly="true"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
<c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="true"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="true"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="true" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="true"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
</resource-configuration>
</service>
@@ -3898,9 +3898,9 @@
<c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
<c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="false"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
<c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-singleton-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for singleton
beans. The default value is 5000."/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
displayName="Default Singleton Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for singleton beans. The default value is
5000."/>
<c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
- <c:simple-property name="default-stateful-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for stateful
beans. The default value is 5000."/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
displayName="Default Stateful Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for stateful beans. The default value is
5000."/>
<c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
</resource-configuration>
@@ -3937,12 +3937,12 @@
<resource-configuration>
<c:simple-property name="groups-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/groups"/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="relative-to" required="false"
type="string" readOnly="false"
defaultValue="jboss.server.data.dir"/>
<c:simple-property name="sessions-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/sessions"/>
- <c:simple-property name="subdirectory-count:expr"
required="false" type="string" readOnly="false"
defaultValue="100"/>
+ <c:simple-property name="subdirectory-count:expr"
displayName="Subdirectory Count" required="false"
type="string" readOnly="false" defaultValue="100"/>
</resource-configuration>
</service>
@@ -3957,8 +3957,8 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="false"
defaultValue="20" description="The maximum number of bean instances that
the pool can hold at a given point in time. The default value is 20."/>
- <c:simple-property name="timeout:expr" required="false"
type="string" readOnly="false" defaultValue="5"
description="The maximum amount of time to wait for a bean instance to be available
from the pool. The default value is 5."/>
+ <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="false" defaultValue="20" description="The maximum
number of bean instances that the pool can hold at a given point in time. The default
value is 20."/>
+ <c:simple-property name="timeout:expr"
displayName="Timeout" required="false" type="string"
readOnly="false" defaultValue="5" description="The maximum amount
of time to wait for a bean instance to be available from the pool. The default value is
5."/>
<c:simple-property name="timeout-unit" required="false"
type="string" readOnly="false" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
</resource-configuration>
</service>
@@ -3995,9 +3995,9 @@
<c:simple-property name="bean-cache" required="false"
type="string" readOnly="false" description="The name of the cache
used to store bean instances."/>
<c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
<c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="false"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
</resource-configuration>
</service>
@@ -6920,8 +6920,8 @@
<c:simple-property name="log-journal-write-rate"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to periodically log the
journal's write rate and flush rate. The default value is false."/>
<c:simple-property name="management-address"
required="false" type="string" readOnly="false"
defaultValue="jms.queue.hornetq.management" description="Address to send
management messages to. The default value is jms.queue.hornetq.management."/>
<c:simple-property name="management-notification-address"
required="false" type="string" readOnly="false"
defaultValue="hornetq.notifications" description="The name of the address
that consumers bind to to receive management notifications. The default value is
hornetq.notifications."/>
- <c:simple-property name="memory-measure-interval:expr"
required="false" type="string" readOnly="false"
defaultValue="-1" description="Frequency to sample JVM memory in ms
(or -1 to disable memory sampling). The default value is -1."/>
- <c:simple-property name="memory-warning-threshold:expr"
required="false" type="string" readOnly="false"
defaultValue="25" description="Percentage of available memory which if
exceeded results in a warning log. The default value is 25."/>
+ <c:simple-property name="memory-measure-interval:expr"
displayName="Memory Measure Interval" required="false"
type="string" readOnly="false" defaultValue="-1"
description="Frequency to sample JVM memory in ms (or -1 to disable memory
sampling). The default value is -1."/>
+ <c:simple-property name="memory-warning-threshold:expr"
displayName="Memory Warning Threshold" required="false"
type="string" readOnly="false" defaultValue="25"
description="Percentage of available memory which if exceeded results in a warning
log. The default value is 25."/>
<c:simple-property name="message-counter-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether message counters are enabled. The
default value is false."/>
<c:simple-property name="message-counter-max-day-history"
required="false" type="integer" readOnly="false"
defaultValue="10" description="How many days to keep message counter
history. The default value is 10."/>
<c:simple-property name="message-counter-sample-period"
required="false" type="long" readOnly="false"
defaultValue="10000" description="The sample period (in ms) to use for
message counters. The default value is 10000."/>
@@ -6936,13 +6936,13 @@
<c:simple-property name="remoting-interceptors"/>
</c:list-property>
<c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
- <c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The number of threads that the main scheduled
thread pool has. The default value is 5."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The number of threads that the main scheduled thread pool has. The
default value is 5."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="false" defaultValue="other"
description="The security domain to use to verify user and role information. The
default value is other."/>
<c:simple-property name="security-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether security is enabled. The default
value is true."/>
<c:simple-property name="security-invalidation-interval"
required="false" type="long" readOnly="false"
defaultValue="10000" description="How long (in ms) to wait before
invalidating the security cache. The default value is 10000."/>
<c:simple-property name="server-dump-interval"
required="false" type="long" readOnly="false"
defaultValue="-1" description="How often to dump basic runtime
information to the server log. A value less than 1 disables this feature. The default
value is -1."/>
<c:simple-property name="shared-store" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Whether this server is using a shared store for failover. The default
value is true."/>
- <c:simple-property name="thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="30" description="The number of threads that the main thread
pool has. -1 means no limit. The default value is 30."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The number of threads that the main thread pool has. -1 means no
limit. The default value is 30."/>
<c:simple-property name="transaction-timeout"
required="false" type="long" readOnly="false"
defaultValue="300000" description="How long (in ms) before a transaction
can be removed from the resource manager after create time. The default value is
300000."/>
<c:simple-property name="transaction-timeout-scan-period"
required="false" type="long" readOnly="false"
defaultValue="1000" description="How often (in ms) to scan for timeout
transactions. The default value is 1000."/>
<c:simple-property name="wild-card-routing-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server supports wild card
routing. The default value is true."/>
@@ -8468,9 +8468,9 @@
<c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
<c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="false"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
<c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
- <c:simple-property name="default-singleton-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for singleton
beans. The default value is 5000."/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
displayName="Default Singleton Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for singleton beans. The default value is
5000."/>
<c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
- <c:simple-property name="default-stateful-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for stateful
beans. The default value is 5000."/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
displayName="Default Stateful Bean Access Timeout" required="false"
type="string" readOnly="false" defaultValue="5000"
description="The default access timeout for stateful beans. The default value is
5000."/>
<c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
</resource-configuration>
@@ -8514,12 +8514,12 @@
<resource-configuration>
<c:simple-property name="groups-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/groups"/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="relative-to" required="false"
type="string" readOnly="false"
defaultValue="jboss.server.data.dir"/>
<c:simple-property name="sessions-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/sessions"/>
- <c:simple-property name="subdirectory-count:expr"
required="false" type="string" readOnly="false"
defaultValue="100"/>
+ <c:simple-property name="subdirectory-count:expr"
displayName="Subdirectory count" required="false"
type="string" readOnly="false" defaultValue="100"/>
</resource-configuration>
</service>
@@ -8534,8 +8534,8 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="false"
defaultValue="20" description="The maximum number of bean instances that
the pool can hold at a given point in time. The default value is 20."/>
- <c:simple-property name="timeout:expr" required="false"
type="string" readOnly="false" defaultValue="5"
description="The maximum amount of time to wait for a bean instance to be available
from the pool. The default value is 5."/>
+ <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="false" defaultValue="20" description="The maximum
number of bean instances that the pool can hold at a given point in time. The default
value is 20."/>
+ <c:simple-property name="timeout:expr"
displayName="Timeout" required="false" type="string"
readOnly="false" defaultValue="5" description="The maximum amount
of time to wait for a bean instance to be available from the pool. The default value is
5."/>
<c:simple-property name="timeout-unit" required="false"
type="string" readOnly="false" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
</resource-configuration>
</service>
@@ -8572,9 +8572,9 @@
<c:simple-property name="bean-cache" required="false"
type="string" readOnly="false" description="The name of the cache
used to store bean instances."/>
<c:simple-property name="cache-container" required="false"
type="string" readOnly="false" defaultValue="ejb"
description="The name of the cache container used for the bean and client-mappings
caches. The default value is ejb."/>
<c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="false"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
- <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout:expr" displayName="Idle
Timeout" required="false" type="string"
readOnly="false" defaultValue="300" description="The timeout in
units specified by idle-timeout-unit, after which a bean will passivate. The default value
is 300."/>
<c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
- <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="max-size:expr" displayName="Max
Size" required="false" type="string" readOnly="false"
defaultValue="10000" description="The maximum number of beans this cache
should store before forcing old beans to passivate. The default value is
10000."/>
<c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
</resource-configuration>
</service>
@@ -9440,8 +9440,8 @@
<c:simple-property name="log-journal-write-rate"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to periodically log the
journal's write rate and flush rate. The default value is false."/>
<c:simple-property name="management-address"
required="false" type="string" readOnly="false"
defaultValue="jms.queue.hornetq.management" description="Address to send
management messages to. The default value is jms.queue.hornetq.management."/>
<c:simple-property name="management-notification-address"
required="false" type="string" readOnly="false"
defaultValue="hornetq.notifications" description="The name of the address
that consumers bind to to receive management notifications. The default value is
hornetq.notifications."/>
- <c:simple-property name="memory-measure-interval:expr"
required="false" type="string" readOnly="false"
defaultValue="-1" description="Frequency to sample JVM memory in ms
(or -1 to disable memory sampling). The default value is -1."/>
- <c:simple-property name="memory-warning-threshold:expr"
required="false" type="string" readOnly="false"
defaultValue="25" description="Percentage of available memory which if
exceeded results in a warning log. The default value is 25."/>
+ <c:simple-property name="memory-measure-interval:expr"
displayName="Memory Measure Interval" required="false"
type="string" readOnly="false" defaultValue="-1"
description="Frequency to sample JVM memory in ms (or -1 to disable memory
sampling). The default value is -1."/>
+ <c:simple-property name="memory-warning-threshold:expr"
displayName="Memory Warning Threshold" required="false"
type="string" readOnly="false" defaultValue="25"
description="Percentage of available memory which if exceeded results in a warning
log. The default value is 25."/>
<c:simple-property name="message-counter-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether message counters are enabled. The
default value is false."/>
<c:simple-property name="message-counter-max-day-history"
required="false" type="integer" readOnly="false"
defaultValue="10" description="How many days to keep message counter
history. The default value is 10."/>
<c:simple-property name="message-counter-sample-period"
required="false" type="long" readOnly="false"
defaultValue="10000" description="The sample period (in ms) to use for
message counters. The default value is 10000."/>
@@ -9456,13 +9456,13 @@
<c:simple-property name="remoting-interceptors"/>
</c:list-property>
<c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
- <c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The number of threads that the main scheduled
thread pool has. The default value is 5."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The number of threads that the main scheduled thread pool has. The
default value is 5."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="false" defaultValue="other"
description="The security domain to use to verify user and role information. The
default value is other."/>
<c:simple-property name="security-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether security is enabled. The default
value is true."/>
<c:simple-property name="security-invalidation-interval"
required="false" type="long" readOnly="false"
defaultValue="10000" description="How long (in ms) to wait before
invalidating the security cache. The default value is 10000."/>
<c:simple-property name="server-dump-interval"
required="false" type="long" readOnly="false"
defaultValue="-1" description="How often to dump basic runtime
information to the server log. A value less than 1 disables this feature. The default
value is -1."/>
<c:simple-property name="shared-store" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Whether this server is using a shared store for failover. The default
value is true."/>
- <c:simple-property name="thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="30" description="The number of threads that the main thread
pool has. -1 means no limit. The default value is 30."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The number of threads that the main thread pool has. -1 means no
limit. The default value is 30."/>
<c:simple-property name="transaction-timeout"
required="false" type="long" readOnly="false"
defaultValue="300000" description="How long (in ms) before a transaction
can be removed from the resource manager after create time. The default value is
300000."/>
<c:simple-property name="transaction-timeout-scan-period"
required="false" type="long" readOnly="false"
defaultValue="1000" description="How often (in ms) to scan for timeout
transactions. The default value is 1000."/>
<c:simple-property name="wild-card-routing-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server supports wild card
routing. The default value is true."/>
@@ -9842,8 +9842,8 @@
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
<c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
- <c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The scheduled thread pool max size. The
default value is 5."/>
- <c:simple-property name="thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="30" description="The thread pool max size. The default value
is 30."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
<c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
<c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to use global pools. The default
value is true."/>
</resource-configuration>
@@ -9887,10 +9887,10 @@
<c:simple-property name="group-id" required="false"
type="string" readOnly="false" description="The group
id."/>
<c:simple-property name="ha" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Whether the connection factory supports High Availability. The default
value is false."/>
<c:simple-property name="jndi-params" required="false"
type="string" readOnly="false" description="The JNDI params to
use for locating the destination for incoming connections."/>
- <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="false"
defaultValue="-1" description="The maximum size for the pool. The
default value is -1."/>
+ <c:simple-property name="max-pool-size:expr" displayName="Max
Pool Size" required="false" type="string"
readOnly="false" defaultValue="-1" description="The
maximum size for the pool. The default value is -1."/>
<c:simple-property name="max-retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The max retry interval. The default value
is 2000."/>
<c:simple-property name="min-large-message-size"
required="false" type="integer" readOnly="false"
defaultValue="102400" description="The min large message size. The default
value is 102400."/>
- <c:simple-property name="min-pool-size:expr"
required="false" type="string" readOnly="false"
defaultValue="-1" description="The minimum size for the pool. The
default value is -1."/>
+ <c:simple-property name="min-pool-size:expr" displayName="Min
Pool Size" required="false" type="string"
readOnly="false" defaultValue="-1" description="The
minimum size for the pool. The default value is -1."/>
<c:simple-property name="password" required="false"
type="string" readOnly="false" description="The default password
to use with this connection factory. This is only needed when pointing the connection
factory to a remote host."/>
<c:simple-property name="pre-acknowledge"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="True to pre-acknowledge. The
default value is false."/>
<c:simple-property name="producer-max-rate"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The producer max rate. The default
value is -1."/>
@@ -9898,10 +9898,10 @@
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="0" description="The reconnect attempts. The default value is
0."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The retry interval. The default value is
2000."/>
<c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="The retry interval multiplier. The default
value is 1.0."/>
- <c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The scheduled thread pool max size. The
default value is 5."/>
+ <c:simple-property name="scheduled-thread-pool-max-size:expr"
displayName="Scheduled Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="5"
description="The scheduled thread pool max size. The default value is 5."/>
<c:simple-property name="setup-attempts"
required="false" type="integer" readOnly="false"
description="The number of times to set up an MDB endpoint"/>
<c:simple-property name="setup-interval"
required="false" type="long" readOnly="false"
description="The interval between attempts at setting up an MDB endpoint."/>
- <c:simple-property name="thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="30" description="The thread pool max size. The default value
is 30."/>
+ <c:simple-property name="thread-pool-max-size:expr"
displayName="Thread Pool Max Size" required="false"
type="string" readOnly="false" defaultValue="30"
description="The thread pool max size. The default value is 30."/>
<c:simple-property name="transaction" required="false"
type="string" readOnly="false" defaultValue="transaction"
description="TODO. The default value is transaction."/>
<c:simple-property name="transaction-batch-size"
required="false" type="integer" readOnly="false"
defaultValue="1048576" description="The transaction batch size. The default
value is 1048576."/>
<c:simple-property name="use-global-pools"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="True to use global pools. The default
value is true."/>
commit c415055674a5d384d4abd7ffada3d1b1b7bbc178
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 25 14:08:45 2012 +0200
If we can't connect tell the user so (manually picked from 03c692ff88 )
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index af53314..ed716e1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -442,6 +442,10 @@ public abstract class BaseProcessDiscovery implements
ResourceDiscoveryComponent
ProductInfo productInfo = new ProductInfo(hostname, user, pass,
port).getFromRemote();
JBossProductType productType = productInfo.getProductType();
+ if (productType==null) {
+ throw new InvalidPluginConfigurationException("Can not connect to
[" + hostname + ":" + port + "] as user [" + user +"]. Did
you provide the correct credentials?");
+ }
+
HostPort hostPort = new HostPort(false);
HostPort managementHostPort = new HostPort(false);
managementHostPort.host = hostname;
commit ae8691518ef66d602b74046efa0f1395b2ce7162
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 25 11:43:51 2012 +0200
BZ 824878 Support crud on network interfaces
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index ace2a35..30fe82b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -359,6 +359,11 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
}
}
+ // Allow to modify the configuration coming in from the RHQ server see also
BZ 825120
+ if (report.getResourceType().getName().equals("Network Interface"))
{
+ Configuration configuration = report.getResourceConfiguration();
+
NetworkInterfaceComponent.preProcessCreateChildConfiguration(configuration);
+ }
CreateResourceDelegate delegate = new CreateResourceDelegate(configDef,
connection, address);
return delegate.createResource(report);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
index cf4749d..a2e6cc1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
@@ -426,6 +426,9 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
if (property.getStringValue() == null &&
!propertyDefinition.isRequired())
return;
+ if (property.getName().endsWith(":ignore")) // Caller takes care
+ return;
+
if (propertyDefinition.isReadOnly() && !createChildRequested)
return;
@@ -488,7 +491,8 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
entry = new SimpleEntry<String, Object>(realName, null);
}
} else {
- entry = new SimpleEntry<String, Object>(name,
property.getStringValue());
+ Object o = getObjectWithType(propertyDefinition,property.getStringValue());
+ entry = new SimpleEntry<String, Object>(name, o);
}
return entry;
@@ -632,6 +636,12 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
}
String val = (String) entry.getValue();
+ Object ret = getObjectWithType(pds, val);
+
+ return ret;
+ }
+
+ private Object getObjectWithType(PropertyDefinitionSimple pds, String val) {
PropertySimpleType type = pds.getType();
Object ret;
switch (type) {
@@ -656,7 +666,6 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
default:
ret= val;
}
-
return ret;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/CreateResourceDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/CreateResourceDelegate.java
index a7201a2..4f14ea6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/CreateResourceDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/CreateResourceDelegate.java
@@ -72,7 +72,7 @@ public class CreateResourceDelegate extends ConfigurationWriteDelegate
implement
PropertyDefinitionSimple propertyDefinition =
this.configurationDefinition
.getPropertyDefinitionSimple(propertySimple.getName());
- if (!propertyDefinition.isRequired() &&
propertySimple.getStringValue() == null) {
+ if (propertyDefinition==null || (!propertyDefinition.isRequired()
&& propertySimple.getStringValue() == null)) {
isEntryEligible = false;
} else {
entry = preparePropertySimple(propertySimple, propertyDefinition);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NetworkInterfaceComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NetworkInterfaceComponent.java
new file mode 100644
index 0000000..5440605
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NetworkInterfaceComponent.java
@@ -0,0 +1,93 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+
+/**
+ * Component classes for network interfaces
+ * @author Heiko W. Rupp
+ */
+public class NetworkInterfaceComponent extends
BaseComponent<NetworkInterfaceComponent> implements
+ ConfigurationFacet {
+
+ private static final String[] wildCards =
{"any-address","any-ipv4-address","any-ipv6-address"};
+ private static final String WILDCARD_IGNORE = "wildcard:ignore";
+
+ @Override
+ public Configuration loadResourceConfiguration() throws Exception {
+ Configuration configuration = super.loadResourceConfiguration();
+
+
+
+/* TODO revisit later BZ 825169
+ // We now need to get the any*address properties separately
+ for (String wildcard : wildCards) {
+ Boolean val = readAttribute(getAddress(),wildcard,Boolean.class);
+ if (val) {
+ PropertySimple wildCardProp = new
PropertySimple(WILDCARD_IGNORE,wildcard);
+ configuration.put(wildCardProp);
+ break;
+ }
+ }
+*/
+
+ return configuration;
+ }
+
+ @Override
+ public void updateResourceConfiguration(ConfigurationUpdateReport report) {
+
+ Configuration configuration = report.getConfiguration();
+ super.updateResourceConfiguration(report);
+ }
+
+ public static void preProcessCreateChildConfiguration(Configuration configuration) {
+
+ // Server is too stupid to accept all three any*address props for :add
+ // [standalone@localhost:9999 interface=test]
:add(any-address=true,any-ipv4-address=false,any-ipv6-address=false)
+ // {
+ // "outcome" => "failed",
+ // "failure-description" => "JBAS014690: any-address is
invalid",
+ // "rolled-back" => true
+ //}
+ // So we need to filter the false ones
+
+ for (String wildCard: wildCards) {
+ PropertySimple ps = configuration.getSimple(wildCard);
+ if (ps!=null && ps.getStringValue().equals("false"))
+ configuration.remove(wildCard);
+ }
+
+
+/* TODO revisit later BZ 825169
+ PropertySimple wildCardProp = configuration.getSimple(WILDCARD_IGNORE);//,
"any-address");
+ String tmp = wildCardProp.getStringValue();
+ for (String wildCard : wildCards) {
+ boolean val = wildCard.equals(tmp);
+ PropertySimple prop = new PropertySimple(wildCard,val);
+ configuration.put(prop);
+ }
+*/
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 9589865..c4371af 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -6159,8 +6159,10 @@
<service name="Network Interface"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A named network interface, along with required criteria for
determining the IP address to associate with that interface">
+ class="NetworkInterfaceComponent"
+ description="A named network interface, along with required criteria for
determining the IP address to associate with that interface"
+ createDeletePolicy="both"
+ >
<runs-inside>
<parent-resource-type name="JBossAS7 Host Controller"
plugin="&pluginName;"/>
@@ -6171,6 +6173,64 @@
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="interface"/>
</plugin-configuration>
+
+ <resource-configuration>
+
+ <c:simple-property name="inet-address" required="false"
type="string" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
the address matches the given value. Value is either a IP address in IPv6 or IPv4 dotted
decimal notation, or a hostname that can be resolved to an IP address. An
'undefined' value means this attribute is not relevant to the IP address
selection."/>
+
+ <c:group name="address" displayName="Wildcard selection (exactly
one property must be set to true)">
+ <c:simple-property name="any-address" required="true"
type="boolean" readOnly="false" default="true"
defaultValue="false"
+ description="Attribute indicating that sockets using this
interface should be bound to a wildcard address. The IPv6 wildcard address
(::) will be used unless the java.net.preferIpV4Stack system property is
set to true, in which case the IPv4 wildcard address (0.0.0.0) will be used. If a socket
is bound to an IPv6 anylocal address on a dual-stack machine, it can accept both
IPv6 and IPv4 traffic; if it is bound to an IPv4 (IPv4-mapped) anylocal address,
it can only accept IPv4 traffic."/>
+ <c:simple-property name="any-ipv4-address" required="true"
type="boolean" readOnly="false" default="false"
defaultValue="false"
+ description="Attribute indicating that sockets using this
interface should be bound to the IPv4 wildcard address (0.0.0.0)."/>
+ <c:simple-property name="any-ipv6-address" required="true"
type="boolean" readOnly="false" default="false"
defaultValue="false"
+ description="Attribute indicating that sockets using this
interface should be bound to the IPv6 wildcard address (::)."/>
+ </c:group>
+<!-- TODO revisit later BZ 825169
+ <c:simple-property name="wildcard:ignore" displayName="Address
family selection" defaultValue="any-address"
default="any-address"
+ description="Attribute indicating that sockets using this interface should
be bound to a wildcard address. If set to 'Any', the IPv6 wildcard address
(::) will be used unless the java.net.preferIpV4Stack system property is
set to true, in which case the IPv4 wildcard address (0.0.0.0) will be used. If a socket
is bound to an IPv6 anylocal address on a dual-stack machine, it can accept both
IPv6 and IPv4 traffic; if it is bound to an IPv4 (IPv4-mapped) anylocal address,
it can only accept IPv4 traffic.">
+ <c:property-options>
+ <c:option value="any-address" name="Any"/>
+ <c:option value="any-ipv4-address" name="Any IPv4"/>
+ <c:option value="any-ipv6-address" name="Any IPv6"/>
+ </c:property-options>
+ </c:simple-property>
+-->
+
+ <c:group name="advanced" displayName="Advanced settings"
hiddenByDefault="true">
+ <c:simple-property name="link-local-address"
required="false" type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
the address is link-local. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection."/>
+ <c:simple-property name="loopback" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
it is a loopback address. An 'undefined' or 'false'
value means this attribute is not relevant to the IP address selection."/>
+ <c:simple-property name="loopback-address"
required="false" type="string" readOnly="false"
+ description="Attribute indicating that the IP address for
this interface should be the given value, if a loopback interface exists on the machine. A
'loopback address' may not actually be configured on the
machine's loopback interface. Differs from inet-address in that the given
value will be used even if no NIC can be found that has the IP specified address
associated with it. An 'undefined' or 'false' value
means this attribute is not relevant to the IP address selection."/>
+
+ <c:simple-property name="multicast" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
its network interface supports multicast. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection."/>
+
+
+ <c:simple-property name="nic" required="false"
type="string" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether its
network interface has the given name. The name of a network interface (e.g. eth0, eth1,
lo). An 'undefined' value means this attribute is not relevant to the IP
address selection."/>
+
+ <c:simple-property name="nic-match" required="false"
type="string" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether its
network interface has a name that matches the given regular expression. Value is a regular
expression against which the names of the network interfaces available on the machine can
be matched to find an acceptable interface. An 'undefined' value means
this attribute is not relevant to the IP address selection."/>
+
+ <c:simple-property name="point-to-point" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
its network interface is a point-to-point interface. An
'undefined' or 'false' value means this attribute is
not relevant to the IP address selection"/>
+ <c:simple-property name="public-address" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or not
it is a publicly routable address. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection"/>
+ <c:simple-property name="site-local-address"
required="false" type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or it
is a site-local address. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection"/>
+ <c:simple-property name="subnet-match" required="false"
type="string" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether or it
the address fits in the given subnet definition. Value is a network IP address and the
number of bits in the address' network prefix, written in 'slash
notation'; e.g. '192.168.0.0/16'. An
'undefined' value means this attribute is not relevant to the IP address
selection."/>
+
+ <c:simple-property name="up" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether its
network interface is currently up. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection"/>
+ <c:simple-property name="virtual" required="false"
type="boolean" readOnly="false"
+ description="Attribute indicating that part of the
selection criteria for choosing an IP address for this interface should be whether its
network interface is a virtual interface. An 'undefined' or
'false' value means this attribute is not relevant to the IP address
selection"/>
+ </c:group>
+ </resource-configuration>
</service>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
index ae35eae..ba2f13c 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
@@ -368,7 +368,8 @@ public class ConfigurationUpdatingTest extends
AbstractConfigurationHandlingTest
assert
step1.getAdditionalProperties().get("name").equals("test-prop");
assert
step1.getAdditionalProperties().get("value").equals("Heiko");
assert
step2.getAdditionalProperties().get("name").equals("check-interval");
- assert
step2.getAdditionalProperties().get("value").equals("23");
+ assert step2.getAdditionalProperties().get("value").equals(23);
+ assert step3.getAdditionalProperties().get("value").equals(true);
}
@@ -583,7 +584,7 @@ public class ConfigurationUpdatingTest extends
AbstractConfigurationHandlingTest
additionalProperties = cop.step(2).getAdditionalProperties();
assert additionalProperties.get("name").equals("bar");
- assert additionalProperties.get("value").equals("456");
+ assert additionalProperties.get("value").equals(456);
}
@@ -796,12 +797,12 @@ public class ConfigurationUpdatingTest extends
AbstractConfigurationHandlingTest
}
- /** Tests that c:group entries are updated correctly in addition to special c:group
syntax handling.
+ /** Tests that c:group entries are updated correctly in addition to special c:group
syntax handling.
* Ex. <c:group name="proxy" displayName="Proxy Options">
* <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
* <c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
* </c:group>
- *
+ *
* @throws Exception
*/
public void testUpdateGroupConfiguration() throws Exception {
@@ -843,4 +844,22 @@ public class ConfigurationUpdatingTest extends
AbstractConfigurationHandlingTest
+ "' was not updated correctly. Expected '" +
properties.get(name) + "' but was '" + value + "'.";
}
}
+
+ public void testIgnoreProperty() throws Exception {
+ ConfigurationDefinition definition = loadDescriptor("testIgnore");
+
+ Configuration configuration = new Configuration();
+
+ configuration.put(new
PropertySimple("normal","0xdeadbeef"));
+ configuration.put(new PropertySimple("test:ignore","Hello
world!")); // should not create a step
+
+ FakeConnection connection = new FakeConnection();
+
+ ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(definition,
connection, null);
+ CompositeOperation cop =
delegate.updateGenerateOperationFromProperties(configuration, new Address());
+
+ assert cop != null;
+ assert cop.numberOfSteps() == 1 : "One step was expected, but got " +
cop.numberOfSteps();
+
+ }
}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
index 8959b24..4350230 100644
--- a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
@@ -166,6 +166,14 @@
</resource-configuration>
</server>
+ <server class="foo" discovery="foo"
name="testIgnore">
+
+ <resource-configuration>
+ <c:simple-property name="normal" readOnly="false"/>
+ <c:simple-property name="test:ignore" readOnly="false"
required="false"/>
+ </resource-configuration>
+ </server>
+
<server class="foo" discovery="foo"
name="listOfSimple1">
<resource-configuration>
@@ -281,12 +289,12 @@
</c:group>
</resource-configuration>
</server>
-
+
<!-- Simple c:group entries from descriptor with no special handling. -->
<service name="simpleGroupNoSpecial"
class="BaseComponent"
discovery="SubsystemDiscovery"
- description="simple grouped properties. No special handling"
+ description="simple grouped properties. No special handling"
singleton="true">
<resource-configuration>
<c:group name="proxy" displayName="Proxy Options">
@@ -302,21 +310,21 @@
<!--<c:option-source target="resource"
expression="type=Connector plugin=&pluginName;"/>-->
</c:simple-property>
</c:group>
- </resource-configuration>
- </service>
+ </resource-configuration>
+ </service>
<!-- Same as previous but for update. -->
<service name="simpleGroupNoSpecialUpdate"
class="BaseComponent"
discovery="SubsystemDiscovery"
- description="simple grouped properties. No special handling"
+ description="simple grouped properties. No special handling"
singleton="true">
<resource-configuration>
<c:group name="proxy" displayName="Proxy Options">
<c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
<c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
</c:group>
- </resource-configuration>
+ </resource-configuration>
</service>
</plugin>
\ No newline at end of file
commit acc5f0a08049440b70441fda1d591e225f2156ab
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri May 25 01:07:16 2012 -0500
[BZ 811288] Updated various subsystems to match the definition for stanadlone,
profile, and managed server. Where applicable a single resource definition was split into
two or three resources based on the parent type and available properties, metrics, and
operations.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index aeb3112..9589865 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -1623,11 +1623,11 @@
<c:option value="object-factory"/>
</c:property-options>
</c:simple-property>
- <c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
- <c:simple-property name="lookup" required="false"
type="string" readOnly="false" description="The entry to lookup
in JNDI for lookup bindings"/>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module to load
the object factory from for object factory bindings"/>
- <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
- <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value to bind for
simple bindings"/>
+ <c:simple-property name="class" required="false"
type="string" readOnly="true" description="The object factory
class name for object factory bindings"/>
+ <c:simple-property name="lookup" required="false"
type="string" readOnly="true" description="The entry to lookup in
JNDI for lookup bindings"/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="The module to load the
object factory from for object factory bindings"/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
+ <c:simple-property name="value" required="false"
type="string" readOnly="true" description="The value to bind for
simple bindings"/>
</resource-configuration>
</service>
</service>
@@ -2067,168 +2067,2405 @@
</service>
</service>
- </server>
+ <service name="JBossWeb (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
- <service name="Profile"
- description="A profile in a domain. Profiles are assigned to server
groups."
- discovery="SubsystemDiscovery"
- class="BaseComponent">
+ <resource-configuration>
+ <c:simple-property name="default-virtual-server"
required="true" type="string" readOnly="true"
defaultValue="default-host" description="The web container's default
virtual server. The default value is default-host.">
+ <c:option-source target="resource" expression="type=VHost
plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="instance-id" readOnly="true"
required="false" type="string" description="The identifier for
this server instance."/>
+ <c:simple-property name="native" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Add the native initialization listener to the web container. The default
value is true."/>
+
+ <c:group name="child:configuration=static-resources"
displayName="Static Resources">
+ <c:simple-property name="disabled:0" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable the default Servlet mapping. The default value is
false."/>
+ <c:simple-property name="file-encoding" required="false"
readOnly="true" description="Force a file encoding."
type="string"/>
+ <c:simple-property name="listings" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable folder listings. The default value is false."/>
+ <c:simple-property name="max-depth" required="false"
type="integer" readOnly="true" defaultValue="3"
description="Maximum recursion for PROPFIND. The default value is 3."/>
+ <c:simple-property name="read-only" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Allow write HTTP methods (PUT, DELETE). The default value is
true."/>
+ <c:simple-property name="sendfile" required="false"
type="integer" readOnly="true" defaultValue="49152"
description="Enable sendfile if possible, for files bigger than the specified byte
size. The default value is 49152."/>
+ <c:simple-property name="secret" required="false"
type="string" readOnly="true" description="Secret for WebDAV
locking operations."/>
+ <c:simple-property name="webdav" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable WebDAV functionality. The default value is false."/>
+ </c:group>
+ <c:group name="child:configuration=jsp-configuration"
displayName="JSP Configuration">
+ <c:simple-property name="check-interval"
required="false" type="integer" readOnly="true"
defaultValue="0" description="Check interval for JSP updates using a
background thread. The default value is 0."/>
+ <c:simple-property name="development" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable the development mode, which gives more information when an error
occurs. The default value is false."/>
+ <c:simple-property name="disabled:1" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable the JSP container. The default value is false."/>
+ <c:simple-property name="display-source-fragment"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="When a runtime error occurs, attempts to
display corresponding JSP source fragment. The default value is true."/>
+ <c:simple-property name="dump-smap" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Write SMAP data to a file. The default value is false."/>
+ <c:simple-property
name="error-on-use-bean-invalid-class-attribute" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable errors when using a bad class in useBean. The default value is
false."/>
+ <c:simple-property name="generate-strings-as-char-arrays"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Generate String constants as char arrays.
The default value is false."/>
+ <c:simple-property name="java-encoding" required="false"
type="string" readOnly="true" defaultValue="UTF8"
description="Specify the encoding used for Java sources. The default value is
UTF8."/>
+ <c:simple-property name="keep-generated"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Keep the generated Servlets. The default
value is true."/>
+ <c:simple-property name="mapped-file" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Map to the JSP source. The default value is true."/>
+ <c:simple-property name="modification-test-interval"
required="false" type="integer" readOnly="true"
defaultValue="4" description="Minimum amount of time between two tests for
updates, in seconds. The default value is 4."/>
+ <c:simple-property name="recompile-on-fail"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Retry failed JSP compilations on each
request. The default value is false."/>
+ <c:simple-property name="scratch-dir" required="false"
type="string" readOnly="true" description="Specify a different
work directory."/>
+ <c:simple-property name="smap" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Enable SMAP. The default value is true."/>
+ <c:simple-property name="source-vm" required="false"
type="string" readOnly="true" defaultValue="1.5"
description="Source VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="tag-pooling" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Enable tag pooling. The default value is true."/>
+ <c:simple-property name="target-vm" required="false"
type="string" readOnly="true" defaultValue="1.5"
description="Target VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="trim-spaces" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Trim some spaces from the generated Servlet. The default value is
false."/>
+ <c:simple-property name="x-powered-by" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Enable advertising the JSP engine in x-powered-by. The default value is
true."/>
+ </c:group>
+ <c:group name="child:configuration=container"
displayName="Container">
+ <!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
+ <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false">
+ <c:map-property name="mime-mapping:collapsed">
+ <c:simple-property name="name:0"
displayName="Name" description="A MIME mapping name without the dot (e.g.
'txt')"/>
+ <c:simple-property name="value:1"
displayName="Value" description="A MIME mapping value (e.g.
'text/plain' )"/>
+ </c:map-property>
+ </c:list-property>
+ -->
+ <c:list-property name="welcome-file" required="false"
readOnly="true" description="A welcome file declaration.">
+ <c:simple-property name="welcome-file" type="string"
readOnly="true"/>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
- <plugin-configuration>
- <c:simple-property name="path" default="profile"
readOnly="true"/>
- </plugin-configuration>
+ <service name="Connector (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="WebConnectorComponent">
- <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
- list is different. Update similar Standalone service if changes are necessary.
-->
- <service name="ModCluster Domain Service"
- class="ModClusterComponent"
- discovery="ModClusterDiscoveryComponent"
- description="Mod_cluster support"
- singleton="true">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
+ </plugin-configuration>
+
+ <metric property="bytesSent" measurementType="trendsup"
description="Number of byte sent by the connector."/>
+ <metric property="bytesReceived"
measurementType="trendsup" description="Number of byte received by the
connector (POST data)."/>
+ <metric property="processingTime"
measurementType="trendsup" units="milliseconds"
description="Processing time used by the connector. Im milli-seconds."/>
+ <metric property="errorCount" measurementType="trendsup"
displayType="summary" description="Number of error that occurs when
processing requests by the connector."/>
+ <metric property="maxTime" units="milliseconds"
description="Max time spent to process a requests."/>
+ <metric property="requestCount" measurementType="trendsup"
displayType="summary" description="Number of the request processed by the
connector."/>
+ <metric property="_maxConnections" displayName="Max
connections" description="Number of max connections this connector can handle
(see configuration to set it)" defaultOn="true"
defaultInterval="14400000"/>
+
+ <resource-configuration>
+ <c:simple-property name="scheme" required="true"
type="string" readOnly="true" description="The web connector
scheme.">
+ <c:property-options>
+ <c:option value="http"/>
+ <c:option value="https"/>
+ <c:option value="ajp"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="socket-binding" required="true"
type="string" readOnly="true" description="The web connector
socket-binding reference, this connector should be bound to.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Defines whether the connector should be started on startup. The default
value is true."/>
+ <c:simple-property name="enable-lookups"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Enable DNS lookups for Servlet API. The
default value is false."/>
+ <c:simple-property name="executor" required="false"
type="string" readOnly="true" description="The name of the
executor that should be used for the processing threads of this connector. If undefined
defaults to using an internal pool."/>
+ <c:simple-property name="max-connections"
required="false" type="integer" readOnly="true"
description="Amount of concurrent connections that can be processed by the connector
with optimum performance. The default value depends on the connector used and the number
of cpu cores (512*cores for HTTP, 32*cores for AJP)."/>
+ <c:simple-property name="max-post-size" required="false"
type="integer" readOnly="true" defaultValue="2097152"
description="Maximum size in bytes of a POST request that can be parsed by the
container. The default value is 2097152."/>
+ <c:simple-property name="max-save-post-size"
required="false" type="integer" readOnly="true"
defaultValue="4096" description="Maximum size in bytes of a POST request
that will be saved during certain authentication schemes. The default value is
4096."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique name for the
connector."/>
+ <c:simple-property name="protocol" required="true"
type="string" readOnly="true" default="HTTP/1.1"
defaultValue="HTTP/1.1" description="The web connector protocol. (e.g.
'HTTP/1.1' or 'AJP' or a name of a class implementing ProtocolHandler and
MBeanRegistration )">
+ <!-- TODO let the user could enter a custom value here when the UI
supports this. -->
+ <c:property-options>
+ <c:option value="HTTP/1.1"/>
+ <c:option value="AJP/1.3"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="proxy-name" required="false"
type="string" readOnly="true" description="The host name that
will be used when sending a redirect. The default value is null."/>
+ <c:simple-property name="proxy-port" required="false"
type="integer" readOnly="true" description="The port that will be
used when sending a redirect."/>
+ <c:simple-property name="redirect-port" required="false"
type="integer" readOnly="true" defaultValue="8433"
description="The port for redirection to a secure connector. The default value is
8433."/>
+ <c:simple-property name="secure" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Indicates if content sent or received by the connector is secured from
the user perspective. The default value is false."/>
+ <c:simple-property name="virtual-server"
required="false" type="string" readOnly="true"
description="The list of virtual servers that can be accessed through this connector.
The default is to allow all virtual servers."/>
+
+ <c:group name="child:ssl=configuration:enabled=secure=true"
displayName="SSL Configuration">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="true"
required="false">
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="true"
description="Certificate authority."/>
+ <c:simple-property name="ca-certificate-password"
required="false" type="string" readOnly="true"
description="Certificate password."/>
+ <c:simple-property name="ca-revocation-url"
required="false" type="string" readOnly="true"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-file"
required="false" type="string" readOnly="true"
description="Server certificate file. If the value is not given, ~/.keystore is the
default"/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="true"
description="Key file for the certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="true"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="true" description="The key
alias."/>
+ <c:simple-property name="keystore-type"
required="false" type="string" readOnly="true"
description="Type of the keystore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The configuration
name."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="true" description="The SSL protocols that
are enabled." default="ALL" defaultValue="ALL">
+ <c:property-options>
+ <c:option value="SSLv2"/>
+ <c:option value="SSLv3"/>
+ <c:option value="TLSv1"/>
+ <c:option value="SSLv2+SSLv3"/>
+ <c:option value="ALL"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="session-cache-size"
required="false" type="integer" readOnly="true"
description="SSL session cache."/>
+ <c:simple-property name="session-timeout"
required="false" type="integer" readOnly="true"
description="SSL session cache timeout."/>
+ <c:simple-property name="truststore-type"
required="false" type="string" readOnly="true"
description="Type of the truststore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="verify-client"
required="false" type="string" readOnly="true"
description="Enable client certificate verification."/>
+ <c:simple-property name="verify-depth"
required="false" type="integer" readOnly="true"
description="Limit certificate nesting."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+
+ <service name="VHost (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="VHostComponent">
<plugin-configuration>
- <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
+ <c:simple-property name="path" readOnly="true"
default="virtual-server"/>
</plugin-configuration>
- <service name="Domain Service Configuration"
+ <metric property="_aliases" dataType="trait"
defaultOn="true" description="Aliases for this virtual host"/>
+
+ <resource-configuration>
+ <c:list-property name="alias" readOnly="true"
description="The virtual server aliases" displayName="Virtual server
aliases">
+ <c:simple-property name="alias" readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="default-web-module"
type="string" defaultValue="ROOT.war" readOnly="true"
description="The web module deployment name that will be mapped as the root
webapp."/>
+ <c:simple-property name="enable-welcome-root"
type="boolean" defaultValue="false" readOnly="true"
description="Whether or not the bundled welcome directory is used as the root web
context. The default value is false."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique virtual host
name"/>
+
+ <c:group name="child:sso=configuration" displayName="The SSO
configuration for this virtual server.">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="true"
required="false">
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="true"
description="Enables clustered SSO using the specified clustered cache
container.">
+ <c:option-source target="resource"
expression="type='Cache Container' plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="cache-name"
required="false" type="string" readOnly="true"
description="Name of the cache to use in the cache container."/>
+ <c:simple-property name="domain" required="false"
type="string" readOnly="true" description="The cookie domain that
will be used."/>
+ <c:simple-property name="reauthenticate"
required="false" type="boolean" readOnly="true"
description="Enables reauthentication with the realm when using SSO."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Rewrite Rules (Managed Server)"
discovery="SubsystemDiscovery"
- class="ModClusterComponent">
+ description="A list of rewrite rules that will be processed in
order on the URL or vhost specified in the request. Those follow the rules for
mod_rewrite. Please consult the manual for help on settings"
+ class="BaseComponent">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ <c:simple-property name="path" readOnly="true"
default="rewrite"/>
</plugin-configuration>
- &modclusterSharedOpsConfig;
+ <resource-configuration>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="true" description="Option flags for this
rewrite rule. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern" required="true"
type="string" readOnly="true" description="The pattern that will
be matched. Consult the mod_rewrite docs."/>
+ <c:simple-property name="substitution" required="true"
type="string" readOnly="true" description="The string that will
replace the original URL or vhost. Consult the mod_rewrite docs."/>
+ <!-- embedded condition children - commented out for the moment -->
+ <c:group name="children:condition:name+"
displayName="Rewrite conditions">
+ <c:list-property name="*1" displayName="Conditions"
required="false" readOnly="true">
+ <c:map-property name="*:name" displayName="Name"
readOnly="true">
+ <c:simple-property name="name" required="true"
readOnly="true" displayName="Condition-Name"/>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="true" description="Option flags for this
condition. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern"
required="true" type="string" readOnly="true"
description="The pattern to match. Consult the mod_rewrite docs."/>
+ <c:simple-property name="test" required="true"
type="string" readOnly="true" description="Test pattern for the
condition. Consult the mod_rewrite docs."/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+ </service>
- <service name="Domain Dynamic Load Provider"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <service name="Access Log (Managed Server)"
+ discovery="SubsystemDiscovery"
+ description="The access log configuration for this virtual
server."
+ class="BaseComponent"
+ singleton="true">
- <runs-inside>
- <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
- </runs-inside>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="access-log=configuration"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
- </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="extended" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable extended pattern, with more options. The default value is
false."/>
+ <c:simple-property name="pattern" required="false"
type="string" readOnly="true" defaultValue="common"
description="The access log pattern. The default value is common."/>
+ <c:simple-property name="prefix" required="false"
type="string" readOnly="true" defaultValue="false"
description="Prefix for the log file name. The default value is false."/>
+ <c:simple-property name="resolve-hosts"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Host resolution. The default value is
false."/>
+ <c:simple-property name="rotate" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Rotate the access log every day. The default value is true."/>
+
+ <c:group name="child:directory=configuration"
displayName="The location for the access logging.">
+ <c:simple-property name="path" required="false"
type="string" readOnly="true" description="The relative folder
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="true"
defaultValue="jboss.server.log.dir" description="The folder the path is
relative to. The default value is jboss.server.log.dir."/>
+ </c:group>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
- <resource-configuration>
- <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
- <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
- </resource-configuration>
+ <service name="JCA (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The Java EE Connector Architecture (JCA) subsystem
providing general configuration for resource adapters"
+ singleton="true">
- <service name="Domain Custom Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jca"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
- </plugin-configuration>
+ <resource-configuration>
+ <c:group name="child:bean-validation=bean-validation"
displayName="Bean validation (JSR-303) for resource adapters.">
+ <c:simple-property name="enabled:1" required="false"
type="boolean" readOnly="true" defaultValue="true"
displayName="Enabled" description="Specify whether bean validation is
enabled. The default value is true."/>
+ </c:group>
+ <c:group name="child:archive-validation=archive-validation"
displayName="Archive validation for resource adapters.">
+ <c:simple-property name="enabled:2" required="false"
type="boolean" readOnly="true" defaultValue="true"
displayName="Enabled" description="Specify whether archive validation is
enabled. The default value is true."/>
+ <c:simple-property name="fail-on-error" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Should an archive validation error report fail the deployment. The
default value is true."/>
+ <c:simple-property name="fail-on-warn" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Should an archive validation warning report fail the deployment. The
default value is false."/>
+ </c:group>
+ <c:group
name="child:cached-connection-manager=cached-connection-manager"
displayName="Cached connection manager for resource adapters.">
+ <c:simple-property name="debug" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable/disable debug information logging. The default value is
false."/>
+ <c:simple-property name="error" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable/disable error information logging. The default value is
false."/>
+ <c:simple-property name="install" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable/disable the cached connection manager valve and interceptor. The
default value is false."/>
+ </c:group>
+ </resource-configuration>
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
- <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
- </service><!-- End of custom-load-metric service -->
+ <service name="BootstrapContext (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Bootstrap context for resource adapters.">
- <service name="Domain Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bootstrap-context"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="load-metric"/>
- </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
BootstrapContext"/>
+ <c:simple-property name="workmanager" required="false"
type="string" readOnly="true" description="The WorkManager
instance for the BootstrapContext">
+ <c:option-source target="resource"
expression="type=Workmanager plugin=&pluginName;"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
- <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
- <c:property-options>
- <c:option value="busyness"/>
- <c:option value="cpu" />
- <c:option value="heap"/>
- <c:option value="mem"/>
- <c:option value="requests"/>
- <c:option value="receive-traffic"/>
- <c:option value="send-traffic"/>
- <c:option value="sessions"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
- </service><!-- End of load-metric service -->
- </service><!-- End of dynamic-load-provider service -->
+ <service name="Workmanager (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="WorkManager for resource adapters.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="workmanager"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
WorkManager"/>
+ </resource-configuration>
+
+ <service name="Long Running Thread Pool (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Long running thread pool executor with a bounded queue
where threads submitting tasks may block.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="long-running-threads"/>
+ </plugin-configuration>
+
+ <metric property="current-thread-count" description="The
current number of threads in the pool."/>
+ <metric property="keepalive-time:time" description="The
time"/>
+ <metric property="largest-thread-count" description="The
largest number of threads that have ever simultaneously been in the pool."/>
+ <metric property="rejected-count" description="The number of
tasks that have been passed to the handoff-executor (if one is specified) or
discarded."/>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="true"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="true"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="true" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="true" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="true"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="true"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Short Running Thread Pool (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Short running thread pool executor with a bounded
queue where threads submitting tasks may block.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="short-running-threads"/>
+ </plugin-configuration>
+
+ <metric property="current-thread-count" description="The
current number of threads in the pool."/>
+ <metric property="keepalive-time:time" description="The
time"/>
+ <metric property="largest-thread-count" description="The
largest number of threads that have ever simultaneously been in the pool."/>
+ <metric property="rejected-count" description="The number of
tasks that have been passed to the handoff-executor (if one is specified) or
discarded."/>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="true"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="true"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
readOnly="true" displayName="Keepalive Time" description="Used to
specify the amount of time that pool threads should be kept running when idle; if not
specified, threads will run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="true" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="true" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="true"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="true"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="Osgi (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The OSGi subsystem configuration."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:activate" displayName="Activate"
description="Activate the OSGi subsystem.">
+ <results>
+ <c:simple-property name="operationResult"
description="Activate the OSGi subsystem."/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="activation" required="false"
type="string" readOnly="true" defaultValue="LAZY"
description="Activation flag for the OSGi subsystem. Possible values: lazy, eager.
The default value is LAZY."/>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="false" description="The current Start
Level of the OSGi Framework. Changing this value will change the Start Level of the
Framework accordingly."/>
+ </resource-configuration>
+
+ <service name="Capability (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="capability"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The startlevel for
the capability. Can only be specified for OSGi bundles."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Bundle (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Runtime bundle information.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bundle"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:start" displayName="Start"
description="Starts the bundle.">
+ <results>
+ <c:simple-property name="operationResult"
description="Starts the bundle."/>
+ </results>
+ </operation>
+
+ <operation name="subystem:stop" displayName="Stop"
description="Stops the bundle.">
+ <results>
+ <c:simple-property name="operationResult"
description="Stops the bundle."/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="id" required="false"
type="long" readOnly="true" description="The bundle
ID."/>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The bundle's
start level."/>
+ <c:simple-property name="symbolic-name" required="false"
type="string" readOnly="true" description="The bundle symbolic
name."/>
+ <c:simple-property name="version" required="false"
type="string" readOnly="true" description="The bundle
version."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="JMX (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the JMX subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=jmx"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="show-model" required="false"
type="boolean" readOnly="true" description="Set to 'true'
to include MBeans for the model controller resources"/>
+ </resource-configuration>
+
+ <service name="Remoting Connector (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of a resource adapter."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="remoting-connector=jmx"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="use-management-endpoint"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="If true the connector will use the
management endpoint, otherwise it will use the remoting subsystem one. The default value
is true."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Resource Adapters (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Configuration of the resource adapters subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Resource Adapter (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of a resource adapter.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="resource-adapter"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="archive" required="true"
type="string" readOnly="true" description="Specifies the resource
adapter archive"/>
+ <c:simple-property name="beanvalidationgroups"
required="false" type="string" readOnly="true"
description="Specifies the bean validation groups that should be used"/>
+ <c:simple-property name="bootstrapcontext"
required="false" type="string" readOnly="true"
description="Specifies the unique name of the bootstrap context that should be
used"/>
+ <c:simple-property name="transaction-support"
required="true" type="string" readOnly="true"
description="Specifies the transaction support level of the resource
adapter">
+ <c:property-options>
+ <c:option value="LocalTransaction"/>
+ <c:option value="XATransaction"/>
+ <c:option value="NoTransaction"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+
+ <service name="Admin Objects (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the administration objects.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="admin-objects"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="true" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Connection Definitions (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the connection definitions.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-definitions"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:flush-all-connection-in-pool"
displayName="Flush All Connections in Pool" description="Flushes all
connections in the pool">
+ <results>
+ <c:simple-property name="operationResult"
description="Flushes all connections in the pool"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:flush-idle-connection-in-pool"
displayName="Flush Idle Connections in Pool" description="Flushes all idle
connections in the pool">
+ <results>
+ <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool"/>
+ </results>
+ </operation>
+
+ <operation name="subsystem:test-connection-in-pool"
displayName="Test Connection in Pool" description="Test if a connection can
be obtained">
+ <results>
+ <c:simple-property name="operationResult"
description="Test if a connection can be obtained"/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="allocation-retry:expr"
required="false" type="long" readOnly="true"
displayName="Allocation Retry" description="The allocation retry element
indicates the number of times that allocating a connection should be tried before throwing
an exception"/>
+ <c:simple-property name="allocation-retry-wait-millis:expr"
required="false" type="long" readOnly="true"
displayName="Allocation Retry Wait Millis" description="The allocation
retry wait millis element specifies the amount of time, in milliseconds, to wait between
retrying to allocate a connection"/>
+ <c:simple-property name="background-validation"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="An element to specify that connections
should be validated on a background thread versus being validated prior to use. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="background-validation-millis:expr"
required="false" type="integer" readOnly="true"
displayName="Background Validation Millis" description="The
background-validation-millis element specifies the amount of time, in
milliseconds, that background validation will run. Changing this value requires a server
restart"/>
+ <c:simple-property name="blocking-timeout-wait-millis:expr"
required="false" type="long" readOnly="true"
displayName="Blocking Timeout Wait Millis" description="The
blocking-timeout-millis element specifies the maximum time, in
milliseconds, to block while waiting for a connection before throwing an exception. Note
that this blocks only while waiting for locking a connection, and will never throw an
exception if creating a new connection takes an inordinately long time"/>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="true" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="flush-strategy"
required="false" type="string" readOnly="true"
description="Specifies how the pool should be flush in case of an error."
default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
+ <c:property-options>
+ <c:option value="FailingConnectionOnly"/>
+ <c:option value="IdleConnections"/>
+ <c:option value="EntirePool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="idle-timeout-minutes:expr"
required="false" type="long" readOnly="true"
displayName="Idle Timeout Minutes" description="The
idle-timeout-minutes elements specifies the maximum time, in minutes, a
connection may be idle before being closed. The actual maximum time depends also on the
IdleRemover scan time, which is half of the smallest idle-timeout-minutes
value of any pool. Changing this value requires a server restart."/>
+ <c:simple-property name="interleaving"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="An element to enable interleaving for XA
connections. The default value is false."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="max-pool-size:expr"
required="false" type="integer" readOnly="true"
defaultValue="20" displayName="Max Pool Size" description="The
max-pool-size element specifies the maximum number of connections for a
pool. No more connections will be created in each sub-pool. The default value is
20."/>
+ <c:simple-property name="min-pool-size:expr"
required="false" type="integer" readOnly="true"
defaultValue="0" displayName="Min Pool Size" description="The
min-pool-size element specifies the minimum number of connections for a
pool. The default value is 0."/>
+ <c:simple-property name="no-recovery" required="false"
type="boolean" readOnly="true" description="Specifies if the
connection pool should be excluded from recovery"/>
+ <c:simple-property name="no-tx-separate-pool"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Oracle does not like XA connections
getting used both inside and outside a JTA transaction. To workaround the problem you can
create separate sub-pools for the different contexts. The default value is
false."/>
+ <c:simple-property name="pad-xid" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Should the Xid be padded. The default value is false."/>
+ <c:simple-property name="pool-prefill"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Should the pool be prefilled. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="pool-use-strict-min"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Specifies if the
min-pool-size should be considered strictly. The default value is
false."/>
+ <c:simple-property name="recovery-password"
required="false" type="string" readOnly="true"
description="The password used for recovery"/>
+ <c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the recovery plugin
implementation"/>
+ <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin">
+ <c:simple-property name="recovery-plugin-properties"
required="false" type="string" readOnly="true"
displayName="Recovery Plugin Property"/>
+ </c:map-property>
+ <c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="true"
description="The security domain used for recovery"/>
+ <c:simple-property name="recovery-username"
required="false" type="string" readOnly="true"
description="The user name used for recovery"/>
+ <c:simple-property name="same-rm-override"
required="false" type="boolean" readOnly="true"
description="The is-same-rm-override element allows one to
unconditionally set whether the javax.transaction.xa.XAResource.isSameRM(XAResource)
returns true or false"/>
+ <c:simple-property name="security-application"
required="false" type="boolean" readOnly="true"
description="Indicates that app supplied parameters (such as from getConnection(user,
pw)) are used to distinguish connections in the pool"/>
+ <c:simple-property name="security-domain"
required="false" type="string" readOnly="true"
description="Specifies the security domain which defines the
javax.security.auth.Subject that are used to distinguish connections in the
pool"/>
+ <c:simple-property name="security-domain-and-application"
required="false" type="string" readOnly="true"
description="Indicates that either app supplied parameters (such as from
getConnection(user, pw)) or Subject (from security domain) are used to distinguish
connections in the pool"/>
+ <c:simple-property name="use-ccm" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Enable the use of a cached connection manager. The default value is
true."/>
+ <c:simple-property name="use-fast-fail"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether to fail a connection allocation
on the first try if it is invalid (true) or keep trying until the pool is exhausted of all
potential connections (false). The default value is false."/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ <c:simple-property name="use-try-lock:expr"
required="false" type="long" readOnly="true"
displayName="Use Try Lock" description="Any configured timeout for internal
locks on the resource adapter objects in seconds"/>
+ <c:simple-property name="wrap-xa-resource"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Should the XAResource instances be wrapped
in a org.jboss.tm.XAResourceWrapper instance. The default value is true."/>
+ <c:simple-property name="xa-resource-timeout:expr"
required="false" type="integer" readOnly="true"
displayName="XA Resource Timeout" description="The value is passed to
XAResource.setTransactionTimeout(), in seconds. Default is zero"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="CMP (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the cmp subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=cmp"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="HiloKeygenerator (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="HiLo based key generators.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="hilo-keygenerator"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="block-size" required="false"
type="long" readOnly="true" description="The block
size"/>
+ <c:simple-property name="create-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create create the tables"/>
+ <c:simple-property name="create-table-ddl"
required="false" type="string" readOnly="true"
description="The DDL used to create the table"/>
+ <c:simple-property name="data-source" required="true"
type="string" readOnly="true" description="The datasource used
for sequence generation"/>
+ <c:simple-property name="drop-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create drop the tables"/>
+ <c:simple-property name="id-column" required="true"
type="string" readOnly="true" description="The ID column
name"/>
+ <c:simple-property name="select-hi-ddl" required="false"
type="string" readOnly="true" description="The DDL used to select
the hi value"/>
+ <c:simple-property name="sequence-column"
required="true" type="string" readOnly="true"
description="The sequence column name"/>
+ <c:simple-property name="sequence-name" required="true"
type="string" readOnly="true" description="The name of the
sequence"/>
+ <c:simple-property name="table-name" required="true"
type="string" readOnly="true" description="The table
name"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="EJB3 (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the ejb3 subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=ejb3"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-clustered-sfsb-cache"
required="false" type="string" readOnly="true"
description="Name of the default stateful bean cache, which will be applicable to all
clustered stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-instance-pool"
required="false" type="string" readOnly="true"
description="Name of the default entity bean instance pool, which will be applicable
to all entity beans, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-optimistic-locking"
required="false" type="boolean" readOnly="true"
description="If set to true entity beans will use optimistic locking by
default"/>
+ <c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="true"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="true"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
+ <c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="true"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="5000" description="The default access timeout for singleton
beans. The default value is 5000."/>
+ <c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="true"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="5000" description="The default access timeout for stateful
beans. The default value is 5000."/>
+ <c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
+ </resource-configuration>
+
+ <service name="EJB3 Thread Pool (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-pool"/>
+ </plugin-configuration>
+
+ <metric property="active-count" description="The approximate
number of threads that are actively executing tasks."/>
+ <metric property="completed-task-count" description="The
approximate total number of tasks that have completed execution."/>
+ <metric property="current-thread-count" description="The
current number of threads in the pool."/>
+ <metric property="keepalive-time:time" description="The
time"/>
+ <metric property="largest-thread-count" description="The
largest number of threads that have ever simultaneously been in the pool."/>
+ <metric property="rejected-count" description="The number of
tasks that have been rejected."/>
+ <metric property="task-count" description="The approximate
total number of tasks that have ever been scheduled for execution."/>
+
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="true"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="true" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="true" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="true"
description="The maximum thread pool size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="File Passivation Store (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A file system based passivation store.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="groups-path" required="false"
type="string" readOnly="true"
defaultValue="ejb3/groups"/>
+ <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="true"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="true" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="true"
defaultValue="jboss.server.data.dir"/>
+ <c:simple-property name="sessions-path" required="false"
type="string" readOnly="true"
defaultValue="ejb3/sessions"/>
+ <c:simple-property name="subdirectory-count:expr"
required="false" type="string" readOnly="true"
defaultValue="100"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Strict Max Bean Instance Pool (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A bean instance pool with a strict upper
limit">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="strict-max-bean-instance-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="true"
defaultValue="20" description="The maximum number of bean instances that
the pool can hold at a given point in time. The default value is 20."/>
+ <c:simple-property name="timeout:expr" required="false"
type="string" readOnly="true" defaultValue="5"
description="The maximum amount of time to wait for a bean instance to be available
from the pool. The default value is 5."/>
+ <c:simple-property name="timeout-unit" required="false"
type="string" readOnly="true" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
+ </resource-configuration>
+ </service>
+
+ <service name="SFSB Cache (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A SFSB cache.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cache"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="aliases" readOnly="true"
description="The aliases by which this cache may also be referenced">
+ <c:simple-property name="aliases"
readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="passivation-store"
required="false" type="string" readOnly="true"
description="The passivation store used by this cache"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Cluster Passivation Store (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A clustered passivation store.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cluster-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="bean-cache" required="false"
type="string" readOnly="true" description="The name of the cache
used to store bean instances."/>
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="true"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
+ <c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="true"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
+ <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="true"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="true"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="true" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="true"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Async Service (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB3 Asynchronous Invocation Service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=async"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="true"
description="The name of the thread pool which handles asynchronous
invocations"/>
+ </resource-configuration>
+ </service>
+
+ <service name="IIOP Service (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The IIOP service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=iiop"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="enable-by-default"
required="false" type="boolean" readOnly="true"
description="If this is true EJB's will be exposed over IIOP by default,
otherwise it needs to be explicitly enabled in the deployment descriptor"/>
+ <c:simple-property name="use-qualified-name"
required="false" type="boolean" readOnly="true"
description="If true EJB names will be bound into the naming service with the
application and module name prepended to the name (e.g. myapp/mymodule/MyEjb)"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Remote Service (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB3 remote service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=remote"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="connector-ref" required="false"
type="string" readOnly="true" description="The name of the
connector on which the EJB3 remoting channel is registered"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="true"
description="The name of the thread pool that handles remote invocations"/>
+ </resource-configuration>
+
+ <service name="Channel Creation Options (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The options that will be used during the EJB remote
channel creation">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="channel-creation-options"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="The type of the
channel creation option">
+ <c:property-options>
+ <c:option value="remoting" name="remoting"/>
+ <c:option value="xnio" name="xnio"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="value" required="false"
type="string" readOnly="true" description="The value for the EJB
remote channel creation option"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Timer Service (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB timer service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=timer-service"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="path" required="false"
type="string" readOnly="true" description="The directory to store
persistent timer information in"/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="true" description="The relative path that
is used to resolve the timer data store location"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="true"
description="The name of the thread pool used to run timer service
invocations"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Threads (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="ThreadsComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="ThreadFactory (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A thread factory (implementing
java.util.concurrent.ThreadFactory).">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-factory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="group-name" required="false"
type="string" readOnly="true" description="Specifies the name of
a thread group to create for this thread factory."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
created thread factory."/>
+ <c:simple-property name="priority:expr" required="false"
type="string" readOnly="true" defaultValue="-1"
displayName="Priority" description="May be used to specify the thread
priority of created threads. The default value is -1."/>
+ <c:simple-property name="thread-name-pattern"
required="false" type="string" readOnly="true"
description="The template used to create names for threads. The following patterns
may be used:
+ %% - emit a percent sign
+ %t - emit the per-factory thread sequence number
+ %g - emit the global thread sequence number
+ %f - emit the factory sequence number
+ %i - emit the thread ID."/>
+ </resource-configuration>
+ </service>
+
+ <service name="ThreadPool (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="ThreadPoolComponent"
+ description="A thread pool executor">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ </plugin-configuration>
+
+ <metric property="active-count" description="The approximate
number of threads that are actively executing tasks."/>
+ <metric property="completed-task-count" description="The
approximate total number of tasks that have completed execution."/>
+ <metric property="current-thread-count" description="The
current number of threads in the pool."/>
+ <metric property="largest-thread-count" description="The
largest number of threads that have ever simultaneously been in the pool."/>
+ <metric property="rejected-count" description="The number of
tasks that have been rejected."/>
+ <metric property="task-count" description="The approximate
total number of tasks that have ever been scheduled for execution."/>
+
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="true"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
readOnly="true" type="long" description="The time"/>
+ <c:simple-property name="unit" required="true"
readOnly="true" type="string" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="true"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="true"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:property-options>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ </c:template>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Security (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the security subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
+ </resource-configuration>
+
+ <service name="Security Domain (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-domain"/>
+ </plugin-configuration>
+
+ <operation name="flush-cache" description="Remove entries
stored in the authentication cache for this security domain. A single entry can be flushed
by using the principal argument with the username as the value. If no argument is passed
to the operation, all entries are flushed.">
+ <results>
+ <c:simple-property name="operationResult"
description="Remove entries stored in the authentication cache for this security
domain. A single entry can be flushed by using the principal argument with the username as
the value. If no argument is passed to the operation, all entries are flushed."/>
+ </results>
+ </operation>
+
+ <operation name="list-cached-principals" description="Lists the
principals stored in the authentication cache for this security domain.">
+ <results>
+ <c:simple-property name="operationResult"
description="Lists the principals stored in the authentication cache for this
security domain."/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="cache-type" required="false"
type="string" readOnly="true" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ </resource-configuration>
+
+ <service name="ACL (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="acl=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="acl-modules" required="false"
description="List of acl modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Audit (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="audit=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="provider-modules"
required="false" description="List of provider modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Authentication (Classic - Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="login-modules" required="false"
description="List of authentication modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Authentication (Jaspi - Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=jaspi"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="auth-modules" required="true"
description="List of authentication modules to be used." >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ <c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="true"
description="Reference to a login module stack name previously configured in the same
security domain."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+
+ <service name="Login Module Stack (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="login-module-stack"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="login-modules"
required="true" description="List of authentication modules" >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Authorization (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authorization=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="policy-modules"
required="false" description="List of authorization modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Identity Trust (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="identity-trust=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="trust-modules" required="false"
description="List of trust modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="true" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="JSSE (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jsse"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="true"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
+ <c:simple-property name="client-alias"
required="false" type="string" readOnly="true"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
+ <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="true" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
+ <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the KeyManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
keystore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyStore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ <c:simple-property name="protocols" required="false"
type="string" readOnly="true" description="Comma separated list
of protocols to enable on SSLSockets."/>
+ <c:simple-property name="server-alias"
required="false" type="string" readOnly="true"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
+ <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="true"
description="Token to retrieve PrivateKeys from the KeyStore."/>
+ <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the TrustManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the TrustManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
truststore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the truststore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Mapping (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mapping=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="mapping-modules"
required="false" description="List of modules that map principal, role, and
credential information">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="true" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="type" required="true"
type="string" readOnly="true" description="Type of mapping this
module performs. Allowed values are principal, role, attribute or credential.."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="true"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Vault (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="vault=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="code" required="false"
type="string" readOnly="true" description="Fully Qualified Name
of the Security Vault Implementation."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ </server>
+
+
+ <service name="Profile"
+ description="A profile in a domain. Profiles are assigned to server
groups."
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="profile"
readOnly="true"/>
+ </plugin-configuration>
+
+ <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
+ list is different. Update similar Standalone service if changes are necessary.
-->
+ <service name="ModCluster Domain Service"
+ class="ModClusterComponent"
+ discovery="ModClusterDiscoveryComponent"
+ description="Mod_cluster support"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Domain Service Configuration"
+ discovery="SubsystemDiscovery"
+ class="ModClusterComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ </plugin-configuration>
+
+ &modclusterSharedOpsConfig;
+
+ <service name="Domain Dynamic Load Provider"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
+ <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
+ </resource-configuration>
+
+ <service name="Domain Custom Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of custom-load-metric service -->
+
+ <service name="Domain Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of load-metric service -->
+ </service><!-- End of dynamic-load-provider service -->
+
+ <service name="Domain Ssl"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-revocation-ur"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ </resource-configuration>
+ </service><!-- End of ssl service -->
+ </service><!-- End of Domain Modcluster Service Configuration -->
+ </service>
+
+ <service name="Naming (Profile)"
+ discovery="SubsystemDiscovery"
+ class="NamingComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
+ </plugin-configuration>
+
+ <service name="Binding (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JNDI bindings for primitive types"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="binding"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
+ <c:property-options>
+ <c:option value="simple"/>
+ <c:option value="lookup"/>
+ <c:option value="object-factory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
+ <c:simple-property name="lookup" required="false"
type="string" readOnly="false" description="The entry to lookup
in JNDI for lookup bindings"/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module to load
the object factory from for object factory bindings"/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value to bind for
simple bindings"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="JBossWeb (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-virtual-server"
required="true" type="string" readOnly="false"
defaultValue="default-host" description="The web container's default
virtual server. The default value is default-host.">
+ <c:option-source target="resource" expression="type=VHost
plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="instance-id" readOnly="true"
required="false" type="string" description="The identifier for
this server instance."/>
+ <c:simple-property name="native" required="false"
type="boolean" readOnly="true" defaultValue="true"
description="Add the native initialization listener to the web container. The default
value is true."/>
+
+ <c:group name="child:configuration=static-resources"
displayName="Static Resources">
+ <c:simple-property name="disabled:0" required="false"
type="boolean" defaultValue="false" description="Enable the
default Servlet mapping. The default value is false."/>
+ <c:simple-property name="file-encoding" required="false"
description="Force a file encoding." type="string"/>
+ <c:simple-property name="listings" required="false"
type="boolean" defaultValue="false" description="Enable folder
listings. The default value is false."/>
+ <c:simple-property name="max-depth" required="false"
type="integer" defaultValue="3" description="Maximum recursion
for PROPFIND. The default value is 3."/>
+ <c:simple-property name="read-only" required="false"
type="boolean" defaultValue="true" description="Allow write HTTP
methods (PUT, DELETE). The default value is true."/>
+ <c:simple-property name="sendfile" required="false"
type="integer" defaultValue="49152" description="Enable sendfile
if possible, for files bigger than the specified byte size. The default value is
49152."/>
+ <c:simple-property name="secret" required="false"
type="string" readOnly="true" description="Secret for WebDAV
locking operations."/>
+ <c:simple-property name="webdav" required="false"
type="boolean" defaultValue="false" description="Enable WebDAV
functionality. The default value is false."/>
+ </c:group>
+ <c:group name="child:configuration=jsp-configuration"
displayName="JSP Configuration">
+ <c:simple-property name="check-interval"
required="false" type="integer" readOnly="false"
defaultValue="0" description="Check interval for JSP updates using a
background thread. The default value is 0."/>
+ <c:simple-property name="development" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the development mode, which gives more information when an error
occurs. The default value is false."/>
+ <c:simple-property name="disabled:1" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable the JSP container. The default value is false."/>
+ <c:simple-property name="display-source-fragment"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="When a runtime error occurs, attempts to
display corresponding JSP source fragment. The default value is true."/>
+ <c:simple-property name="dump-smap" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Write SMAP data to a file. The default value is false."/>
+ <c:simple-property
name="error-on-use-bean-invalid-class-attribute" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable errors when using a bad class in useBean. The default value is
false."/>
+ <c:simple-property name="generate-strings-as-char-arrays"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Generate String constants as char arrays.
The default value is false."/>
+ <c:simple-property name="java-encoding" required="false"
type="string" readOnly="false" defaultValue="UTF8"
description="Specify the encoding used for Java sources. The default value is
UTF8."/>
+ <c:simple-property name="keep-generated"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Keep the generated Servlets. The default
value is true."/>
+ <c:simple-property name="mapped-file" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Map to the JSP source. The default value is true."/>
+ <c:simple-property name="modification-test-interval"
required="false" type="integer" readOnly="false"
defaultValue="4" description="Minimum amount of time between two tests for
updates, in seconds. The default value is 4."/>
+ <c:simple-property name="recompile-on-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Retry failed JSP compilations on each
request. The default value is false."/>
+ <c:simple-property name="scratch-dir" required="false"
type="string" readOnly="false" description="Specify a different
work directory."/>
+ <c:simple-property name="smap" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable SMAP. The default value is true."/>
+ <c:simple-property name="source-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Source VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="tag-pooling" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable tag pooling. The default value is true."/>
+ <c:simple-property name="target-vm" required="false"
type="string" readOnly="false" defaultValue="1.5"
description="Target VM level for compilation. The default value is 1.5."/>
+ <c:simple-property name="trim-spaces" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Trim some spaces from the generated Servlet. The default value is
false."/>
+ <c:simple-property name="x-powered-by" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable advertising the JSP engine in x-powered-by. The default value is
true."/>
+ </c:group>
+ <c:group name="child:configuration=container"
displayName="Container">
+ <!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
+ <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false">
+ <c:map-property name="mime-mapping:collapsed">
+ <c:simple-property name="name:0"
displayName="Name" description="A MIME mapping name without the dot (e.g.
'txt')"/>
+ <c:simple-property name="value:1"
displayName="Value" description="A MIME mapping value (e.g.
'text/plain' )"/>
+ </c:map-property>
+ </c:list-property>
+ -->
+ <c:list-property name="welcome-file" required="false"
description="A welcome file declaration.">
+ <c:simple-property name="welcome-file"
type="string"/>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Connector (Profile)"
+ discovery="SubsystemDiscovery"
+ class="WebConnectorComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="scheme" required="true"
type="string" readOnly="false" description="The web connector
scheme.">
+ <c:property-options>
+ <c:option value="http"/>
+ <c:option value="https"/>
+ <c:option value="ajp"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="socket-binding" required="true"
type="string" description="The web connector socket-binding reference, this
connector should be bound to.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Defines whether the connector should be started on startup. The default
value is true."/>
+ <c:simple-property name="enable-lookups"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Enable DNS lookups for Servlet API. The
default value is false."/>
+ <c:simple-property name="executor" required="false"
type="string" readOnly="false" description="The name of the
executor that should be used for the processing threads of this connector. If undefined
defaults to using an internal pool."/>
+ <c:simple-property name="max-connections"
required="false" type="integer" readOnly="false"
description="Amount of concurrent connections that can be processed by the connector
with optimum performance. The default value depends on the connector used and the number
of cpu cores (512*cores for HTTP, 32*cores for AJP)."/>
+ <c:simple-property name="max-post-size" required="false"
type="integer" readOnly="false" defaultValue="2097152"
description="Maximum size in bytes of a POST request that can be parsed by the
container. The default value is 2097152."/>
+ <c:simple-property name="max-save-post-size"
required="false" type="integer" readOnly="false"
defaultValue="4096" description="Maximum size in bytes of a POST request
that will be saved during certain authentication schemes. The default value is
4096."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique name for the
connector."/>
+ <c:simple-property name="protocol" required="true"
type="string" readOnly="false" default="HTTP/1.1"
defaultValue="HTTP/1.1"
+ description="The web connector protocol. (e.g.
'HTTP/1.1' or 'AJP' or a name of a class implementing ProtocolHandler and
MBeanRegistration )">
+ <!-- TODO let the user could enter a custom value here when the UI
supports this. -->
+ <c:property-options>
+ <c:option value="HTTP/1.1"/>
+ <c:option value="AJP/1.3"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="proxy-name" required="false"
type="string" readOnly="false" description="The host name that
will be used when sending a redirect. The default value is null."/>
+ <c:simple-property name="proxy-port" required="false"
type="integer" readOnly="false" description="The port that will
be used when sending a redirect."/>
+ <c:simple-property name="redirect-port" required="false"
type="integer" readOnly="false" defaultValue="8433"
description="The port for redirection to a secure connector. The default value is
8433."/>
+ <c:simple-property name="secure" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Indicates if content sent or received by the connector is secured from
the user perspective. The default value is false."/>
+ <c:simple-property name="virtual-server"
required="false" type="string" readOnly="false"
description="The list of virtual servers that can be accessed through this connector.
The default is to allow all virtual servers."/>
+
+ <c:group name="child:ssl=configuration:enabled=secure=true"
displayName="SSL Configuration">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-certificate-password"
required="false" type="string" readOnly="false"
description="Certificate password."/>
+ <c:simple-property name="ca-revocation-url"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-file"
required="false" type="string" readOnly="false"
description="Server certificate file. If the value is not given, ~/.keystore is the
default"/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
description="Key file for the certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="keystore-type"
required="false" type="string" readOnly="false"
description="Type of the keystore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The configuration
name."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" description="The SSL protocols
that are enabled." default="ALL" defaultValue="ALL">
+ <c:property-options>
+ <c:option value="SSLv2"/>
+ <c:option value="SSLv3"/>
+ <c:option value="TLSv1"/>
+ <c:option value="SSLv2+SSLv3"/>
+ <c:option value="ALL"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="session-cache-size"
required="false" type="integer" readOnly="false"
description="SSL session cache."/>
+ <c:simple-property name="session-timeout"
required="false" type="integer" readOnly="false"
description="SSL session cache timeout."/>
+ <c:simple-property name="truststore-type"
required="false" type="string" readOnly="false"
description="Type of the truststore, There are various types of keystores available,
including 'PKCS12' and Sun's
'JKS.'"/>
+ <c:simple-property name="verify-client"
required="false" type="string" readOnly="false"
description="Enable client certificate verification."/>
+ <c:simple-property name="verify-depth"
required="false" type="integer" readOnly="false"
description="Limit certificate nesting."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+
+ <service name="VHost (Profile)"
+ discovery="SubsystemDiscovery"
+ class="VHostComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="virtual-server"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="alias" description="The virtual server
aliases" displayName="Virtual server aliases">
+ <c:simple-property name="alias"/>
+ </c:list-property>
+ <c:simple-property name="default-web-module"
type="string" defaultValue="ROOT.war" description="The web module
deployment name that will be mapped as the root webapp."/>
+ <c:simple-property name="enable-welcome-root"
type="boolean" defaultValue="false" description="Whether or not
the bundled welcome directory is used as the root web context. The default value is
false."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique virtual host
name"/>
+
+ <c:group name="child:sso=configuration" displayName="The SSO
configuration for this virtual server.">
+ <c:map-property name="*Configuration+"
displayName="Configuration" readOnly="false"
required="false">
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
description="Enables clustered SSO using the specified clustered cache
container.">
+ <c:option-source target="resource"
expression="type='Cache Container' plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="cache-name"
required="false" type="string" readOnly="false"
description="Name of the cache to use in the cache container."/>
+ <c:simple-property name="domain" required="false"
type="string" readOnly="false" description="The cookie domain
that will be used."/>
+ <c:simple-property name="reauthenticate"
required="false" type="boolean" readOnly="false"
description="Enables reauthentication with the realm when using SSO."/>
+ </c:map-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="Rewrite Rules (Profile)"
+ discovery="SubsystemDiscovery"
+ description="A list of rewrite rules that will be processed in
order on the URL or vhost specified in the request. Those follow the rules for
mod_rewrite. Please consult the manual for help on settings"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="rewrite"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="false" description="Option flags for this
rewrite rule. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern" required="true"
type="string" readOnly="false" description="The pattern that will
be matched. Consult the mod_rewrite docs."/>
+ <c:simple-property name="substitution" required="true"
type="string" readOnly="false" description="The string that will
replace the original URL or vhost. Consult the mod_rewrite docs."/>
+ <!-- embedded condition children - commented out for the moment -->
+ <c:group name="children:condition:name+"
displayName="Rewrite conditions">
+ <c:list-property name="*1" displayName="Conditions"
required="false" readOnly="true">
+ <c:map-property name="*:name" displayName="Name"
readOnly="true">
+ <c:simple-property name="name" required="true"
readOnly="true" displayName="Condition-Name"/>
+ <c:simple-property name="flags" required="true"
type="string" readOnly="true" description="Option flags for this
condition. Consult the mod_rewrite docs."/>
+ <c:simple-property name="pattern"
required="true" type="string" readOnly="true"
description="The pattern to match. Consult the mod_rewrite docs."/>
+ <c:simple-property name="test" required="true"
type="string" readOnly="true" description="Test pattern for the
condition. Consult the mod_rewrite docs."/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+
+ <service name="Access Log (Profile)"
+ discovery="SubsystemDiscovery"
+ description="The access log configuration for this virtual
server."
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="access-log=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="extended" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable extended pattern, with more options. The default value is
false."/>
+ <c:simple-property name="pattern" required="false"
type="string" readOnly="false" defaultValue="common"
description="The access log pattern. The default value is common."/>
+ <c:simple-property name="prefix" required="false"
type="string" readOnly="false" defaultValue="false"
description="Prefix for the log file name. The default value is false."/>
+ <c:simple-property name="resolve-hosts"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Host resolution. The default value is
false."/>
+ <c:simple-property name="rotate" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Rotate the access log every day. The default value is true."/>
+
+ <c:group name="child:directory=configuration"
displayName="The location for the access logging.">
+ <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The relative folder
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
defaultValue="jboss.server.log.dir" description="The folder the path is
relative to. The default value is jboss.server.log.dir."/>
+ </c:group>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="JCA (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The Java EE Connector Architecture (JCA) subsystem
providing general configuration for resource adapters"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jca"
readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:group name="child:bean-validation=bean-validation"
displayName="Bean validation (JSR-303) for resource adapters.">
+ <c:simple-property name="enabled:1" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether bean validation is
enabled. The default value is true."/>
+ </c:group>
+ <c:group name="child:archive-validation=archive-validation"
displayName="Archive validation for resource adapters.">
+ <c:simple-property name="enabled:2" required="false"
type="boolean" readOnly="false" defaultValue="true"
displayName="Enabled" description="Specify whether archive validation is
enabled. The default value is true."/>
+ <c:simple-property name="fail-on-error" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Should an archive validation error report fail the deployment. The
default value is true."/>
+ <c:simple-property name="fail-on-warn" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should an archive validation warning report fail the deployment. The
default value is false."/>
+ </c:group>
+ <c:group
name="child:cached-connection-manager=cached-connection-manager"
displayName="Cached connection manager for resource adapters.">
+ <c:simple-property name="debug" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable debug information logging. The default value is
false."/>
+ <c:simple-property name="error" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable error information logging. The default value is
false."/>
+ <c:simple-property name="install" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Enable/disable the cached connection manager valve and interceptor. The
default value is false."/>
+ </c:group>
+ </resource-configuration>
+
+ <service name="BootstrapContext (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Bootstrap context for resource adapters."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bootstrap-context"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
BootstrapContext"/>
+ <c:simple-property name="workmanager" required="false"
type="string" readOnly="false" description="The WorkManager
instance for the BootstrapContext">
+ <c:option-source target="resource"
expression="type=Workmanager plugin=&pluginName;"/>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Workmanager (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="WorkManager for resource adapters."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="workmanager"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="false" description="The name of the
WorkManager"/>
+ </resource-configuration>
+
+ <service name="Long Running Thread Pool (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Long running thread pool executor with a bounded queue
where threads submitting tasks may block."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="long-running-threads"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Short Running Thread Pool (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Short running thread pool executor with a bounded
queue where threads submitting tasks may block."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="short-running-threads"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allow-core-timeout"
required="false" type="boolean" readOnly="false"
defaultValue="false" displayName="Allow Core Timeout"
description="Whether core threads may time out. The default value is
false."/>
+ <c:simple-property name="core-threads:expr"
required="false" type="integer" readOnly="false"
displayName="Core Threads" description="The core thread pool size which is
smaller than the maximum pool size. If undefined, the core thread pool size is the same as
the maximum thread pool size."/>
+ <c:map-property name="keepalive-time" required="true"
displayName="Keepalive Time" description="Used to specify the amount of
time that pool threads should be kept running when idle; if not specified, threads will
run until the executor is shut down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="integer" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" displayName="Name"
description="The name of the thread pool."/>
+ <c:simple-property name="queue-length:expr"
required="true" type="integer" readOnly="false"
displayName="Queue Length" description="The queue length."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
displayName="Thread Factory" description="Specifies the name of a specific
thread factory to use to create worker threads. If not defined an appropriate default
thread factory will be used."/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="Osgi (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The OSGi subsystem configuration."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="activation" required="false"
type="string" readOnly="false" defaultValue="LAZY"
description="Activation flag for the OSGi subsystem. Possible values: lazy, eager.
The default value is LAZY."/>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The current Start
Level of the OSGi Framework. Changing this value will change the Start Level of the
Framework accordingly."/>
+ </resource-configuration>
+
+ <service name="Capability (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="capability"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="startlevel" required="false"
type="integer" readOnly="true" description="The startlevel for
the capability. Can only be specified for OSGi bundles."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Resource Adapters (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Configuration of the resource adapters subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
+ </plugin-configuration>
+
+ <service name="Resource Adapter (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of a resource adapter."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="resource-adapter"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="archive" required="true"
type="string" readOnly="false" description="Specifies the
resource adapter archive"/>
+ <c:simple-property name="beanvalidationgroups"
required="false" type="string" readOnly="false"
description="Specifies the bean validation groups that should be used"/>
+ <c:simple-property name="bootstrapcontext"
required="false" type="string" readOnly="false"
description="Specifies the unique name of the bootstrap context that should be
used"/>
+ <c:simple-property name="transaction-support"
required="true" type="string" readOnly="false"
description="Specifies the transaction support level of the resource
adapter">
+ <c:property-options>
+ <c:option value="LocalTransaction"/>
+ <c:option value="XATransaction"/>
+ <c:option value="NoTransaction"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+
+ <service name="Admin Objects (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the administration objects."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="admin-objects"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Connection Definitions (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Specifies the connection definitions."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-definitions"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="allocation-retry:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry" description="The allocation retry element
indicates the number of times that allocating a connection should be tried before throwing
an exception"/>
+ <c:simple-property name="allocation-retry-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Allocation Retry Wait Millis" description="The allocation
retry wait millis element specifies the amount of time, in milliseconds, to wait between
retrying to allocate a connection"/>
+ <c:simple-property name="background-validation"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to specify that connections
should be validated on a background thread versus being validated prior to use. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="background-validation-millis:expr"
required="false" type="integer" readOnly="false"
displayName="Background Validation Millis" description="The
background-validation-millis element specifies the amount of time, in
milliseconds, that background validation will run. Changing this value requires a server
restart"/>
+ <c:simple-property name="blocking-timeout-wait-millis:expr"
required="false" type="long" readOnly="false"
displayName="Blocking Timeout Wait Millis" description="The
blocking-timeout-millis element specifies the maximum time, in
milliseconds, to block while waiting for a connection before throwing an exception. Note
that this blocks only while waiting for locking a connection, and will never throw an
exception if creating a new connection takes an inordinately long time"/>
+ <c:simple-property name="class-name" required="true"
type="string" readOnly="false" description="Specifies the fully
qualified class name of a managed connection factory or admin object"/>
+ <c:simple-property name="enabled" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specifies if the resource adapter should be enabled. The default value
is true."/>
+ <c:simple-property name="flush-strategy"
required="false" type="string" readOnly="true"
+ description="Specifies how the pool should be flush
in case of an error." default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
+ <c:property-options>
+ <c:option value="FailingConnectionOnly"/>
+ <c:option value="IdleConnections"/>
+ <c:option value="EntirePool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="idle-timeout-minutes:expr"
required="false" type="long" readOnly="false"
displayName="Idle Timeout Minutes" description="The
idle-timeout-minutes elements specifies the maximum time, in minutes, a
connection may be idle before being closed. The actual maximum time depends also on the
IdleRemover scan time, which is half of the smallest idle-timeout-minutes
value of any pool. Changing this value requires a server restart."/>
+ <c:simple-property name="interleaving"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="An element to enable interleaving for XA
connections. The default value is false."/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="false" description="Specifies the JNDI
name for the connection factory or admin object"/>
+ <c:simple-property name="max-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="20" displayName="Max Pool Size" description="The
max-pool-size element specifies the maximum number of connections for a
pool. No more connections will be created in each sub-pool. The default value is
20."/>
+ <c:simple-property name="min-pool-size:expr"
required="false" type="integer" readOnly="false"
defaultValue="0" displayName="Min Pool Size" description="The
min-pool-size element specifies the minimum number of connections for a
pool. The default value is 0."/>
+ <c:simple-property name="no-recovery" required="false"
type="boolean" readOnly="false" description="Specifies if the
connection pool should be excluded from recovery"/>
+ <c:simple-property name="no-tx-separate-pool"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Oracle does not like XA connections
getting used both inside and outside a JTA transaction. To workaround the problem you can
create separate sub-pools for the different contexts. The default value is
false."/>
+ <c:simple-property name="pad-xid" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Should the Xid be padded. The default value is false."/>
+ <c:simple-property name="pool-prefill"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Should the pool be prefilled. Changing
this value requires a server restart. The default value is false."/>
+ <c:simple-property name="pool-use-strict-min"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Specifies if the
min-pool-size should be considered strictly. The default value is
false."/>
+ <c:simple-property name="recovery-password"
required="false" type="string" readOnly="false"
description="The password used for recovery"/>
+ <c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="false"
description="The fully qualified class name of the recovery plugin
implementation"/>
+ <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin">
+ <c:simple-property name="recovery-plugin-properties"
required="false" type="string" readOnly="false"
displayName="Recovery Plugin Property"/>
+ </c:map-property>
+ <c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="false"
description="The security domain used for recovery"/>
+ <c:simple-property name="recovery-username"
required="false" type="string" readOnly="false"
description="The user name used for recovery"/>
+ <c:simple-property name="same-rm-override"
required="false" type="boolean" readOnly="false"
description="The is-same-rm-override element allows one to
unconditionally set whether the javax.transaction.xa.XAResource.isSameRM(XAResource)
returns true or false"/>
+ <c:simple-property name="security-application"
required="false" type="boolean" readOnly="false"
description="Indicates that app supplied parameters (such as from getConnection(user,
pw)) are used to distinguish connections in the pool"/>
+ <c:simple-property name="security-domain"
required="false" type="string" readOnly="false"
description="Specifies the security domain which defines the
javax.security.auth.Subject that are used to distinguish connections in the
pool"/>
+ <c:simple-property name="security-domain-and-application"
required="false" type="string" readOnly="false"
description="Indicates that either app supplied parameters (such as from
getConnection(user, pw)) or Subject (from security domain) are used to distinguish
connections in the pool"/>
+ <c:simple-property name="use-ccm" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable the use of a cached connection manager. The default value is
true."/>
+ <c:simple-property name="use-fast-fail"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to fail a connection allocation
on the first try if it is invalid (true) or keep trying until the pool is exhausted of all
potential connections (false). The default value is false."/>
+ <c:simple-property name="use-java-context"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Setting this to false will bind the object
into global JNDI. The default value is true."/>
+ <c:simple-property name="use-try-lock:expr"
required="false" type="long" readOnly="false"
displayName="Use Try Lock" description="Any configured timeout for internal
locks on the resource adapter objects in seconds"/>
+ <c:simple-property name="wrap-xa-resource"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Should the XAResource instances be wrapped
in a org.jboss.tm.XAResourceWrapper instance. The default value is true."/>
+ <c:simple-property name="xa-resource-timeout:expr"
required="false" type="integer" readOnly="false"
displayName="XA Resource Timeout" description="The value is passed to
XAResource.setTransactionTimeout(), in seconds. Default is zero"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="EJB3 (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the ejb3 subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=ejb3"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-clustered-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
clustered stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default entity bean instance pool, which will be applicable
to all entity beans, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-entity-bean-optimistic-locking"
required="false" type="boolean" readOnly="false"
description="If set to true entity beans will use optimistic locking by
default"/>
+ <c:simple-property name="default-mdb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default MDB instance pool, which will be applicable to all
MDBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-resource-adapter-name"
required="false" type="string" readOnly="false"
defaultValue="hornetq-ra" description="Name of the default resource adapter
name that will be used by MDBs, unless overridden at the deployment or bean level. The
default value is hornetq-ra."/>
+ <c:simple-property name="default-sfsb-cache"
required="false" type="string" readOnly="false"
description="Name of the default stateful bean cache, which will be applicable to all
stateful EJBs, unless overridden at the deployment or bean level"/>
+ <c:simple-property name="default-singleton-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for singleton
beans. The default value is 5000."/>
+ <c:simple-property name="default-slsb-instance-pool"
required="false" type="string" readOnly="false"
description="Name of the default stateless bean instance pool, which will be
applicable to all stateless EJBs, unless overridden at the deployment or bean
level"/>
+ <c:simple-property name="default-stateful-bean-access-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="5000" description="The default access timeout for stateful
beans. The default value is 5000."/>
+ <c:simple-property
name="in-vm-remote-interface-invocation-pass-by-value"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If set to false, the parameters to
invocations on remote interface of an EJB, will be passed by reference. Else, the
parameters will be passed by value. The default value is true."/>
+ </resource-configuration>
+
+ <service name="EJB3 Thread Pool (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+ </resource-configuration>
+ </service>
+
+ <service name="File Passivation Store (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A file system based passivation store."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="groups-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/groups"/>
+ <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false"
defaultValue="jboss.server.data.dir"/>
+ <c:simple-property name="sessions-path" required="false"
type="string" readOnly="false"
defaultValue="ejb3/sessions"/>
+ <c:simple-property name="subdirectory-count:expr"
required="false" type="string" readOnly="false"
defaultValue="100"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Strict Max Bean Instance Pool (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A bean instance pool with a strict upper limit"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="strict-max-bean-instance-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="max-pool-size:expr"
required="false" type="string" readOnly="false"
defaultValue="20" description="The maximum number of bean instances that
the pool can hold at a given point in time. The default value is 20."/>
+ <c:simple-property name="timeout:expr" required="false"
type="string" readOnly="false" defaultValue="5"
description="The maximum amount of time to wait for a bean instance to be available
from the pool. The default value is 5."/>
+ <c:simple-property name="timeout-unit" required="false"
type="string" readOnly="false" defaultValue="MINUTES"
description="The instance acquisition timeout unit. The default value is
MINUTES."/>
+ </resource-configuration>
+ </service>
+
+ <service name="SFSB Cache (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A SFSB cache."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cache"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="aliases" description="The aliases by
which this cache may also be referenced">
+ <c:simple-property name="aliases"/>
+ </c:list-property>
+ <c:simple-property name="passivation-store"
required="false" type="string" readOnly="false"
description="The passivation store used by this cache"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Cluster Passivation Store (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A clustered passivation store."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cluster-passivation-store"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="bean-cache" required="false"
type="string" readOnly="false" description="The name of the cache
used to store bean instances."/>
+ <c:simple-property name="cache-container"
required="false" type="string" readOnly="false"
defaultValue="ejb" description="The name of the cache container used for
the bean and client-mappings caches. The default value is ejb."/>
+ <c:simple-property name="client-mappings-cache"
required="false" type="string" readOnly="false"
defaultValue="remote-connector-client-mappings" description="The name of
the cache used to store client-mappings of the EJB remoting connector's
socket-bindings. The default value is remote-connector-client-mappings."/>
+ <c:simple-property name="idle-timeout:expr"
required="false" type="string" readOnly="false"
defaultValue="300" description="The timeout in units specified by
idle-timeout-unit, after which a bean will passivate. The default value is
300."/>
+ <c:simple-property name="idle-timeout-unit"
required="false" type="string" readOnly="false"
defaultValue="SECONDS" description="The unit of idle-timeout. The default
value is SECONDS."/>
+ <c:simple-property name="max-size:expr" required="false"
type="string" readOnly="false" defaultValue="10000"
description="The maximum number of beans this cache should store before forcing old
beans to passivate. The default value is 10000."/>
+ <c:simple-property name="passivate-events-on-replicate"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Indicates whether replication should
trigger passivation events on the bean. The default value is true."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Async Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB3 Asynchronous Invocation Service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=async"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool which handles asynchronous
invocations"/>
+ </resource-configuration>
+ </service>
+
+ <service name="IIOP Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The IIOP service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=iiop"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="enable-by-default"
required="false" type="boolean" readOnly="false"
description="If this is true EJB's will be exposed over IIOP by default,
otherwise it needs to be explicitly enabled in the deployment descriptor"/>
+ <c:simple-property name="use-qualified-name"
required="false" type="boolean" readOnly="false"
description="If true EJB names will be bound into the naming service with the
application and module name prepended to the name (e.g. myapp/mymodule/MyEjb)"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Remote Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB3 remote service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=remote"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="connector-ref" required="false"
type="string" readOnly="false" description="The name of the
connector on which the EJB3 remoting channel is registered"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool that handles remote invocations"/>
+ </resource-configuration>
+
+ <service name="Channel Creation Options (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The options that will be used during the EJB remote
channel creation"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="channel-creation-options"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the
channel creation option">
+ <c:property-options>
+ <c:option value="remoting" name="remoting"/>
+ <c:option value="xnio" name="xnio"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value for the EJB
remote channel creation option"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Timer Service (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The EJB timer service"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="service=timer-service"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="path" required="false"
type="string" readOnly="false" description="The directory to
store persistent timer information in"/>
+ <c:simple-property name="relative-to" required="false"
type="string" readOnly="false" description="The relative path
that is used to resolve the timer data store location"/>
+ <c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool used to run timer service
invocations"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Threads (Profile)"
+ discovery="SubsystemDiscovery"
+ class="ThreadsComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
+ </plugin-configuration>
+
+ <service name="ThreadFactory (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A thread factory (implementing
java.util.concurrent.ThreadFactory)."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-factory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="group-name" required="false"
type="string" readOnly="false" description="Specifies the name of
a thread group to create for this thread factory."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the
created thread factory."/>
+ <c:simple-property name="priority:expr" required="false"
type="string" readOnly="false" defaultValue="-1"
displayName="Priority" description="May be used to specify the thread
priority of created threads. The default value is -1."/>
+ <c:simple-property name="thread-name-pattern"
required="false" type="string" readOnly="false"
description="The template used to create names for threads. The following patterns
may be used:
+ %% - emit a percent sign
+ %t - emit the per-factory thread sequence number
+ %g - emit the global thread sequence number
+ %f - emit the factory sequence number
+ %i - emit the thread ID."/>
+ </resource-configuration>
+ </service>
+
+ <service name="ThreadPool (Profile)"
+ discovery="SubsystemDiscovery"
+ class="ThreadPoolComponent"
+ description="A thread pool executor"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
readOnly="false" type="long" description="The time"/>
+ <c:simple-property name="unit" required="true"
readOnly="false" type="string" description="The time
unit"/>
+ </c:map-property>
+ <c:simple-property name="max-threads:expr"
required="true" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
+ <c:simple-property name="thread-factory"
required="false" type="string" readOnly="false"
description="Specifies the name of a specific thread factory to use to create worker
threads. If not defined an appropriate default thread factory will be used."/>
+
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool" displayName="Thread Pool Type"
description="Thread pool type">
+ <c:property-options>
+ <c:option value="bounded-queue-thread-pool"/>
+ <c:option value="queueless-thread-pool"/>
+ <c:option value="unbounded-queue-thread-pool"/>
+ <c:option value="scheduled-thread-pool"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:template name="Bounded Queue Thread Pool"
description="Bounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="bounded-queue-thread-pool"/>
+ </c:template>
+ <c:template name="Queueless Thread Pool"
description="Queueless Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="queueless-thread-pool"/>
+ </c:template>
+ <c:template name="Scheduled Thread Pool"
description="Scheduled Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="scheduled-thread-pool"/>
+ </c:template>
+ <c:template name="Unbounded Queue Thread Pool"
description="Unbounded Queue Thread Pool">
+ <c:simple-property name="type" readOnly="true"
default="unbounded-queue-thread-pool"/>
+ </c:template>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Security (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of the security subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
+ </resource-configuration>
+
+ <service name="Security Domain (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-domain"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ </resource-configuration>
+
+ <service name="ACL (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="acl=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="acl-modules" required="false"
description="List of acl modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Audit (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="audit=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="provider-modules"
required="false" description="List of provider modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Authentication (Classic - Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="login-modules" required="false"
description="List of authentication modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Authentication (Jaspi - Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=jaspi"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="auth-modules" required="true"
description="List of authentication modules to be used." >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ <c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+
+ <service name="Login Module Stack (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="login-module-stack"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="login-modules"
required="true" description="List of authentication modules" >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Authorization (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authorization=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="policy-modules"
required="false" description="List of authorization modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Identity Trust (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="identity-trust=classic"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="trust-modules" required="false"
description="List of trust modules">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
- <service name="Domain Ssl"
+ <service name="JSSE (Profile)"
discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
-
- <runs-inside>
- <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
- </runs-inside>
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ <c:simple-property name="path" readOnly="true"
default="jsse"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
- <c:simple-property name="ca-revocation-ur"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
- <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
- <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
- <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
- <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
+ <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
+ <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
+ <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the KeyManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
keystore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyStore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
+ <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
+ <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
+ <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the TrustManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the TrustManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
truststore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the truststore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
+ </c:map-property>
</resource-configuration>
- </service><!-- End of ssl service -->
- </service><!-- End of Domain Modcluster Service Configuration -->
- </service>
+ </service>
- <service name="Naming (Profile)"
- discovery="SubsystemDiscovery"
- class="NamingComponent"
- singleton="true">
+ <service name="Mapping (Profile)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mapping=classic"/>
+ </plugin-configuration>
- <service name="Binding (Profile)"
- class="BaseComponent"
+ <resource-configuration>
+ <c:list-property name="mapping-modules"
required="false" description="List of modules that map principal, role, and
credential information">
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of mapping this
module performs. Allowed values are principal, role, attribute or credential.."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Vault (Profile)"
discovery="SubsystemDiscovery"
- description="JNDI bindings for primitive types"
+ class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="binding"/>
+ <c:simple-property name="path" readOnly="true"
default="vault=classic"/>
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
- <c:property-options>
- <c:option value="simple"/>
- <c:option value="lookup"/>
- <c:option value="object-factory"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
- <c:simple-property name="lookup" required="false"
type="string" readOnly="false" description="The entry to lookup
in JNDI for lookup bindings"/>
- <c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module to load
the object factory from for object factory bindings"/>
- <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
- <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value to bind for
simple bindings"/>
+ <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
</resource-configuration>
</service>
</service>
</service>
+
<service name="JVM"
discovery="JVMDiscoveryComponent"
class="BaseComponent"
@@ -2516,14 +4753,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5499,14 +7733,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=jca"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5688,12 +7919,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=cmp"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="HiloKeygenerator"
@@ -5707,18 +7936,18 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="block-size" required="false"
type="long" readOnly="true" description="The block
size"/>
- <c:simple-property name="create-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create create the tables"/>
- <c:simple-property name="create-table-ddl"
required="false" type="string" readOnly="true"
description="The DDL used to create the table"/>
- <c:simple-property name="data-source" required="true"
type="string" readOnly="true" description="The datasource used
for sequence generation">
+ <c:simple-property name="block-size" required="false"
type="long" readOnly="false" description="The block
size"/>
+ <c:simple-property name="create-table" required="false"
type="boolean" readOnly="false" description="Boolean to determine
whether to create create the tables"/>
+ <c:simple-property name="create-table-ddl"
required="false" type="string" readOnly="false"
description="The DDL used to create the table"/>
+ <c:simple-property name="data-source" required="true"
type="string" readOnly="false" description="The datasource used
for sequence generation">
<c:option-source target="resource"
expression="type='DataSource (Standalone)'
plugin=&pluginName;"/>
</c:simple-property>
- <c:simple-property name="drop-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create drop the tables"/>
- <c:simple-property name="id-column" required="true"
type="string" readOnly="true" description="The ID column
name"/>
- <c:simple-property name="select-hi-ddl" required="false"
type="string" readOnly="true" description="The DDL used to select
the hi value"/>
- <c:simple-property name="sequence-column" required="true"
type="string" description="The sequence column name"/>
- <c:simple-property name="sequence-name" required="true"
type="string" description="The name of the sequence"/>
- <c:simple-property name="table-name" required="true"
type="string" description="The table name"/>
+ <c:simple-property name="drop-table" required="false"
type="boolean" readOnly="false" description="Boolean to determine
whether to create drop the tables"/>
+ <c:simple-property name="id-column" required="true"
type="string" readOnly="false" description="The ID column
name"/>
+ <c:simple-property name="select-hi-ddl" required="false"
type="string" readOnly="false" description="The DDL used to
select the hi value"/>
+ <c:simple-property name="sequence-column" required="true"
type="string" readOnly="false" description="The sequence column
name"/>
+ <c:simple-property name="sequence-name" required="true"
type="string" readOnly="false" description="The name of the
sequence"/>
+ <c:simple-property name="table-name" required="true"
type="string" readOnly="false" description="The table
name"/>
</resource-configuration>
</service>
@@ -5751,6 +7980,7 @@
</resource-configuration>
</service>
+
<service name="Security"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -5758,14 +7988,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5800,64 +8027,164 @@
<service name="ACL"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="acl"/>
+ <c:simple-property name="path" readOnly="true"
default="acl=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="acl-modules" required="false"
description="List of acl modules">
- <c:simple-property name="acl-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the acl provider module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
-
</service>
<service name="Audit"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="audit"/>
+ <c:simple-property name="path" readOnly="true"
default="audit=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="provider-modules"
required="false" description="List of provider modules">
- <c:simple-property name="provider-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
</service>
- <service name="Authentication"
+ <service name="Authentication (Classic)"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authentication"/>
+ <c:simple-property name="path" readOnly="true"
default="authentication=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="login-modules" required="false"
description="List of authentication modules">
- <c:simple-property name="login-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Authentication (Jaspi)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication=jaspi"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="auth-modules" required="true"
description="List of authentication modules to be used." >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the auth module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ <c:simple-property name="login-module-stack-ref"
required="false" type="string" readOnly="false"
description="Reference to a login module stack name previously configured in the same
security domain."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
+
+ <service name="Login Module Stack"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="login-module-stack"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="login-modules" required="true"
description="List of authentication modules" >
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the login module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
</service>
<service name="Authorization"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authorization"/>
+ <c:simple-property name="path" readOnly="true"
default="authorization=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="policy-modules" required="false"
description="List of authorization modules">
- <c:simple-property name="policy-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the policy module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
</service>
@@ -5865,15 +8192,28 @@
<service name="Identity Trust"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="identity-trust"/>
+ <c:simple-property name="path" readOnly="true"
default="identity-trust=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="trust-modules" required="false"
description="List of trust modules">
- <c:simple-property name="trust-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="flag" required="true"
type="string" readOnly="false" description="The flag controls how
the module participates in the overall procedure. Allowed values are requisite, required,
sufficient or optional.">
+ <c:property-options>
+ <c:option value="sufficient"/>
+ <c:option value="requisite"/>
+ <c:option value="optional"/>
+ <c:option value="required"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="module" required="true"
type="string" readOnly="false" description="Name of JBoss Module
where the identity trust module code is located."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
</service>
@@ -5892,29 +8232,29 @@
<c:simple-property name="client-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the client alias."/>
<c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
<c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
- <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the KeyManagerFactory."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyManagerFactory."/>
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the KeyManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyManagerFactory."/>
</c:map-property>
<c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
- <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
keystore."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyStore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
keystore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the KeyStore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
</c:map-property>
<c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
<c:simple-property name="server-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the server alias."/>
<c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
<c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
- <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the TrustManagerFactory."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the TrustManagerFactory."/>
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="false" description="Algorithm to use when
creating the TrustManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the TrustManagerFactory."/>
</c:map-property>
<c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
- <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
truststore."/>
- <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the truststore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="false" description="URL of the
truststore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="false" description="Provider class name
to use when creating the truststore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="false"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
</c:map-property>
</resource-configuration>
</service>
@@ -5922,15 +8262,20 @@
<service name="Mapping"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mapping"/>
+ <c:simple-property name="path" readOnly="true"
default="mapping=classic"/>
</plugin-configuration>
<resource-configuration>
<c:list-property name="mapping-modules" required="false"
description="List of modules that map principal, role, and credential
information">
- <c:simple-property name="mapping-modules"/>
+ <c:map-property name="*" required="false">
+ <c:simple-property name="code" required="true"
type="string" readOnly="false" description="Class name of the
module to be instantiated."/>
+ <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of mapping this
module performs. Allowed values are principal, role, attribute or credential.."/>
+ <c:simple-property name="module-options"
required="false" type="string" readOnly="false"
description="List of module options containing a name/value pair."/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
</service>
@@ -5938,32 +8283,33 @@
<service name="Vault"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ singleton="true"
+ createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="vault"/>
+ <c:simple-property name="path" readOnly="true"
default="vault=classic"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
</resource-configuration>
</service>
+
</service>
+
<service name="Threads"
discovery="SubsystemDiscovery"
class="ThreadsComponent"
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="ThreadFactory"
@@ -6048,14 +8394,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=ejb3"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -6074,7 +8417,8 @@
<service name="EJB3 Thread Pool"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur.">
+ description="A thread pool executor with an unbounded queue. Such a
thread pool has a core size and a queue with no upper bound. When a task is submitted, if
the number of running threads is less than the core size, a new thread is created.
Otherwise, the task is placed in queue. If too many tasks are allowed to be submitted to
this type of executor, an out of memory condition may occur."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="thread-pool"/>
@@ -6083,17 +8427,16 @@
<metric property="active-count" description="The approximate
number of threads that are actively executing tasks."/>
<metric property="completed-task-count" description="The
approximate total number of tasks that have completed execution."/>
<metric property="current-thread-count" description="The current
number of threads in the pool."/>
- <metric property="keepalive-time:time" description="The
time"/>
<metric property="largest-thread-count" description="The largest
number of threads that have ever simultaneously been in the pool."/>
<metric property="rejected-count" description="The number of
tasks that have been rejected."/>
<metric property="task-count" description="The approximate total
number of tasks that have ever been scheduled for execution."/>
<resource-configuration>
- <c:map-property name="keepalive-time" description="Used to
specify the amount of time that pool threads should be kept running when idle; if not
specified, threads will run until the executor is shut down.">
- <c:simple-property name="time" required="true"
type="long" readOnly="true" description="The time"/>
- <c:simple-property name="unit" required="true"
type="string" readOnly="true" description="The time
unit"/>
+ <c:map-property name="keepalive-time" readOnly="false"
description="Used to specify the amount of time that pool threads should be kept
running when idle; if not specified, threads will run until the executor is shut
down.">
+ <c:simple-property name="time" required="true"
type="long" readOnly="false" description="The time"/>
+ <c:simple-property name="unit" required="true"
type="string" readOnly="false" description="The time
unit"/>
</c:map-property>
- <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="false"
description="The maximum thread pool size."/>
+ <c:simple-property name="max-threads:expr"
required="false" type="string" readOnly="false"
displayName="Max Threads" description="The maximum thread pool
size."/>
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="The name of the thread
pool."/>
<c:simple-property name="thread-factory" required="false"
type="string" readOnly="false" description="Specifies the name of
a specific thread factory to use to create worker threads. If not defined an appropriate
default thread factory will be used."/>
</resource-configuration>
@@ -6102,7 +8445,8 @@
<service name="File Passivation Store"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A file system based passivation store.">
+ description="A file system based passivation store."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="file-passivation-store"/>
@@ -6122,7 +8466,8 @@
<service name="Strict Max Bean Instance Pool"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A bean instance pool with a strict upper limit">
+ description="A bean instance pool with a strict upper limit"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="strict-max-bean-instance-pool"/>
@@ -6135,10 +8480,11 @@
</resource-configuration>
</service>
- <service name="EJB3 Cache"
+ <service name="SFSB Cache"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A SFSB cache.">
+ description="A SFSB cache."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="cache"/>
@@ -6155,7 +8501,8 @@
<service name="Cluster Passivation Store"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A clustered passivation store.">
+ description="A clustered passivation store."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="cluster-passivation-store"/>
@@ -6217,6 +8564,27 @@
<c:simple-property name="connector-ref" required="false"
type="string" readOnly="false" description="The name of the
connector on which the EJB3 remoting channel is registered"/>
<c:simple-property name="thread-pool-name"
required="false" type="string" readOnly="false"
description="The name of the thread pool that handles remote invocations"/>
</resource-configuration>
+
+ <service name="Channel Creation Options"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The options that will be used during the EJB remote
channel creation"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="channel-creation-options"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the
channel creation option">
+ <c:property-options>
+ <c:option value="remoting" name="remoting"/>
+ <c:option value="xnio" name="xnio"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value for the EJB
remote channel creation option"/>
+ </resource-configuration>
+ </service>
</service>
<service name="Timer Service"
@@ -6248,21 +8616,32 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=jmx"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="show-model" required="false"
type="boolean" readOnly="false" description="Set to
'true' to include MBeans for the model controller resources"/>
- <c:group name="children:remoting-connector" displayName="JBoss
remoting connector for the JMX subsystem.">
- <c:simple-property name="use-management-endpoint"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If true the connector will use the
management endpoint, otherwise it will use the remoting subsystem one. The default value
is true."/>
- </c:group>
</resource-configuration>
+ <service name="Remoting Connector"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The configuration of a resource adapter."
+ singleton="true"
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="remoting-connector=jmx"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="use-management-endpoint"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="If true the connector will use the
management endpoint, otherwise it will use the remoting subsystem one. The default value
is true."/>
+ </resource-configuration>
+ </service>
+
</service>
@@ -6273,14 +8652,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="Resource Adapter"
@@ -6325,22 +8701,6 @@
</service>
- <service name="Config Properties"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="Custom defined config properties."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="config-properties"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="value" required="false"
type="string" readOnly="true" description="Custom defined config
property value"/>
- </resource-configuration>
-
- </service>
-
<service name="Connection Definitions"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -6413,21 +8773,6 @@
<c:simple-property name="wrap-xa-resource"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Should the XAResource instances be wrapped
in a org.jboss.tm.XAResourceWrapper instance. The default value is true."/>
<c:simple-property name="xa-resource-timeout:expr"
required="false" type="integer" readOnly="false"
displayName="XA Resource Timeout" description="The value is passed to
XAResource.setTransactionTimeout(), in seconds. Default is zero"/>
</resource-configuration>
-
- <service name="Config Properties (Connection Definition)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="Custom defined config properties."
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="config-properties"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="value" required="false"
type="string" readOnly="true" description="Custom defined config
property value"/>
- </resource-configuration>
- </service>
</service>
</service>
@@ -6607,14 +8952,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<operation name="subsystem:activate" displayName="Activate"
description="Activate the OSGi subsystem.">
@@ -6626,32 +8968,13 @@
<resource-configuration>
<c:simple-property name="activation" required="false"
type="string" readOnly="false" defaultValue="LAZY"
description="Activation flag for the OSGi subsystem. Possible values: lazy, eager.
The default value is LAZY."/>
<c:simple-property name="startlevel" required="false"
type="integer" readOnly="false" description="The current Start
Level of the OSGi Framework. Changing this value will change the Start Level of the
Framework accordingly."/>
- <c:list-property name="property" description="A list of generic
key/value properties.">
- <c:map-property name="property:collapsed"
displayName="Property">
- <c:simple-property name="name:0" type="string"
displayName="Name" required="true"/>
- <c:simple-property name="value:1" type="string"
displayName="Value" required="true"/>
- </c:map-property>
- </c:list-property>
</resource-configuration>
- <service name="Property (Osgi)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="A framework property. The identity of the resource defines
the property name.">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="property"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="value" required="true"
type="string" readOnly="false" description="The framework
property value."/>
- </resource-configuration>
- </service>
-
<service name="Capability"
discovery="SubsystemDiscovery"
class="BaseComponent"
- description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle.">
+ description="A framework capability. A capability maps to a JBoss
Module in the modules directory or an OSGi bundle in the bundles directory. The identity
maps to the resource identifier of the module or bundle."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="capability"/>
@@ -8217,6 +10540,8 @@
<runs-inside>
<parent-resource-type name="Endpoint"
plugin="&pluginName;"/>
+ <parent-resource-type name="Osgi"
plugin="&pluginName;"/>
+ <parent-resource-type name="Osgi (Profile)"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
@@ -8235,6 +10560,7 @@
<runs-inside>
<parent-resource-type name="Endpoint (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Osgi (Managed Server)"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
@@ -8246,4 +10572,45 @@
</resource-configuration>
</service>
+ <service name="Config Properties"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Custom defined config properties."
+ createDeletePolicy="both">
+
+ <runs-inside>
+ <parent-resource-type name="Connection Definitions"
plugin="&pluginName;"/>
+ <parent-resource-type name="Connection Definitions (Profile)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Resource Adapter"
plugin="&pluginName;"/>
+ <parent-resource-type name="Resource Adapter (Profile)"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="config-properties"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="false"
type="string" readOnly="true" description="Custom defined config
property value"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Config Properties (Read Only)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Custom defined config properties.">
+
+ <runs-inside>
+ <parent-resource-type name="Connection Definitions (Managed Server)"
plugin="&pluginName;"/>
+ <parent-resource-type name="Resource Adapter (Managed Server)"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="config-properties"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="false"
type="string" readOnly="true" description="Custom defined config
property value"/>
+ </resource-configuration>
+ </service>
+
</plugin>
commit b8f67855445081683f56bd1dd27e0239f7114a9e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 24 17:05:44 2012 -0400
[BZ 824898] fix the logging so we can see the full, real, exception with the ID. this
lets you match the gwt client exception with the full server side exception. for some
reason, this class lost the ability to log messages to the server log file - i think it
happened when we changed to gwt logging
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AbstractGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AbstractGWTServiceImpl.java
index f68d407..7017cc5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AbstractGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AbstractGWTServiceImpl.java
@@ -29,10 +29,12 @@ import javax.servlet.http.HttpServletResponse;
import com.google.gwt.user.server.rpc.RPCRequest;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
-import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.util.HibernatePerformanceMonitor;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -44,6 +46,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
public abstract class AbstractGWTServiceImpl extends RemoteServiceServlet {
private static final long serialVersionUID = 1L;
+ private Log log = LogFactory.getLog(this.getClass());
private ThreadLocal<Subject> sessionSubject = new
ThreadLocal<Subject>();
private ThreadLocal<String> rpcMethod = new ThreadLocal<String>();
@@ -52,9 +55,13 @@ public abstract class AbstractGWTServiceImpl extends
RemoteServiceServlet {
return sessionSubject.get();
}
+ protected Log getLog() {
+ return log;
+ }
+
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
- if (Log.isTraceEnabled()) {
+ if (log.isTraceEnabled()) {
printHeaders(req);
}
@@ -66,11 +73,11 @@ public abstract class AbstractGWTServiceImpl extends
RemoteServiceServlet {
Subject subject =
subjectManager.getSubjectBySessionId(Integer.parseInt(sid));
sessionSubject.set(subject);
} catch (Exception e) {
- Log.trace("Failed to validate request: sessionId was '" +
sid + "', requestURL=" + req.getRequestURL());
+ log.trace("Failed to validate request: sessionId was '" +
sid + "', requestURL=" + req.getRequestURL());
continueProcessing = false;
}
} else {
- Log.debug("Failed to validate request: sessionId missing,
requestURL=" + req.getRequestURL());
+ log.debug("Failed to validate request: sessionId missing,
requestURL=" + req.getRequestURL());
continueProcessing = false;
}
@@ -120,8 +127,7 @@ public abstract class AbstractGWTServiceImpl extends
RemoteServiceServlet {
id.append("] ");
// log the exception server-side
- //logger.warning("Sending exception to client: " + id.toString(), t);
- Log.warn("Sending exception to client: " + id.toString(), t);
+ log.warn("Sending exception to client: " + id.toString(), t);
// cannot assume gwt client has our exception classes, only send the messages in
a generic runtime exception
return new RuntimeException(id.toString() + ThrowableUtil.getAllMessages(t));
@@ -132,9 +138,9 @@ public abstract class AbstractGWTServiceImpl extends
RemoteServiceServlet {
// TODO: figure out why SESSION_NAME header and other GWT-specific headers are
missing occasionally
// seems to only happen on polling for recent alerts when there is no user
activity for a few minutes
Enumeration<String> headerNames = req.getHeaderNames();
- Log.trace(req.getRequestURL().toString());
+ log.trace(req.getRequestURL().toString());
while (headerNames.hasMoreElements()) {
- Log.trace(" " + headerNames.nextElement());
+ log.trace(" " + headerNames.nextElement());
}
}
}
commit 802ff8d372ca0431c96a7c735021790ec0c0d1c0
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 24 17:03:26 2012 -0400
[BZ 824898] change to the throwables util class: if we were told not to show the class
name but the message was null, show the class name at least - otherwise, you'll get an
even more useless string of "null"
diff --git
a/modules/core/util/src/main/java/org/rhq/core/util/exception/ThrowableUtil.java
b/modules/core/util/src/main/java/org/rhq/core/util/exception/ThrowableUtil.java
index 23bc1cf..043856d 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/exception/ThrowableUtil.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/exception/ThrowableUtil.java
@@ -183,10 +183,11 @@ public class ThrowableUtil {
String msg;
+ String tMessage = t.getMessage();
if (includeExceptionName) {
- msg = t.getClass().getName() + ":" + t.getMessage();
+ msg = t.getClass().getName() + ":" + tMessage;
} else {
- msg = t.getMessage();
+ msg = (tMessage != null) ? tMessage : t.getClass().getName();
}
if (t instanceof SQLException) {
@@ -198,10 +199,11 @@ public class ThrowableUtil {
while ((t.getCause() != null) && (t != t.getCause())) {
t = t.getCause();
+ tMessage = t.getMessage();
if (includeExceptionName) {
- msg = t.getClass().getName() + ":" + t.getMessage();
+ msg = t.getClass().getName() + ":" + tMessage;
} else {
- msg = t.getMessage();
+ msg = (tMessage != null) ? tMessage : t.getClass().getName();
}
if (t instanceof SQLException) {
@@ -278,20 +280,24 @@ public class ThrowableUtil {
ArrayList<String> list = new ArrayList<String>();
if (t != null) {
+
+ String tMessage = t.getMessage();
if (includeExceptionName) {
- list.add(t.getClass().getName() + ":" + t.getMessage());
+ list.add(t.getClass().getName() + ":" + tMessage);
} else {
- list.add(t.getMessage());
+ list.add((tMessage != null) ? tMessage : t.getClass().getName());
+
}
while ((t.getNextException() != null) && (t != t.getNextException()))
{
String msg;
t = t.getNextException();
+ tMessage = t.getMessage();
if (includeExceptionName) {
- msg = t.getClass().getName() + ":" + t.getMessage();
+ msg = t.getClass().getName() + ":" + tMessage;
} else {
- msg = t.getMessage();
+ msg = (tMessage != null) ? tMessage : t.getClass().getName();
}
list.add(msg + "(error-code=" + t.getErrorCode() +
",sql-state=" + t.getSQLState() + ")");
@@ -355,6 +361,7 @@ public class ThrowableUtil {
while ((t.getCause() != null) && (t != t.getCause())) {
t = t.getCause();
}
- return t.getMessage();
+ String rootMessage = t.getMessage();
+ return (rootMessage != null) ? rootMessage : t.getClass().getName();
}
}
\ No newline at end of file
diff --git
a/modules/core/util/src/test/java/org/rhq/core/util/exception/ThrowableUtilTest.java
b/modules/core/util/src/test/java/org/rhq/core/util/exception/ThrowableUtilTest.java
index 9d19293..1f76539 100644
--- a/modules/core/util/src/test/java/org/rhq/core/util/exception/ThrowableUtilTest.java
+++ b/modules/core/util/src/test/java/org/rhq/core/util/exception/ThrowableUtilTest.java
@@ -23,6 +23,7 @@
package org.rhq.core.util.exception;
import java.sql.SQLException;
+
import org.testng.annotations.Test;
/**
@@ -38,15 +39,16 @@ public class ThrowableUtilTest {
public void testGetAllMessagesArray() {
assert ThrowableUtil.getAllMessagesArray(null, false).length == 0;
assert ThrowableUtil.getAllMessagesArray(new Throwable(), false).length == 1;
- assert ThrowableUtil.getAllMessagesArray(new Throwable(), false)[0] == null;
+ assert ThrowableUtil.getAllMessagesArray(new Throwable(),
false)[0].equals(Throwable.class.getName());
assert ThrowableUtil.getAllMessagesArray(new Throwable((String) null),
false).length == 1;
- assert ThrowableUtil.getAllMessagesArray(new Throwable((String) null), false)[0]
== null;
+ assert ThrowableUtil.getAllMessagesArray(new Exception((String) null),
false)[0].equals(Exception.class
+ .getName());
assert ThrowableUtil.getAllMessagesArray(new Throwable("boo"),
false).length == 1;
assert ThrowableUtil.getAllMessagesArray(new Throwable("boo"),
false)[0].equals("boo");
assert ThrowableUtil.getAllMessages(null, false).equals(">> exception
was null <<");
- assert ThrowableUtil.getAllMessages(new Throwable(),
false).equals("null");
- assert ThrowableUtil.getAllMessages(new Throwable((String) null),
false).equals("null");
+ assert ThrowableUtil.getAllMessages(new Throwable(),
false).equals(Throwable.class.getName());
+ assert ThrowableUtil.getAllMessages(new Throwable((String) null),
false).equals(Throwable.class.getName());
assert ThrowableUtil.getAllMessages(new Throwable("boo"),
false).equals("boo");
Throwable t = new Throwable("one", new Exception("two", new
Error("three")));
@@ -59,9 +61,9 @@ public class ThrowableUtilTest {
t = new Throwable("one", new Exception(null, new
Error("three")));
assert ThrowableUtil.getAllMessagesArray(t, false).length == 3;
assert ThrowableUtil.getAllMessagesArray(t, false)[0].equals("one");
- assert ThrowableUtil.getAllMessagesArray(t, false)[1] == null;
+ assert ThrowableUtil.getAllMessagesArray(t,
false)[1].equals(Exception.class.getName());
assert ThrowableUtil.getAllMessagesArray(t, false)[2].equals("three");
- assert ThrowableUtil.getAllMessages(t, false).equals("one -> null ->
three");
+ assert ThrowableUtil.getAllMessages(t, false).equals("one -> " +
Exception.class.getName() + " -> three");
}
public void testSqlException() {
commit a8339a172dddf1f7b98e4502d8bbc3f8b6ca3208
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 24 16:29:18 2012 -0400
[811288] Not part of the fix, additional logging.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
index 59b3e51..1af10d6 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
@@ -127,7 +127,7 @@ public class ConfigurationCheckExecutor implements Runnable, Callable
{
}
if (checkChildren) {
- for (Resource child :
this.inventoryManager.getContainerChildren(resourceContainer)) {
+ for (Resource child :
this.inventoryManager.getContainerChildren(resource, resourceContainer)) {
try {
checkConfigurations(child, true);
} catch (Exception e) {
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
index c6f605e..0a4f5c3 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
@@ -166,7 +166,7 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
}
}
- for (Resource child : inventoryMgr.getContainerChildren(container)) {
+ for (Resource child : inventoryMgr.getContainerChildren(r, container)) {
initSchedules(child, inventoryMgr);
}
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
index bc9d57d..44a388d 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
@@ -348,8 +348,7 @@ public class AvailabilityExecutor implements Runnable,
Callable<AvailabilityRepo
availabilityReport.addAvailability(availability);
}
- // traverse the hierarchy using the container's resource, which should be up
to date
- for (Resource child :
this.inventoryManager.getContainerChildren(resourceContainer)) {
+ for (Resource child : this.inventoryManager.getContainerChildren(resource,
resourceContainer)) {
checkInventory(child, availabilityReport, current, isForced, scan);
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index ac2ef61..30680d5 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1299,22 +1299,42 @@ public class InventoryManager extends AgentService implements
ContainerService,
* the container's resource is guaranteed to be up to date.
*
* @param parentResource
- * @return the children, may be empty, not null.
+ * @return the children. parentResouce children if there is no container. May be
empty. Not null.
*/
public Set<Resource> getContainerChildren(Resource parentResource) {
- ResourceContainer container = getResourceContainer(parentResource);
- return (null == container) ? parentResource.getChildResources() :
container.getResource().getChildResources();
+ return getContainerChildren(parentResource,
getResourceContainer(parentResource));
}
- /**
+ /**
* Get the parent resource's children, ensuring we use the resource container
version of the resource, because
* the container's resource is guaranteed to be up to date.
*
+ * @param parentResource
* @param parentContainer
- * @return the children, empty if parentContainer is null or there are no children.
not null.
+ * @return the children, empty if parentContainer is null or there are no children.
not null.
+ * @return the children, may be empty, not null.
*/
- public Set<Resource> getContainerChildren(ResourceContainer parentContainer) {
- return (null == parentContainer) ? new HashSet<Resource>() :
parentContainer.getResource().getChildResources();
+ public Set<Resource> getContainerChildren(Resource parentResource,
ResourceContainer container) {
+ if (null == container) {
+ return parentResource.getChildResources();
+ }
+
+ Resource parentContainerResource = container.getResource();
+
+ // this is just to log whether there was an reason to actually call this method
+ if (parentResource != parentContainerResource && log.isDebugEnabled()) {
+ Set<Resource> containerChildren =
parentContainerResource.getChildResources();
+ Set<Resource> localChildren = parentResource.getChildResources();
+ if (containerChildren.equals(localChildren)) {
+ log.debug("Container resource different from local resource.\n
Container: " + parentContainerResource
+ + "\n Local: " + parentResource);
+ } else {
+ log.debug("Container resource different from local resource and
children differ!\n Container:"
+ + container + containerChildren + "\n Local:" +
parentResource + localChildren);
+ }
+ }
+
+ return parentContainerResource.getChildResources();
}
public Resource getPlatform() {
@@ -1609,7 +1629,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (parentResourceContainer == null) {
// The parent probably just got uninventoried - log a DEBUG message and
abort.
log.debug(resource + " not being prepared for activation - container
not found for parent "
- + parentResource + ".");
+ + parentResource + ".");
return false;
}
}
@@ -1629,7 +1649,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
// Start the resource, but only if its parent component is running. If the parent
is null, that means
// the resource is, itself, the root platform, which we always activate.
- boolean isParentStarted = (parentResourceContainer == null) ||
(parentResourceContainer.getResourceComponentState() == ResourceComponentState.STARTED);
+ boolean isParentStarted = (parentResourceContainer == null)
+ || (parentResourceContainer.getResourceComponentState() ==
ResourceComponentState.STARTED);
if (isParentStarted) {
PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
@@ -1983,7 +2004,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
ResourceContainer container = getResourceContainer(resource);
if ((container != null) && (container.getResourceComponentState() ==
ResourceComponentState.STARTED)) {
// traverse the hierarchy using the container's resource, which
should be up to date
- for (Resource child : getContainerChildren(container)) {
+ for (Resource child : getContainerChildren(resource, container)) {
deactivateResource(child);
}
@@ -2816,8 +2837,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
parentResource = parentResourceContainer.getResource();
} else {
log.debug("Skipping merge of " + resourceFromServer
- + " into local inventory, since a container was not found
for its parent "
- + parentResourceFromServer + ".");
+ + " into local inventory, since a container was not found for
its parent "
+ + parentResourceFromServer + ".");
return;
}
} else {
@@ -2827,8 +2848,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
// See if the Resource already exists in our inventory.
Resource existingResource = findMatchingChildResource(resourceFromServer,
parentResource);
- if ((existingResource == null) &&
- (resourceFromServer.getResourceType().getCategory() ==
ResourceCategory.PLATFORM)) {
+ if ((existingResource == null)
+ && (resourceFromServer.getResourceType().getCategory() ==
ResourceCategory.PLATFORM)) {
// This should never happen, but add a check so we'll know if it ever
does.
log.error("Existing platform [" + this.platform + "] has
different Resource type and/or Resource key than "
+ "platform in Server inventory: " + resourceFromServer);
@@ -3047,7 +3068,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (activate) {
try {
activateResource(resource, container, false);
- for (Resource child : getContainerChildren(container)) {
+ for (Resource child : getContainerChildren(resource, container)) {
activateAndUpgradeResourceRecursively(child, doUpgrade);
}
} catch (InvalidPluginConfigurationException e) {
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
index 92621a3..9ab82cb 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
@@ -209,7 +209,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
scheduleCollection(resourceId, schedules);
}
- for (Resource child :
this.inventoryManager.getContainerChildren(container)) {
+ for (Resource child :
this.inventoryManager.getContainerChildren(resource, container)) {
reschedule(child);
}
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
index 572fc54..cfa6fa7 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
@@ -113,7 +113,7 @@ public abstract class AbstractResourceUpgradeHandlingTest extends
ResourceUpgrad
"A resource that has not been upgraded due to upgrade error in
parent should be stopped.");
//recurse, since the whole subtree under the failed resource should be not
upgraded and stopped.
- Set<Resource> children = im.getContainerChildren(rc);
+ Set<Resource> children = im.getContainerChildren(res, rc);
checkResourcesNotUpgraded(children, children.size());
}
}
commit 77d51c191153d189cce5866835fba566c7662bed
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 24 21:58:41 2012 +0200
BZ 824889 support outbound sockets
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index bc23504..aeb3112 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -1410,14 +1410,14 @@
<!-- This service locates the ModCluster node identifier aka jvmRoute details,
parses getProxyInformation
from a valid modcluster configuration and only exposes webapplications hosted
by the AS7 instance co-located
with the RHQ agent. Of these exposed resources the supported
enable*/disable*/stop* -context operations
- are supported. In a homogeneous cluster environment where RHQ monitors all
cluster members as well the entire
- webapp application context suite should be controllable via RHQ groups or from
individual modcluster instances.
+ are supported. In a homogeneous cluster environment where RHQ monitors all
cluster members as well the entire
+ webapp application context suite should be controllable via RHQ groups or from
individual modcluster instances.
-->
<!-- [BZ 823624] this is disabled until this bug is addressed. Will need to
uncomment and populate jvmRoute in
ModClusterContextDiscoveryComponent -->
- <!--<service name="Webapp Context"
+ <!--<service name="Webapp Context"
class="ModClusterContextComponent"
- discovery="ModClusterContextDiscoveryComponent"
+ discovery="ModClusterContextDiscoveryComponent"
description="Webapp Context">
<plugin-configuration>
@@ -1666,7 +1666,7 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="true"
description="Protocol binding"/>
+ <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="true"
description="Protocol binding"/>
</resource-configuration>
<service name="Post Handler (Managed Server)"
@@ -2018,7 +2018,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to SMTP server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
@@ -2035,7 +2037,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to IMAP server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
@@ -2052,7 +2056,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
@@ -3546,7 +3552,7 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
+ <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
</resource-configuration>
<service name="Post Handler"
@@ -3973,6 +3979,38 @@
</c:map-property>
</c:list-property>
</c:group>
+ <c:group
name="children:remote-destination-outbound-socket-binding:name+"
displayName="Remote outbound sockets">
+ <c:list-property name="*1" displayName="Bindings">
+ <c:map-property name="*:name">
+ <c:simple-property name="name" description="The name of the
socket binding. Services which need to access the socket configuration information will
find it using this name." readOnly="true"/>
+ <c:simple-property name="port:expr" displayName="Port"
required="true" description="The port number of the remote destination to
which the outbound socket should connect. ${} Expresions are allowed."/>
+ <c:simple-property name="host" displayName="Host"
required="true" description="The host name or the IP address of the remote
destination to which this outbound socket will connect."/>
+ <c:simple-property name="source-interface"
displayName="Source Interface" required="false" description="The
name of the interface which will be used for the source address of the outbound
socket.">
+ <c:option-source target="resource"
expression="type='Network Interface' plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="source-port:expr"
displayName="Source Port" required="false" description="The port
number which will be used as the source port of the outbound socket.. ${} Expresions are
allowed."/>
+ <c:simple-property name="fixed-source-port"
description="Whether the port value should remain fixed even if numeric offsets are
applied to the other outbound sockets in the socket group."
+ type="boolean"
defaultValue="false"/>
+
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ <c:group
name="children:local-destination-outbound-socket-binding:name+"
displayName="Local outbound sockets">
+ <c:list-property name="*2" displayName="Bindings">
+ <c:map-property name="*:name">
+ <c:simple-property name="name" description="The name of the
socket binding. Services which need to access the socket configuration information will
find it using this name." readOnly="true"/>
+ <c:simple-property name="socket-binding-ref"
required="true" readOnly="false" description="The name of the
local socket-binding which will be used to determine the port to which this outbound
socket connects.">
+ <c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
+ <c:simple-property name="source-interface"
displayName="Source Interface" required="false" description="The
name of the interface which will be used for the source address of the outbound
socket.">
+ <c:option-source target="resource"
expression="type='Network Interface' plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="source-port:expr"
displayName="Source Port" required="false" description="The port
number which will be used as the source port of the outbound socket.. ${} Expresions are
allowed."/>
+ <c:simple-property name="fixed-source-port"
description="Whether the port value should remain fixed even if numeric offsets are
applied to the other outbound sockets in the socket group."
+ type="boolean"
defaultValue="false"/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
</resource-configuration>
</service>
@@ -6704,7 +6742,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to SMTP server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
@@ -6726,7 +6766,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to IMAP server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
@@ -6748,7 +6790,9 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server">
+ <c:option-source target="configuration"
expression="*1/remote-destination-outbound-socket-binding=name:type=SocketBindingGroup"/>
+ </c:simple-property>
<c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
<c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
<c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
commit 5c4322c3a5ac265cb9703b5bd3f58db5af645b02
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 24 13:13:01 2012 -0400
[BZ 824401] handle condition of a missing parent resourceContainer more gracefully in
a few places, since it's normal in situations where the corresponding resource was
just uninventoried - we now log a DEBUG message, rather than an ERROR message + stack
trace; add a PC integration test that verifies Resource uninventory works
(
https://bugzilla.redhat.com/show_bug.cgi?id=824401)
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index 51ce213..e9305fc 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -48,7 +48,7 @@ import org.rhq.test.arquillian.RunDiscovery;
import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
/**
- * A unit test for the {@link InventoryManager}.
+ * An integration test for the {@link InventoryManager}.
*
* @author Ian Springer
*/
@@ -125,6 +125,38 @@ public class InventoryManagerTest extends Arquillian {
validatePluginContainerInventory();
}
+ /**
+ * Tests that uninventorying Resources works.
+ *
+ * @throws Exception if an error occurs
+ */
+ @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources")
+ public void testUninventoryResources() throws Exception {
+ validatePluginContainerInventory();
+
+ Resource platform = pluginContainer.getInventoryManager().getPlatform();
+ Resource server = platform.getChildResources().iterator().next();
+
+ // Uninventory the server.
+ fakeServerInventory.removeResource(server);
+ pluginContainer.getInventoryManager().uninventoryResource(server.getId());
+
+ platform = pluginContainer.getInventoryManager().getPlatform();
+ Assert.assertNotNull(platform);
+ Assert.assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+
+ Assert.assertTrue(platform.getChildResources().isEmpty(), "Platform still
has children: "
+ + platform.getChildResources());
+
+ // Now execute a full discovery.
+ System.out.println("Executing full discovery...");
+ pluginContainer.getInventoryManager().executeServerScanImmediately();
+ pluginContainer.getInventoryManager().executeServiceScanImmediately();
+
+ // Check that inventory is back to what it was before we uninventoried the
server.
+ validatePluginContainerInventory();
+ }
+
private void validatePluginContainerInventory() {
System.out.println("Validating PC inventory...");
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 0253b43..ac2ef61 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1501,13 +1501,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
ResourceContainer resourceContainer = getResourceContainer(resource);
if (resourceContainer == null) {
PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
- ClassLoader classLoader;
- try {
- classLoader = factory.getResourceClassloader(resource);
- } catch (PluginContainerException e) {
- log.error("Access to resource [" + resource + "] will fail
due to missing classloader", e);
- classLoader = null;
- }
+ ClassLoader classLoader = getResourceClassLoader(resource);
resourceContainer = new ResourceContainer(resource, classLoader);
if (!this.configuration.isInsideAgent()) {
// Auto-sync if the PC is running within the embedded JBossAS console.
@@ -1517,20 +1511,29 @@ public class InventoryManager extends AgentService implements
ContainerService,
} else {
// container already exists, but make sure the classloader exists too
if (resourceContainer.getResourceClassLoader() == null) {
- PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
- ClassLoader classLoader;
- try {
- classLoader = factory.getResourceClassloader(resource);
- } catch (PluginContainerException e) {
- log.error("Access to resource [" + resource + "] will
fail due to missing classloader!", e);
- classLoader = null;
- }
+ ClassLoader classLoader = getResourceClassLoader(resource);
resourceContainer.setResourceClassLoader(classLoader);
}
}
return resourceContainer;
}
+ private ClassLoader getResourceClassLoader(Resource resource) {
+ PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
+ ClassLoader classLoader;
+ try {
+ classLoader = factory.getResourceClassloader(resource);
+ } catch (PluginContainerException e) {
+ if (log.isTraceEnabled()) {
+ log.trace("Access to resource [" + resource + "] will fail
due to missing classloader.", e);
+ } else {
+ log.debug("Access to resource [" + resource + "] will fail
due to missing classloader - cause: " + e);
+ }
+ classLoader = null;
+ }
+ return classLoader;
+ }
+
/**
* This method prepares the resource and container for activation.
* <p>
@@ -1597,6 +1600,20 @@ public class InventoryManager extends AgentService implements
ContainerService,
+ "]...");
}
+ ResourceContainer parentResourceContainer;
+ Resource parentResource = resource.getParentResource();
+ if (parentResource == null) {
+ parentResourceContainer = null;
+ } else {
+ parentResourceContainer = getResourceContainer(parentResource);
+ if (parentResourceContainer == null) {
+ // The parent probably just got uninventoried - log a DEBUG message and
abort.
+ log.debug(resource + " not being prepared for activation - container
not found for parent "
+ + parentResource + ".");
+ return false;
+ }
+ }
+
// If the component does not even exist yet, we need to instantiate it and set it
on the container.
if (component == null) {
if (log.isDebugEnabled()) {
@@ -1604,28 +1621,17 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
try {
component =
PluginContainer.getInstance().getPluginComponentFactory().buildResourceComponent(resource);
-
} catch (Throwable e) {
throw new PluginContainerException("Could not build component for
Resource [" + resource + "]", e);
}
container.setResourceComponent(component);
}
- // start the resource, but only if its parent component is running. If the parent
is null, that means
- // the resource is, itself, the root platform and we always activate that.
- ResourceContainer parentResourceContainer;
- boolean isParentStarted;
-
- if (resource.getParentResource() == null) {
- parentResourceContainer = null;
- isParentStarted = true;
- } else {
- parentResourceContainer =
getResourceContainer(resource.getParentResource());
- isParentStarted = (parentResourceContainer.getResourceComponentState() ==
ResourceComponentState.STARTED);
- }
+ // Start the resource, but only if its parent component is running. If the parent
is null, that means
+ // the resource is, itself, the root platform, which we always activate.
+ boolean isParentStarted = (parentResourceContainer == null) ||
(parentResourceContainer.getResourceComponentState() == ResourceComponentState.STARTED);
if (isParentStarted) {
-
PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
ResourceType type = resource.getResourceType();
ResourceDiscoveryComponent discoveryComponent = factory
@@ -1645,8 +1651,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
ResourceComponent<?> parentComponent = null;
ResourceContext<?> parentResourceContext = null;
- if (resource.getParentResource() != null) {
- ResourceContainer rc =
getResourceContainer(resource.getParentResource());
+ if (parentResource != null) {
+ ResourceContainer rc = getResourceContainer(parentResource);
parentComponent = rc.getResourceComponent();
parentResourceContext = rc.getResourceContext();
@@ -1655,8 +1661,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
ResourceContext context = createResourceContext(resource, parentComponent,
parentResourceContext,
discoveryComponent);
container.setResourceContext(context);
- return true;
+ return true;
} else {
if (log.isDebugEnabled()) {
log.debug("Resource [" + resource + "] not being prepared
for activation; parent isn't started: "
@@ -2809,15 +2815,20 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (parentResourceContainer != null) {
parentResource = parentResourceContainer.getResource();
} else {
- parentResource = null; // TODO right thing to do? Or directly return?
+ log.debug("Skipping merge of " + resourceFromServer
+ + " into local inventory, since a container was not found
for its parent "
+ + parentResourceFromServer + ".");
+ return;
}
} else {
+ // A null parent means this is the platform.
parentResource = null;
}
// See if the Resource already exists in our inventory.
Resource existingResource = findMatchingChildResource(resourceFromServer,
parentResource);
- if (parentResource == null && existingResource == null) {
+ if ((existingResource == null) &&
+ (resourceFromServer.getResourceType().getCategory() ==
ResourceCategory.PLATFORM)) {
// This should never happen, but add a check so we'll know if it ever
does.
log.error("Existing platform [" + this.platform + "] has
different Resource type and/or Resource key than "
+ "platform in Server inventory: " + resourceFromServer);
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/PluginComponentFactory.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/PluginComponentFactory.java
index 5c2eab7..9866a64 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/PluginComponentFactory.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/PluginComponentFactory.java
@@ -153,7 +153,14 @@ public class PluginComponentFactory implements ContainerService {
};
}
String className =
getPluginManager().getMetadataManager().getComponentClass(resourceType);
- ClassLoader resourceClassloader = getResourceClassloader(resource);
+ ResourceContainer resourceContainer =
getInventoryManager().getResourceContainer(resource);
+ if (resourceContainer == null) {
+ throw new PluginContainerException("Resource container not found for
" + resource + " - cannot create ResourceComponent.");
+ }
+ ClassLoader resourceClassloader = resourceContainer.getResourceClassLoader();
+ if (resourceClassloader == null) {
+ throw new PluginContainerException("Resource classLoader not found for
" + resource + " - cannot create ResourceComponent.");
+ }
ResourceComponent component = (ResourceComponent)
instantiateClass(resourceClassloader, className);
if (log.isDebugEnabled()) {
@@ -173,7 +180,6 @@ public class PluginComponentFactory implements ContainerService {
* @throws PluginContainerException if the resource's classloader could not be
created
*/
public ClassLoader getResourceClassloader(Resource resource) throws
PluginContainerException {
-
try {
InventoryManager inventoryMgr = getInventoryManager();
PluginManager pluginMgr = getPluginManager();
@@ -193,8 +199,8 @@ public class PluginComponentFactory implements ContainerService {
if (parentResource != null) {
parentContainer = inventoryMgr.getResourceContainer(parentResource);
if (parentContainer == null) {
- throw new PluginContainerException("Missing parent resource
container for parent resource="
- + parentResource);
+ throw new PluginContainerException("Missing container for parent
" + parentResource + " of "
+ + resource + ".");
}
} else if (resource.equals(inventoryMgr.getPlatform())) {
// the given resource is our top platform resource - just use its plugin
classloader
commit b8ababacc8dbd7ee3d6ebbf3681f63da3334d44c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 24 12:49:37 2012 -0400
[BZ 824898] just add ability to test with custom detail message in the test page
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
index f67faa4..21285b6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
@@ -58,25 +58,30 @@ public class TestMessageCenterView extends LocatableVLayout {
}
final SelectItem severityMenu = new SelectItem("severityItem",
"Severity");
+ severityMenu.setWidth(200);
severityMenu.setValueMap(severityChoices);
severityMenu.setDefaultValue(Severity.Blank.name());
- final SelectItem optionMenu = new SelectItem();
- optionMenu.setTitle("Message Options");
+ final SelectItem optionMenu = new SelectItem("optionMenu",
"Message Options");
optionMenu.setWidth(200);
optionMenu.setMultiple(true);
optionMenu.setMultipleAppearance(MultipleAppearance.GRID);
optionMenu.setValueMap(optionChoices);
optionMenu.setAllowEmptyValue(true);
- final SliderItem exceptionItem = new SliderItem();
- exceptionItem.setTitle("Exception Depth");
- exceptionItem.setWidth(250);
+ final SliderItem exceptionItem = new SliderItem("exceptionItem",
"Exception Depth");
+ exceptionItem.setWidth(200);
exceptionItem.setMinValue(0);
exceptionItem.setMaxValue(10);
exceptionItem.setDefaultValue(0);
- final TextItem conciseMessageItem = new TextItem("conciseMessage",
"Message");
+ final TextItem conciseMessageItem = new TextItem("conciseMessage",
"Concise Message");
+ conciseMessageItem.setWidth(200);
+ conciseMessageItem.setValue("A concise message string.");
+
+ final TextItem detailsMessageItem = new TextItem("detailsMessage",
"Details or Root Cause Message");
+ detailsMessageItem.setWidth(200);
+ detailsMessageItem.setValue("The details or the inner-most exception
message.");
ButtonItem button = new ButtonItem("showMessage", "Show
Message");
button.addClickHandler(new ClickHandler() {
@@ -91,28 +96,29 @@ public class TestMessageCenterView extends LocatableVLayout {
Severity severity = Severity.valueOf(severityMenu.getValueAsString());
String conciseMessage = conciseMessageItem.getValueAsString();
+ String detailsMessage = detailsMessageItem.getValueAsString();
Message msg;
Number exceptionDepth = (Number) exceptionItem.getValue();
if (exceptionDepth != null && exceptionDepth.intValue() > 0)
{
Throwable t = null;
for (int depth = exceptionDepth.intValue(); depth > 0; depth--) {
if (t == null) {
- t = new Throwable("Innermost exception here at depth
#" + depth);
+ t = new Throwable(detailsMessage);
} else {
t = new Throwable("Exception at depth #" + depth,
t);
}
}
msg = new Message(conciseMessage, t, severity, options);
} else {
- msg = new Message(conciseMessage, "When there is no exception, a
detailed message can go here.",
- severity, options);
+ msg = new Message(conciseMessage, detailsMessage, severity,
options);
}
CoreGUI.getMessageCenter().notify(msg);
}
});
LocatableDynamicForm form = new
LocatableDynamicForm(extendLocatorId("form"));
- form.setItems(severityMenu, optionMenu, exceptionItem, conciseMessageItem,
button);
+ form.setWidth(500);
+ form.setItems(severityMenu, optionMenu, exceptionItem, conciseMessageItem,
detailsMessageItem, button);
addMember(form);
}
commit 325170b9e32037b748bf2ef12c0954f9d6f35ad2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 24 12:08:51 2012 -0400
[BZ 824898] provide the ability to see the root cause for a particular message in the
message center.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
new file mode 100644
index 0000000..f67faa4
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestMessageCenterView.java
@@ -0,0 +1,119 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.gui.coregui.client.test;
+
+import java.util.EnumSet;
+import java.util.LinkedHashMap;
+
+import com.smartgwt.client.types.MultipleAppearance;
+import com.smartgwt.client.widgets.form.fields.ButtonItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.SliderItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
+import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
+
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Option;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+public class TestMessageCenterView extends LocatableVLayout {
+
+ public TestMessageCenterView(String locatorId) {
+ super(locatorId);
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+ LinkedHashMap<String, String> severityChoices = new
LinkedHashMap<String, String>();
+ for (Severity sev : EnumSet.allOf(Severity.class)) {
+ severityChoices.put(sev.name(), sev.name());
+ }
+
+ LinkedHashMap<String, String> optionChoices = new LinkedHashMap<String,
String>();
+ for (Option opt : EnumSet.allOf(Option.class)) {
+ optionChoices.put(opt.name(), opt.name());
+ }
+
+ final SelectItem severityMenu = new SelectItem("severityItem",
"Severity");
+ severityMenu.setValueMap(severityChoices);
+ severityMenu.setDefaultValue(Severity.Blank.name());
+
+ final SelectItem optionMenu = new SelectItem();
+ optionMenu.setTitle("Message Options");
+ optionMenu.setWidth(200);
+ optionMenu.setMultiple(true);
+ optionMenu.setMultipleAppearance(MultipleAppearance.GRID);
+ optionMenu.setValueMap(optionChoices);
+ optionMenu.setAllowEmptyValue(true);
+
+ final SliderItem exceptionItem = new SliderItem();
+ exceptionItem.setTitle("Exception Depth");
+ exceptionItem.setWidth(250);
+ exceptionItem.setMinValue(0);
+ exceptionItem.setMaxValue(10);
+ exceptionItem.setDefaultValue(0);
+
+ final TextItem conciseMessageItem = new TextItem("conciseMessage",
"Message");
+
+ ButtonItem button = new ButtonItem("showMessage", "Show
Message");
+ button.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ EnumSet<Option> options = EnumSet.noneOf(Option.class);
+ String[] optionsArray = optionMenu.getValues();
+ if (optionsArray != null && optionsArray.length > 0) {
+ for (String optString : optionsArray) {
+ options.add(Option.valueOf(optString));
+ }
+ }
+
+ Severity severity = Severity.valueOf(severityMenu.getValueAsString());
+ String conciseMessage = conciseMessageItem.getValueAsString();
+ Message msg;
+ Number exceptionDepth = (Number) exceptionItem.getValue();
+ if (exceptionDepth != null && exceptionDepth.intValue() > 0)
{
+ Throwable t = null;
+ for (int depth = exceptionDepth.intValue(); depth > 0; depth--) {
+ if (t == null) {
+ t = new Throwable("Innermost exception here at depth
#" + depth);
+ } else {
+ t = new Throwable("Exception at depth #" + depth,
t);
+ }
+ }
+ msg = new Message(conciseMessage, t, severity, options);
+ } else {
+ msg = new Message(conciseMessage, "When there is no exception, a
detailed message can go here.",
+ severity, options);
+ }
+ CoreGUI.getMessageCenter().notify(msg);
+ }
+ });
+
+ LocatableDynamicForm form = new
LocatableDynamicForm(extendLocatorId("form"));
+ form.setItems(severityMenu, optionMenu, exceptionItem, conciseMessageItem,
button);
+
+ addMember(form);
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
index 94bdd1e..27ee554 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
@@ -77,6 +77,7 @@ public class TestTopView extends AbstractSectionedLeftNavigationView {
// view IDs for Misc section
private static final ViewName MISC_SECTION_VIEW_ID = new ViewName("Misc");
+ private static final ViewName PAGE_MESSAGE_CENTER_TEST = new
ViewName("MessageCenterTest");
private static final ViewName PAGE_PLURALIZATION_TEST = new
ViewName("PluralizationTest");
private static final ViewName PAGE_NUMBER_FORMAT_TEST = new
ViewName("NumberFormatTest");
private static final ViewName PAGE_ASYNC = new ViewName("Async");
@@ -225,6 +226,12 @@ public class TestTopView extends AbstractSectionedLeftNavigationView
{
}
private NavigationSection buildMiscSection() {
+ NavigationItem messageCenterItem = new NavigationItem(PAGE_MESSAGE_CENTER_TEST,
null, new ViewFactory() {
+ public Canvas createView() {
+ return new
TestMessageCenterView(extendLocatorId(PAGE_MESSAGE_CENTER_TEST.getName()));
+ }
+ });
+
NavigationItem numberFormatItem = new NavigationItem(PAGE_NUMBER_FORMAT_TEST,
null, new ViewFactory() {
public Canvas createView() {
return new
TestNumberFormatView(extendLocatorId(PAGE_NUMBER_FORMAT_TEST.getName()));
@@ -249,7 +256,8 @@ public class TestTopView extends AbstractSectionedLeftNavigationView
{
}
});
- return new NavigationSection(MISC_SECTION_VIEW_ID, numberFormatItem,
pluralizationItem, asyncItem, rpcItem);
+ return new NavigationSection(MISC_SECTION_VIEW_ID, messageCenterItem,
numberFormatItem, pluralizationItem,
+ asyncItem, rpcItem);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
index 30d6ebb..3758acd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/ErrorHandler.java
@@ -20,8 +20,6 @@ package org.rhq.enterprise.gui.coregui.client.util;
import java.util.ArrayList;
-import java.util.logging.Logger;
-
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.Messages;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -61,6 +59,14 @@ public class ErrorHandler {
}
}
+ public static String getRootCauseMessage(Throwable t) {
+ String[] allMessages = getAllMessagesArray(t, false);
+ if (allMessages == null || allMessages.length == 0) {
+ return null;
+ }
+ return allMessages[allMessages.length - 1];
+ }
+
public static String getAllMessages(Throwable t) {
return getAllMessages(t, false, null);
}
@@ -95,15 +101,42 @@ public class ErrorHandler {
}
public static String[] getAllMessagesArray(Throwable t) {
+ return getAllMessagesArray(t, true);
+ }
+
+ public static String[] getAllMessagesArray(Throwable t, boolean
includeThrowableClassName) {
ArrayList<String> list = new ArrayList<String>();
if (t != null) {
- list.add(t.getClass().getName() + ":" + t.getMessage());
+ String tMessage = t.getMessage();
+
+ if (includeThrowableClassName) {
+ list.add(t.getClass().getName() + ":" + tMessage);
+ } else {
+ if (tMessage != null) {
+ list.add(tMessage);
+ } else {
+ // even though we were told not to show throwable class name,
+ // the problem is we have a null message - so the only thing we have
to show is the class name
+ list.add(t.getClass().getName());
+ }
+ }
while ((t.getCause() != null) && (t != t.getCause())) {
t = t.getCause();
- list.add(t.getClass().getName() + ":" + t.getMessage());
+ tMessage = t.getMessage();
+ if (includeThrowableClassName) {
+ list.add(t.getClass().getName() + ":" + tMessage);
+ } else {
+ if (tMessage != null) {
+ list.add(tMessage);
+ } else {
+ // even though we were told not to show throwable class name,
+ // the problem is we have a null message - so the only thing we
have to show is the class name
+ list.add(t.getClass().getName());
+ }
+ }
}
}
@@ -130,7 +163,7 @@ public class ErrorHandler {
}
private static void getStackTraceAsCause(Throwable t, StringBuilder s, Throwable
cause, String newline) {
- s.append("Caused by: ").append(cause.getMessage()).append(newline);
+ s.append("Caused by: ").append(cause.getClass().getName() + ":
" + cause.getMessage()).append(newline);
for (Object line : cause.getStackTrace()) {
s.append(INDENT).append("at ").append(line).append(newline);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/Message.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/Message.java
index 0ba4ac4..03cfb4b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/Message.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/Message.java
@@ -36,6 +36,7 @@ public class Message {
private static final String PRE_CLOSE = "=~/pre~=";
protected String conciseMessage;
protected String detailedMessage;
+ protected String rootCauseMessage = null;
protected Date fired = new Date();
protected Severity severity;
protected EnumSet<Option> options;
@@ -117,7 +118,8 @@ public class Message {
}
public Message(String conciseMessage, Throwable details, Severity severity,
EnumSet<Option> options) {
- this(conciseMessage, PRE_OPEN + ErrorHandler.getAllMessages(details, true, BR) +
PRE_CLOSE, severity, options);
+ this(conciseMessage, getDetailedMessageFromThrowable(details), severity,
options);
+ this.rootCauseMessage = ErrorHandler.getRootCauseMessage(details);
}
public Message(String conciseMessage, String detailedMessage, Severity severity,
EnumSet<Option> options) {
@@ -128,6 +130,10 @@ public class Message {
this.options = (options != null) ? options : EnumSet.noneOf(Option.class);
}
+ private static String getDetailedMessageFromThrowable(Throwable t) {
+ return PRE_OPEN + ErrorHandler.getAllMessages(t, true, BR) + PRE_CLOSE;
+ }
+
/**
* Given a sanitized message with HTML tags escaped, this will put back some HTML
tags that we know we
* still want.
@@ -148,6 +154,10 @@ public class Message {
return detailedMessage;
}
+ public String getRootCauseMessage() {
+ return rootCauseMessage;
+ }
+
public Date getFired() {
return fired;
}
@@ -173,6 +183,7 @@ public class Message {
return "Message{" //
+ "conciseMessage='" + this.conciseMessage + '\''
//
+ ", detailedMessage='" + this.detailedMessage +
'\'' //
+ + ", rootCauseMessage='" + this.rootCauseMessage +
'\'' //
+ ", fired=" + this.fired //
+ ", severity=" + this.severity //
+ ", options=" + this.options + '}';
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
index 93bb466..0aba1ba 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageBar.java
@@ -22,12 +22,15 @@ package org.rhq.enterprise.gui.coregui.client.util.message;
import com.google.gwt.user.client.Timer;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.Overflow;
+import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.DoubleClickEvent;
import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.events.RightMouseDownEvent;
import com.smartgwt.client.widgets.events.RightMouseDownHandler;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuItem;
+import com.smartgwt.client.widgets.menu.MenuItemIfFunction;
import com.smartgwt.client.widgets.menu.events.ClickHandler;
import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
@@ -77,7 +80,23 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
MessageCenterView.showDetails(MessageBar.this.currentMessage);
}
});
- showDetailsMenu.setItems(showDetailsMenuItem);
+
+ MenuItem showRootCauseMenuItem = new
MenuItem(MSG.view_messageCenter_messageRootCause());
+ showRootCauseMenuItem.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(MenuItemClickEvent event) {
+ String rootCause = MessageBar.this.currentMessage.getRootCauseMessage();
+ SC.say(MSG.view_messageCenter_messageRootCause(), rootCause);
+ }
+ });
+ showRootCauseMenuItem.setEnableIfCondition(new MenuItemIfFunction() {
+ public boolean execute(Canvas target, Menu menu, MenuItem item) {
+ return MessageBar.this.currentMessage != null
+ && MessageBar.this.currentMessage.getRootCauseMessage() !=
null;
+ }
+ });
+
+ showDetailsMenu.setItems(showRootCauseMenuItem, showDetailsMenuItem);
}
@Override
@@ -157,8 +176,16 @@ public class MessageBar extends LocatableHLayout implements
MessageCenter.Messag
private void updateLabel(Message message) {
label.hide();
- String contents = (message.getConciseMessage() != null) ?
message.getConciseMessage() : message
- .getDetailedMessage();
+ String contents;
+
+ if (message.getConciseMessage() != null) {
+ contents = message.getConciseMessage();
+ } else if (message.getRootCauseMessage() != null) {
+ contents = message.getRootCauseMessage();
+ } else {
+ contents = message.getDetailedMessage();
+ }
+
label.setContents(contents);
String styleName = (contents != null) ? message.getSeverity().getStyle() : null;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
index 1731413..efaaab8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/message/MessageCenterView.java
@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
-import java.util.logging.Logger;
import com.google.gwt.user.client.Timer;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.Alignment;
@@ -353,11 +352,15 @@ public class MessageCenterView extends Table implements
MessageCenter.MessageLis
StaticTextItem date = new StaticTextItem("time",
MSG.view_messageCenter_messageTime());
date.setValue(TimestampCellFormatter.format(message.fired,
TimestampCellFormatter.DATE_TIME_FORMAT_FULL));
+ StaticTextItem rootCause = new StaticTextItem("rootCause",
MSG.view_messageCenter_messageRootCause());
+ rootCause.setValue(message.rootCauseMessage);
+ rootCause.setVisible(message.rootCauseMessage != null);
+
StaticTextItem detail = new StaticTextItem("detail",
MSG.view_messageCenter_messageDetail());
detail.setTitleVAlign(VerticalAlignment.TOP);
detail.setValue(message.detailedMessage);
- form.setItems(title, severity, date, detail);
+ form.setItems(title, severity, date, rootCause, detail);
final Window dialogWin = new
LocatableWindow("MessageCenterDetailsWindow");
dialogWin.setTitle(MSG.common_title_message());
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 46a3d0a..4e53d8c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -398,6 +398,11 @@ datasource_templateSchedules_enabled_failed = Failed to enable
collection of met
datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+# The enable_tags property is not included here for localization. Since tags are not
+# supported for JON, we need a way to disable tags for JON builds. The enable_tags
property
+# which can be filtered at build time is read by CoreGUI to determine whether or not
tags
+# should be enabled in the UI.
+enable_tags = ${enable.tags}
favorites = Favorites
favorites_groups = Favorite Groups
favorites_recentlyViewed = Recently Viewed
@@ -1585,6 +1590,7 @@ view_messageCenter_lastNMessages = Last {0} Messages
view_messageCenter_maxMessages = Max Messages
view_messageCenter_messageBarShowDetails = Show Details
view_messageCenter_messageDetail = Detail
+view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = Severity
view_messageCenter_messageTime = Time
view_messageCenter_messageTitle = Message Center
@@ -2024,9 +2030,3 @@ widget_typeCache_loadFail = Failed to load resource type metadata
widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
widget_typeTree_loadFail = Failed to load resource types
-
-# The enable_tags property is not included here for localization. Since tags are not
-# supported for JON, we need a way to disable tags for JON builds. The enable_tags
property
-# which can be filtered at build time is read by CoreGUI to determine whether or not
tags
-# should be enabled in the UI.
-enable_tags = ${enable.tags}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 548b8fa..9e6d1b4 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -836,7 +836,7 @@ view_alert_definition_condition_editor_option_metric_calltime_change =
Změna ho
view_alert_definition_condition_editor_option_metric_calltime_threshold = Práhová hodnota
doby volání
view_alert_definition_condition_editor_option_metric_change = Změna měřené hodnoty
view_alert_definition_condition_editor_option_metric_range = Rozsah měřené hodnoty
-view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
view_alert_definition_condition_editor_option_metric_trait_change = Změna hodnoty
vlastnosti
view_alert_definition_condition_editor_option_operation = Spuštění operace
view_alert_definition_condition_editor_option_resource_configuration = Změna konfigurace
zdroje
@@ -1539,7 +1539,6 @@ view_inventory_resources_deleteFailed = Nepodařilo se odstranit
vybrané zdroje
view_inventory_resources_deleteSuccessful = Požadavek na smazání zdroje byl úspěšně
předán všem agentům.
view_inventory_resources_disableConfirm = Jste si jisti, že chcete zneplatnit vybrané
zdroje? Při zneplatnění jsou hlášení o dostupnosti zdroje ignorovány. Zneplatňování může
být užitečné při údržbě systému, kdy se předpokládá, že zdroje nebudou fungovat (plánovaný
restart apod.)
view_inventory_resources_disableFailed = Nepodařilo se zneplatnit vybrané zdroje.
-vview_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
view_inventory_resources_enableConfirm = Jste si jisti, že chcete povolit vybrané zdroje?
Při povolení se dostupnost nastaví na neznámou (UNKNOWN) dokud neproběhne další agentovo
hlášení o dostupnosti zdrojů. Agenti budou požádáni o tento report co nejdříve.
view_inventory_resources_enableFailed = Nepodařilo se povolit vybrané zdroje.
view_inventory_resources_enableSuccessful = Úspěšně jste povolili vybrané zdroje a jejich
potomky, [{0}] zdrojů.
@@ -1588,6 +1587,7 @@ view_messageCenter_lastNMessages = Posledních {0} zpráv
view_messageCenter_maxMessages = Maximum zpráv
view_messageCenter_messageBarShowDetails = Zobrazit detaily
view_messageCenter_messageDetail = Detail
+##view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = Závažnost
view_messageCenter_messageTime = Čas
view_messageCenter_messageTitle = Centrum zpráv
@@ -1949,6 +1949,7 @@ view_upload_tooltip_1b = Vyberte soubor k uploadu a klikněte na
Další
view_upload_tooltip_2 = Upload souboru minule selhal
view_upload_upload = Upload
view_upload_uploadFile = Upload souboru
+vview_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
widget_colorPicker_tooltip = Klikněte pro výběr nové barvy
widget_durationItem_inputUnitLessThanTargetUnit = Vstupní jednotka je menší než cílová
jednotka.
widget_durationItem_unitTypeNotSupported = Typ jednotek [{0}] není podporován třídou
DurationItem.
@@ -2026,4 +2027,4 @@ widget_resourceSelector_selectResource = Vyber zdroj
widget_typeCache_loadFail = Nepodařilo se načíst metadata typu zdroje.
widget_typeTree_badTemplateType = Neplatné URL. Neznámy typ šablony: [{0}]
widget_typeTree_badTypeId = Neplatné URL. Špatný typ zdroje ID: [{0}]
- widget_typeTree_loadFail = Nepodařilo se načíst typy zdrojů
+widget_typeTree_loadFail = Nepodařilo se načíst typy zdrojů
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 9a66a86..57e541c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1360,6 +1360,7 @@ view_messageCenter_lastNMessages = Letzte {0} Nachrichten
view_messageCenter_maxMessages = Alle Nachrichten
view_messageCenter_messageBarShowDetails = Details zeigen
view_messageCenter_messageDetail = Detail
+##view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = Schwere
view_messageCenter_messageTime = Zeitpukt
view_messageCenter_messageTitle = Nachrichtencenter
@@ -1759,8 +1760,8 @@ widget_recordEditor_warn_validation = Ein oder mehrere Felder haben
ungültige W
##widget_resourceFactoryWizard_archPrompt = Package Architecture
##widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
##widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
-##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
-##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
+##widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the
name of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = Neue Ressource vom Typ [{0}] anlegen
widget_resourceFactoryWizard_createWizardWindowTitle = Assistent zum Erzeugen von
Ressourcen
widget_resourceFactoryWizard_editConfigStepName = Optionen für das Deployment
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index 328eda4..ff17934 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1579,6 +1579,7 @@ view_messageCenter_lastNMessages = 最新の {0} メッセージ
view_messageCenter_maxMessages = 最大メッセージ
view_messageCenter_messageBarShowDetails = 詳細表示
view_messageCenter_messageDetail = 詳細
+##view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = 重大度
view_messageCenter_messageTime = 時間
view_messageCenter_messageTitle = メッセージセンター
@@ -1986,8 +1987,8 @@ widget_recordEditor_warn_validation = 一つ以上のフィールドが無効な
widget_resourceFactoryWizard_archPrompt = パッケージアーキテクチャ
widget_resourceFactoryWizard_configTemplatePrompt = リソース構成テンプレート
widget_resourceFactoryWizard_contentTemplatePrompt = デプロイ時間構成テンプレート
-##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
-##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
+##widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the
name of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = タイプ [{0}] の新規リソースの作成
widget_resourceFactoryWizard_createWizardWindowTitle = リソース作成ウィザード
widget_resourceFactoryWizard_editConfigStepName = 編集の構成
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 7a1c9b9..9f5cf82 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -1610,6 +1610,7 @@ view_messageCenter_lastNMessages = Last {0} Messages
view_messageCenter_maxMessages = Max Messages
view_messageCenter_messageBarShowDetails = Show Details
view_messageCenter_messageDetail = Detalhe
+##view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = Severidade
view_messageCenter_messageTime = Tempo
view_messageCenter_messageTitle = Centro de Mensagens
@@ -2100,8 +2101,8 @@ widget_recordEditor_warn_validation = Um ou mais campos possuem
valores inv\u00E
widget_resourceFactoryWizard_archPrompt = Arquitetura do Pacote
widget_resourceFactoryWizard_configTemplatePrompt = Modelo de Configura\u00E7\u00E3o de
Recurso
widget_resourceFactoryWizard_contentTemplatePrompt = Modelos de Configura\u00E7\u00E3o do
Tempo de Deploy
-##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
-##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
+##widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the
name of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = Criar novo recurso do tipo [{0}]
widget_resourceFactoryWizard_createWizardWindowTitle = Assistente para Cria\u00E7\u00E3o
de Recurso
widget_resourceFactoryWizard_editConfigStepName = Op��es de implanta��o
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index 2c97c34..1fd5f80 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2445,3 +2445,4 @@ view_admin_downloads_cli_loadError = Не удалось получить вер
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = Версия CLI
##view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT
To] {1}
+##view_messageCenter_messageRootCause = Root Cause
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 7ac3745..1f68830 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1580,6 +1580,7 @@ view_messageCenter_lastNMessages = \u6700\u540e {0}
\u6761\u4fe1\u606f
view_messageCenter_maxMessages = \u6700\u5927\u6d88\u606f\u91cf
view_messageCenter_messageBarShowDetails = \u663e\u793a\u5185\u5bb9
view_messageCenter_messageDetail = \u8be6\u7ec6\u5185\u5bb9
+##view_messageCenter_messageRootCause = Root Cause
view_messageCenter_messageSeverity = \u91cd\u8981\u7ea7\u522b
view_messageCenter_messageTime = \u65f6\u95f4
view_messageCenter_messageTitle = \u6d88\u606f\u4e2d\u5fc3
@@ -1985,8 +1986,8 @@ widget_recordEditor_warn_validation =
\u4e00\u4e2a\u6216\u591a\u4e2a\u5b57\u6bb5
widget_resourceFactoryWizard_archPrompt = \u5305\u67b6\u6784
widget_resourceFactoryWizard_configTemplatePrompt = \u8d44\u6e90\u914d\u7f6e\u6a21\u677f
widget_resourceFactoryWizard_contentTemplatePrompt =
\u53d1\u5e03\u65f6\u95f4\u914d\u7f6e\u6a21\u677f
-##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
-##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
+##widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the
name of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle =
\u521b\u5efa\u7c7b\u578b[{0}]\u7684\u65b0\u8d44\u6e90
widget_resourceFactoryWizard_createWizardWindowTitle =
\u8d44\u6e90\u521b\u5efa\u5411\u5bfc
##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
commit e4f6ca0840e2779230d40a1ec6b54551fc5336c5
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 24 11:46:36 2012 -0400
Eclipse update of this file (for some unknown reason)
diff --git a/etc/eclipse-tools/RHQ Remote Debugging - Test.launch b/etc/eclipse-tools/RHQ
Remote Debugging - Test.launch
index e4e88fc..7b57371 100644
--- a/etc/eclipse-tools/RHQ Remote Debugging - Test.launch
+++ b/etc/eclipse-tools/RHQ Remote Debugging - Test.launch
@@ -1,19 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
-<launchConfiguration
type="org.eclipse.jdt.launching.remoteJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/rhq"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE"
value="true"/>
-<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">
-<mapEntry key="port" value="8797"/>
-<mapEntry key="hostname" value="localhost"/>
-</mapAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR"
value="rhq"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID"
value="org.eclipse.jdt.launching.socketAttachConnector"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8"
standalone="no"?>
+<launchConfiguration
type="org.eclipse.jdt.launching.remoteJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/rhq"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id"
value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento"
value="<?xml version="1.0"
encoding="UTF-8"
standalone="no"?> <sourceLookupDirector> <sourceContainers
duplicates="false"> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject
name=&quot;rhq&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.javaProject"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/integration/jboss-profileservice-spi/5.1.0.SP1/jboss-profileservice-spi-5.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/man/jboss-managed/2.1.1.GA/jboss-managed-2.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/man/jboss-metatype/2.1.1.GA/jboss-metatype-2.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/commons/commons-io/1.3.2/commons-io-1.3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.12/jaxb-impl-2.1.12.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/i18nlog/i18nlog/1.0.10/i18nlog-1.0.10.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-remoting/2.2.2.SP8/jboss-remoting-2.2.2.SP8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/oswego-concurrent/concurrent/1.3.4/concurrent-1.3.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/rss4j/rss4j/0.92-on.2/rss4j-0.92-on.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant/1.8.0/ant-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant-nodeps/1.8.0/ant-nodeps-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/struts/struts/1.2.9/struts-1.2.9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/jsp-api/2.0/jsp-api-2.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/testng/testng/6.1.1/testng-6.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/snmp4j/snmp4j/1.8.2/snmp4j-1.8.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/tomcat/tomcat-jk/4.1.31/tomcat-jk-4.1.31.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jdom/jdom/1.0/jdom-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-jmx/4.2.3.GA/jboss-jmx-4.2.3.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/tomcat/catalina/5.5.20/catalina-5.5.20.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-common/1.2.1.GA/jboss-common-1.2.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/struts-menu/struts-menu/2.3/struts-menu-2.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/junit/junit/3.8.2/junit-3.8.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/velocity/velocity/1.5/velocity-1.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/xalan/xalan/2.5.1/xalan-2.5.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-embeddable-ejb3/jboss-ejb3-all/1.0.0.Alpha9/jboss-ejb3-all-1.0.0.Alpha9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jbpm/3.1.1/jbpm-3.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-embeddable-ejb3/hibernate-all/1.0.0.Alpha9/hibernate-all-1.0.0.Alpha9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jetbrains/annotations/7.0.2/annotations-7.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ant/ant-launcher/1.8.0/ant-launcher-1.8.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-lang/commons-lang/2.4/commons-lang-2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/faces/jsf-api/1.2_14/jsf-api-1.2_14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/faces/jsf-impl/1.2_14/jsf-impl-1.2_14.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/sun/facelets/jsf-facelets/1.1.15.B1/jsf-facelets-1.1.15.B1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/mc4j/org-mc4j-ems/1.2.16/org-mc4j-ems-1.2.16.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/opensymphony/quartz/quartz/1.6.5/quartz-1.6.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javax/mail/mail/1.4.2/mail-1.4.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/framework/richfaces-api/3.3.3.Final/richfaces-api-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/framework/richfaces-impl/3.3.3.Final/richfaces-impl-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/richfaces/ui/richfaces-ui/3.3.3.Final/richfaces-ui-3.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/postgresql/postgresql/9.0-801.jdbc4/postgresql-9.0-801.jdbc4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/jboss-cache/1.4.1.SP9/jboss-cache-1.4.1.SP9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hyperic/sigar/1.6.5.132/sigar-1.6.5.132.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/transaction/jboss-jta/4.2.3.SP5/jboss-jta-4.2.3.SP5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/transaction/jboss-jts-common/4.2.3.SP5/jboss-jts-common-4.2.3.SP5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/jbossws-spi/1.1.1.GA/jbossws-spi-1.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/jbossws/jbossws-native-core/3.1.1.GA/jbossws-native-core-3.1.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/swizzle/swizzle-confluence/1.6.1/swizzle-confluence-1.6.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jvnet/inflector/0.7.0/inflector-0.7.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/augeas/augeas/0.0.2/augeas-0.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/json/json/20080701/json-20080701.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/java/dev/jna/jna/3.2.5/jna-3.2.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/freemarker/freemarker/2.3.11/freemarker-2.3.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/seam/jboss-seam/2.1.0.SP1/jboss-seam-2.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/seam/jboss-seam-ui/2.1.0.SP1/jboss-seam-ui-2.1.0.SP1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/hibernate/hibernate3/3.2.r14201-2/hibernate3-3.2.r14201-2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jline/jline/0.9.94/jline-0.9.94.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/javassist/javassist/3.9.0.GA/javassist-3.9.0.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/net/sf/opencsv/opencsv/1.8/opencsv-1.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bouncycastle/bcpg-jdk15/140/bcpg-jdk15-140.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bouncycastle/bcprov-jdk15/140/bcprov-jdk15-140.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/xmlrpc/xmlrpc-client/3.1.2/xmlrpc-client-3.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/xmlrpc/xmlrpc-common/3.1.2/xmlrpc-common-3.1.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/ws/commons/util/ws-commons-util/1.0.2/ws-commons-util-1.0.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/pircbot/pircbot/1.4.2/pircbot-1.4.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/twitter4j/twitter4j-core/2.2.4/twitter4j-core-2.2.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/antlr/antlr-runtime/3.2/antlr-runtime-3.2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/jboss/web/jbossweb/2.0.1.GA/jbossweb-2.0.1.GA.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/libvirt/libvirt/0.4.1/libvirt-0.4.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/byteman/byteman/1.2.1/byteman-1.2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/fedorahosted/cobbler/cobbler4j/0.1/cobbler4j-0.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/gwt/gwt-user/2.4.0/gwt-user-2.4.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/gwt/gwt-dev/2.4.0/gwt-dev-2.4.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/smartgwt/smartgwt/3.0/smartgwt-3.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/code/gwt-log/gwt-log/3.1.0/gwt-log-3.1.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/ca/nanometrics/gflot/1.0.0/gflot-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/jcraft/jsch/0.1.29/jsch-0.1.29.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/dbunit/dbunit/2.4.8/dbunit-2.4.8.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/apache/poi/poi/3.7/poi-3.7.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/bsh/bsh/1.3.0/bsh-1.3.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-core/3.1/unitils-core-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-dbunit/3.1/unitils-dbunit-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-orm/3.1/unitils-orm-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/unitils/unitils-testng/3.1/unitils-testng-3.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/jackson/jackson-core-asl/1.7.4/jackson-core-asl-1.7.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.7.4/jackson-mapper-asl-1.7.4.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/mongodb/mongo-java-driver/2.6.5/mongo-java-driver-2.6.5.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/googlecode/java-diff-utils/diffutils/1.2.1/diffutils-1.2.1.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/com/google/code/morphia/morphia/1.00-SNAPSHOT/morphia-1.00-SNAPSHOT.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-links/2.3.3.Final/resteasy-links-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.3.Final/resteasy-jaxrs-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.3.Final/resteasy-jackson-provider-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/resteasy/jaxrs-api/2.3.3.Final/jaxrs-api-2.3.3.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/sasl/jboss-sasl/1.0.0.Beta9/jboss-sasl-1.0.0.Beta9.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;JDK_HOME/lib/tools.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-api-mockito/1.4.11/powermock-api-mockito-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-core/1.4.11/powermock-core-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-api-support/1.4.11/powermock-api-support-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-module-testng-common/1.4.11/powermock-module-testng-common-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/powermock/powermock-module-testng/1.4.11/powermock-module-testng-1.4.11.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/liquibase/liquibase-core/2.0.3/liquibase-core-2.0.3.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-impl-base/1.0.0/shrinkwrap-impl-base-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-api/1.0.0/shrinkwrap-api-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/shrinkwrap-spi/1.0.0/shrinkwrap-spi-1.0.0.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-api-base/2.0.0-alpha-2/shrinkwrap-descriptors-api-base-2.0.0-alpha-2.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-api/1.0.0-beta-6/shrinkwrap-resolver-api-1.0.0-beta-6.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-api-maven/1.0.0-beta-6/shrinkwrap-resolver-api-maven-1.0.0-beta-6.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/test/arquillian-test-spi/1.0.0.Final/arquillian-test-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/test/arquillian-test-api/1.0.0.Final/arquillian-test-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/core/arquillian-core-spi/1.0.0.Final/arquillian-core-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/core/arquillian-core-api/1.0.0.Final/arquillian-core-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/container/arquillian-container-spi/1.0.0.Final/arquillian-container-spi-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/container/arquillian-container-test-api/1.0.0.Final/arquillian-container-test-api-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;classpathVariable
path=&quot;M2_REPO/org/jboss/arquillian/testng/arquillian-testng-core/1.0.0.Final/arquillian-testng-core-1.0.0.Final.jar&quot;/&gt;&#13;&#10;"
typeId="org.eclipse.jdt.launching.sourceContainer.classpathVariable"/> <container
memento="&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;
standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;"
typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE"
value="true"/>
+<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">
+<mapEntry key="hostname" value="localhost"/>
+<mapEntry key="port" value="8797"/>
+<mapEntry key="timeout" value="20000"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR"
value="rhq"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID"
value="org.eclipse.jdt.launching.socketAttachConnector"/>
+</launchConfiguration>
commit 5c91b4659d17ec66c01260dfa3339d182558702b
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 24 11:45:54 2012 -0400
[823942] Update test code related to fixes for this issue.
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
index 8228226..572fc54 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/AbstractResourceUpgradeHandlingTest.java
@@ -18,9 +18,14 @@
*/
package org.rhq.core.pc.upgrade;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
import java.util.Set;
import org.jmock.Expectations;
+
import org.rhq.core.clientapi.server.discovery.InvalidInventoryReportException;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.configuration.Configuration;
@@ -33,10 +38,6 @@ import org.rhq.core.pc.ServerServices;
import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
/**
* An abstract base class for Resource upgrade handling tests.
*
@@ -105,13 +106,15 @@ public abstract class AbstractResourceUpgradeHandlingTest extends
ResourceUpgrad
assertFalse(res.getResourceKey().startsWith(UPGRADED_RESOURCE_KEY_PREFIX),
"Resource " + res
+ " seems to be upgraded even though it shouldn't.");
- ResourceContainer rc =
PluginContainer.getInstance().getInventoryManager().getResourceContainer(res);
+ InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ ResourceContainer rc = im.getResourceContainer(res);
assertEquals(rc.getResourceComponentState(),
ResourceContainer.ResourceComponentState.STOPPED,
"A resource that has not been upgraded due to upgrade error in
parent should be stopped.");
//recurse, since the whole subtree under the failed resource should be not
upgraded and stopped.
- checkResourcesNotUpgraded(res.getChildResources(),
res.getChildResources().size());
+ Set<Resource> children = im.getContainerChildren(rc);
+ checkResourcesNotUpgraded(children, children.size());
}
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTestBase.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTestBase.java
index 3035fef..5bdc2d6 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTestBase.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTestBase.java
@@ -23,6 +23,7 @@ package org.rhq.core.pc.upgrade;
import java.util.Set;
import org.jmock.Expectations;
+
import org.rhq.core.domain.discovery.AvailabilityReport;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
@@ -44,6 +45,7 @@ public abstract class ResourceUpgradeTestBase extends
PluginContainerTest {
expectations.ignoring(ss.getConfigurationServerService());
expectations.ignoring(ss.getContentServerService());
expectations.ignoring(ss.getCoreServerService());
+ expectations.ignoring(ss.getDriftServerService());
expectations.ignoring(ss.getEventServerService());
expectations.ignoring(ss.getMeasurementServerService());
expectations.ignoring(ss.getOperationServerService());
commit 14d53ea73b219a85d1b54584457ed48a60e1a556
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 24 11:44:41 2012 -0400
[823942] Prefer resource container Resource when recursing hierarchy
Given recent optimizations it's necessary to use the ResourceContainer's
version of a resource when requiring the most up to date version of
the resource. This commit ensures that when walking the hierarchy we
prefer the container's version of the resource when getting children.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
index 51735ab..59b3e51 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
@@ -18,25 +18,26 @@
*/
package org.rhq.core.pc.configuration;
+import java.util.List;
+import java.util.concurrent.Callable;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.agent.configuration.ConfigurationUtility;
import org.rhq.core.clientapi.server.configuration.ConfigurationServerService;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
import org.rhq.core.pc.util.FacetLockType;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
-import java.util.List;
-import java.util.concurrent.Callable;
-
/**
* @author Greg Hinkle
*/
@@ -49,7 +50,8 @@ public class ConfigurationCheckExecutor implements Runnable, Callable {
private InventoryManager inventoryManager;
private static final long CONFIGURATION_CHECK_TIMEOUT = 30000L;
- public ConfigurationCheckExecutor(ConfigurationManager configurationManager,
ConfigurationServerService configurationServerService, InventoryManager inventoryManager)
{
+ public ConfigurationCheckExecutor(ConfigurationManager configurationManager,
+ ConfigurationServerService configurationServerService, InventoryManager
inventoryManager) {
this.configurationManager = configurationManager;
this.configurationServerService = configurationServerService;
this.inventoryManager = inventoryManager;
@@ -68,19 +70,17 @@ public class ConfigurationCheckExecutor implements Runnable, Callable
{
return null;
}
-
public void checkConfigurations(Resource resource, boolean checkChildren) {
ResourceContainer resourceContainer =
this.inventoryManager.getResourceContainer(resource);
ConfigurationFacet resourceComponent = null;
ResourceType resourceType = resource.getResourceType();
- if (resourceContainer != null
- && resourceContainer.getAvailability() != null
- && resourceContainer.getAvailability().getAvailabilityType() ==
AvailabilityType.UP) {
+ if (resourceContainer != null && resourceContainer.getAvailability() !=
null
+ && resourceContainer.getAvailability().getAvailabilityType() ==
AvailabilityType.UP) {
try {
resourceComponent =
resourceContainer.createResourceComponentProxy(ConfigurationFacet.class,
- FacetLockType.NONE, CONFIGURATION_CHECK_TIMEOUT, true, false);
+ FacetLockType.NONE, CONFIGURATION_CHECK_TIMEOUT, true, false);
} catch (PluginContainerException e) {
// Expecting when the resource does not support configuration management
}
@@ -88,7 +88,7 @@ public class ConfigurationCheckExecutor implements Runnable, Callable {
if (resourceComponent != null) {
// Only report availability for committed resources; don't bother
with new, ignored or deleted resources.
if (resource.getInventoryStatus() == InventoryStatus.COMMITTED
- && resourceType.getResourceConfigurationDefinition() !=
null) {
+ && resourceType.getResourceConfigurationDefinition() != null)
{
if (log.isDebugEnabled()) {
log.debug("Checking for updated Resource configuration for
" + resource + "...");
@@ -98,33 +98,36 @@ public class ConfigurationCheckExecutor implements Runnable, Callable
{
Configuration liveConfiguration =
resourceComponent.loadResourceConfiguration();
if (liveConfiguration != null) {
- ConfigurationDefinition configurationDefinition =
resourceType.getResourceConfigurationDefinition();
+ ConfigurationDefinition configurationDefinition =
resourceType
+ .getResourceConfigurationDefinition();
// Normalize and validate the config.
ConfigurationUtility.normalizeConfiguration(liveConfiguration, configurationDefinition);
List<String> errorMessages =
ConfigurationUtility.validateConfiguration(liveConfiguration,
- configurationDefinition);
+ configurationDefinition);
for (String errorMessage : errorMessages) {
- log.warn("Plugin Error: Invalid " +
resourceType.getName() + " resource configuration returned by "
- + resourceType.getPlugin() + " plugin -
" + errorMessage);
+ log.warn("Plugin Error: Invalid " +
resourceType.getName()
+ + " resource configuration returned by " +
resourceType.getPlugin() + " plugin - "
+ + errorMessage);
}
Configuration original =
resource.getResourceConfiguration();
if (!liveConfiguration.equals(original)) {
log.info("New configuration version detected on
resource: " + resource);
-
this.configurationServerService.persistUpdatedResourceConfiguration(resource.getId(),
liveConfiguration);
+
this.configurationServerService.persistUpdatedResourceConfiguration(resource.getId(),
+ liveConfiguration);
resource.setResourceConfiguration(liveConfiguration);
}
}
} catch (Throwable t) {
- log.warn("An error occurred while checking for an updated
Resource configuration for " +
- resource + ".", t);
+ log.warn("An error occurred while checking for an updated
Resource configuration for "
+ + resource + ".", t);
}
}
}
if (checkChildren) {
- for (Resource child : resource.getChildResources()) {
+ for (Resource child :
this.inventoryManager.getContainerChildren(resourceContainer)) {
try {
checkConfigurations(child, true);
} catch (Exception e) {
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
index bf6c20f..c6f605e 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
@@ -166,7 +166,7 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
}
}
- for (Resource child : r.getChildResources()) {
+ for (Resource child : inventoryMgr.getContainerChildren(container)) {
initSchedules(child, inventoryMgr);
}
}
@@ -216,8 +216,8 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
// Drift was previously reported. We will fetch a snapshot of the
// latest change set and write that to disk so that we avoid
reporting
// drift that has already been reported to the server.
- DriftSnapshot deltaSnapshot =
driftServer.getSnapshot(driftDefinition.getId(), snapshot
- .getVersion(), snapshot.getVersion());
+ DriftSnapshot deltaSnapshot =
driftServer.getSnapshot(driftDefinition.getId(),
+ snapshot.getVersion(), snapshot.getVersion());
File deltaFile = new File(currentSnapshotFile.getParentFile(),
DriftDetector.FILE_CHANGESET_DELTA);
Headers deltaHeaders = createHeaders(resource.getId(),
driftDefinition);
deltaHeaders.setVersion(snapshot.getVersion());
@@ -263,7 +263,7 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
log.debug("Resending " + contentZipFile.getPath());
}
sendChangeSetContentToServer(Integer.parseInt(resourceDir.getName()),
defDir.getName(),
- contentZipFile);
+ contentZipFile);
}
}
}
@@ -368,10 +368,10 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
DriftServerService driftServer =
pluginContainerConfiguration.getServerServices().getDriftServerService();
driftServer.sendFilesZip(resourceId, driftDefName, token,
contentZipFile.length(),
- remoteInputStream(new BufferedInputStream(new
FileInputStream(contentZipFile))));
+ remoteInputStream(new BufferedInputStream(new
FileInputStream(contentZipFile))));
} catch (FileNotFoundException e) {
log.error("An error occurred while trying to send change set content zip
file " + contentZipFile.getPath()
- + " to server.", e);
+ + " to server.", e);
}
}
@@ -599,9 +599,7 @@ public class DriftManager extends AgentService implements
DriftAgentService, Dri
@Override
public void ackChangeSet(int resourceId, String defName) {
- log
- .info("Received server change set ack for [resourceId: " +
resourceId + ", driftDefinition:" + defName
- + "]");
+ log.info("Received server change set ack for [resourceId: " +
resourceId + ", driftDefinition:" + defName + "]");
File resourceDir = new File(changeSetsDir, Integer.toString(resourceId));
File changeSetDir = new File(resourceDir, defName);
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
index 21481a7..bc9d57d 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityExecutor.java
@@ -348,7 +348,8 @@ public class AvailabilityExecutor implements Runnable,
Callable<AvailabilityRepo
availabilityReport.addAvailability(availability);
}
- for (Resource child : resource.getChildResources()) {
+ // traverse the hierarchy using the container's resource, which should be up
to date
+ for (Resource child :
this.inventoryManager.getContainerChildren(resourceContainer)) {
checkInventory(child, availabilityReport, current, isForced, scan);
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryFile.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryFile.java
index fac1e6f..a97120c 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryFile.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryFile.java
@@ -138,7 +138,8 @@ public class InventoryFile {
}
private void removeIgnoredResourcesFromChildren(Resource resource, Set<String>
uuidsToIgnore) {
- Set<Resource> children = resource.getChildResources();
+ InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
+ Set<Resource> children = inventoryManager.getContainerChildren(resource);
if (!children.isEmpty() && !uuidsToIgnore.isEmpty()) {
Iterator<Resource> iterator = children.iterator();
while (iterator.hasNext() && !uuidsToIgnore.isEmpty()) {
@@ -163,7 +164,8 @@ public class InventoryFile {
resource.setResourceType(fullResourceType);
// now reconnect all its children's types
- Set<Resource> children = resource.getChildResources();
+ InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
+ Set<Resource> children =
inventoryManager.getContainerChildren(resource);
for (Resource child : children) {
connectTypes(child, uuidsToIgnore);
}
@@ -182,7 +184,8 @@ public class InventoryFile {
private void addAllUUIDsToList(Resource resource, Set<String> list) {
list.add(resource.getUuid());
- Set<Resource> children = resource.getChildResources();
+ InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
+ Set<Resource> children = inventoryManager.getContainerChildren(resource);
for (Resource child : children) {
addAllUUIDsToList(child, list);
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 9fd5340..0253b43 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1113,11 +1113,11 @@ public class InventoryManager extends AgentService implements
ContainerService,
// inventory with the server side as well as to disallow any other
server-agent traffic during
// the upgrade phase. Not to mention the fact that no thread pools are
initialized yet by the
// time the upgrade kicks in..
- if (!isResourceUpgradeActive() && (!syncedResources.isEmpty() ||
!unknownResourceIds.isEmpty() ||
- !modifiedResourceIds.isEmpty())) {
+ if (!isResourceUpgradeActive()
+ && (!syncedResources.isEmpty() || !unknownResourceIds.isEmpty()
|| !modifiedResourceIds.isEmpty())) {
performAvailabilityChecks(true);
- this.inventoryThreadPoolExecutor.schedule((Callable<? extends
Object>) this.serviceScanExecutor, configuration.getChildResourceDiscoveryDelay(),
- TimeUnit.SECONDS);
+ this.inventoryThreadPoolExecutor.schedule((Callable<? extends
Object>) this.serviceScanExecutor,
+ configuration.getChildResourceDiscoveryDelay(), TimeUnit.SECONDS);
}
} catch (Throwable t) {
log.warn("Failed to synchronize local inventory with Server inventory
for Resource [" + syncInfo.getId()
@@ -1175,7 +1175,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
log.debug("Scheduling child service scan for " + resource + " and
waiting for it to complete...");
try {
- Future<InventoryReport> future =
inventoryThreadPoolExecutor.submit((Callable<InventoryReport>) oneTimeExecutor);
+ Future<InventoryReport> future = inventoryThreadPoolExecutor
+ .submit((Callable<InventoryReport>) oneTimeExecutor);
return future.get();
} catch (Exception e) {
throw new RuntimeException("Error submitting child service scan for
" + resource + ".", e);
@@ -1241,7 +1242,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
}
- for (Resource child : resource.getChildResources()) {
+ Set<Resource> children = getContainerChildren(resource);
+ for (Resource child : children) {
scanIsNeeded |= removeResourceAndIndicateIfScanIsNeeded(child);
}
@@ -1292,6 +1294,29 @@ public class InventoryManager extends AgentService implements
ContainerService,
return scanIsNeeded;
}
+ /**
+ * Get the parent resource's children, ensuring we use the resource container
version of the resource, because
+ * the container's resource is guaranteed to be up to date.
+ *
+ * @param parentResource
+ * @return the children, may be empty, not null.
+ */
+ public Set<Resource> getContainerChildren(Resource parentResource) {
+ ResourceContainer container = getResourceContainer(parentResource);
+ return (null == container) ? parentResource.getChildResources() :
container.getResource().getChildResources();
+ }
+
+ /**
+ * Get the parent resource's children, ensuring we use the resource container
version of the resource, because
+ * the container's resource is guaranteed to be up to date.
+ *
+ * @param parentContainer
+ * @return the children, empty if parentContainer is null or there are no children.
not null.
+ */
+ public Set<Resource> getContainerChildren(ResourceContainer parentContainer) {
+ return (null == parentContainer) ? new HashSet<Resource>() :
parentContainer.getResource().getChildResources();
+ }
+
public Resource getPlatform() {
return platform;
}
@@ -1802,6 +1827,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
return this.platform;
}
} else {
+ // don't use container children here, the caller is providing the
desired resources
for (Resource child : parent.getChildResources()) {
if (child != null && matches(resource, child)) {
return child;
@@ -1826,36 +1852,45 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
/**
- * Lookup all the servers with a particular server type
+ * Lookup all the resources with a particular type
*
- * @param serverType the server type to match against
+ * @param type the type to match against
*
- * @return the set of servers matching the provided type
+ * @return the set of resources matching the provided type
*/
- public Set<Resource> getResourcesWithType(ResourceType serverType) {
- return getResourcesWithType(serverType, this.platform.getChildResources());
+ public Set<Resource> getResourcesWithType(ResourceType type) {
+ return getResourcesWithType(type, getContainerChildren(this.platform));
}
- public boolean isDiscoveryScanInProgress() {
- return (this.inventoryThreadPoolExecutor.getActiveCount() >= 1);
- }
-
- private Set<Resource> getResourcesWithType(ResourceType serverType,
Set<Resource> resources) {
- Set<Resource> servers = new HashSet<Resource>();
+ private Set<Resource> getResourcesWithType(ResourceType type,
Set<Resource> resources) {
+ Set<Resource> result = new HashSet<Resource>();
if (resources == null) {
- return servers;
+ return result;
}
- for (Resource server : resources) {
- servers.addAll(getResourcesWithType(serverType,
server.getChildResources()));
+ for (Resource resource : resources) {
+ // If we're looking for SERVERs and we've hit a SERVICE, skip it as
it doesn't match and
+ // we won't find SERVERs below a SERVICE
+ if (ResourceCategory.SERVER == type.getCategory()
+ && ResourceCategory.SERVICE ==
resource.getResourceType().getCategory()) {
+ continue;
+ }
+
+ Set<Resource> children = getContainerChildren(resource);
+ result.addAll(getResourcesWithType(type, children));
- if (serverType.equals(server.getResourceType())) {
- servers.add(server);
+ if (type.equals(resource.getResourceType())) {
+ ResourceContainer container = getResourceContainer(resource);
+ result.add((container == null) ? resource : container.getResource());
}
}
- return servers;
+ return result;
+ }
+
+ public boolean isDiscoveryScanInProgress() {
+ return (this.inventoryThreadPoolExecutor.getActiveCount() >= 1);
}
// commenting out dead code, leaving for reference -jshaughn
@@ -1941,7 +1976,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
try {
ResourceContainer container = getResourceContainer(resource);
if ((container != null) && (container.getResourceComponentState() ==
ResourceComponentState.STARTED)) {
- for (Resource child : resource.getChildResources()) {
+ // traverse the hierarchy using the container's resource, which
should be up to date
+ for (Resource child : getContainerChildren(container)) {
deactivateResource(child);
}
@@ -2098,7 +2134,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
public void synchronizeInventory(ResourceSyncInfo syncInfo) {
log.info("Synchronizing local inventory with Server inventory for Resource
[" + syncInfo.getId()
- + "] and its descendants...");
+ + "] and its descendants...");
// Get the latest resource data rooted at the given id.
synchInventory(syncInfo);
@@ -2122,7 +2158,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
// performing syncing of the children schedules in one fell swoop
Set<Integer> childrenIds = new HashSet<Integer>();
- for (Resource child : resource.getChildResources()) {
+ for (Resource child : getContainerChildren(resource)) {
childrenIds.add(child.getId());
}
scheduleRequests =
configuration.getServerServices().getMeasurementServerService()
@@ -2151,7 +2187,9 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (supportsDriftManagement(r)) {
resourceIds.add(r.getId());
}
- for (Resource child : r.getChildResources()) {
+
+ Set<Resource> children = getContainerChildren(r);
+ for (Resource child : children) {
resources.push(child);
}
}
@@ -2163,8 +2201,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
private boolean supportsDriftManagement(Resource r) {
PluginMetadataManager metaDataMgr =
PluginContainer.getInstance().getPluginManager().getMetadataManager();
ResourceType type = metaDataMgr.getType(r.getResourceType());
- return type != null && type.getDriftDefinitionTemplates() != null
&&
- !type.getDriftDefinitionTemplates().isEmpty();
+ return type != null && type.getDriftDefinitionTemplates() != null
+ && !type.getDriftDefinitionTemplates().isEmpty();
}
private void syncSchedules(Set<Resource> resources) {
@@ -2318,7 +2356,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
public boolean isResourceUpgradeActive() {
return resourceUpgradeDelegate.enabled();
}
-
+
/**
* Always use this before accessing the event listeners because this ensures
* thread safety.
@@ -2485,7 +2523,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
//but we can continue the discovery in the child resource types of the
existing resources.
//we can therefore pretend that the discovery returned the existing
resources so that
//we can recurse into their children up in the call-chain.
- for (Resource existingResource : parentResource.getChildResources()) {
+ for (Resource existingResource : getContainerChildren(parentResource)) {
if (resourceType.equals(existingResource.getResourceType())) {
newResources.add(existingResource);
}
@@ -2829,7 +2867,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
refreshResourceComponentState(resourceContainer, pluginConfigUpdated);
- // Recursively merge the children.
+ // Recursively merge the children. Note - don't recurse using containers,
we're merging the
+ // the provided hierarchy not traversing the existing hierarchy
for (Resource childResource : resourceFromServer.getChildResources()) {
mergeResource(childResource);
}
@@ -2997,7 +3036,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (activate) {
try {
activateResource(resource, container, false);
- for (Resource child : resource.getChildResources()) {
+ for (Resource child : getContainerChildren(container)) {
activateAndUpgradeResourceRecursively(child, doUpgrade);
}
} catch (InvalidPluginConfigurationException e) {
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
index 125b0a0..92621a3 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
@@ -209,8 +209,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
scheduleCollection(resourceId, schedules);
}
- // The container is guaranteed to have the proper children set, so
recurse on that set of child resources
- for (Resource child : container.getResource().getChildResources()) {
+ for (Resource child :
this.inventoryManager.getContainerChildren(container)) {
reschedule(child);
}
}
commit b1e5c9b624041846262c53ebebefef102f513307
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 24 11:40:12 2012 -0400
[BZ 813066] exclude the 'multicastAddress' trait from the null-metric-values
test for Managed Servers, since a null value is expected when the managed servers are not
in HA mode (
https://bugzilla.redhat.com/show_bug.cgi?id=813066)
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index d586724..31a4c3b 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -379,6 +379,12 @@
<replace dir="${jboss7.home}"
includes="standalone/configuration/standalone*.xml,
domain/configuration/host*.xml"
token="<inet-address "
value="<loopback-address "/>
+ <!-- TODO (ips, 05/24/12): The below starts the managed servers in
HA mode, but it also causes a
+ slew of HornetQ authentication errors -
figure out how to make those go
+ away. -->
+ <!--<replace dir="${jboss7.home}"
+ includes="domain/configuration/host.xml"
+ token=' group="main-server-group"'
value=' group="other-server-group"'/>-->
</target>
</configuration>
</execution>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
index 5d53c02..04c40de 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
@@ -46,8 +46,8 @@ public abstract class AbstractJBossAS7PluginTest extends
AbstractAgentPluginTest
protected static final String PLUGIN_NAME = "JBossAS7";
- public static final String MANAGEMENT_USERNAME = "test";
- public static final String MANAGEMENT_PASSWORD = "test";
+ public static final String MANAGEMENT_USERNAME = "admin";
+ public static final String MANAGEMENT_PASSWORD = "admin";
private static final int TYPE_HIERARCHY_DEPTH = 6;
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java
index 4fe5798..2b7ec7a 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java
@@ -51,7 +51,8 @@ public class GenericJBossAS7PluginTest extends
AbstractJBossAS7PluginTest {
public void testAllMetricsHaveNonNullValues() throws Exception {
Map<ResourceType, String[]> excludedMetricNamesByType = new
HashMap<ResourceType, String[]>();
// It's normal for the "startTime" trait to be null for a Managed
Server that is down/disabled.
- excludedMetricNamesByType.put(ManagedServerTest.RESOURCE_TYPE, new String[]
{"startTime"});
+ // It's normal for the "multicastAddress" trait to be null for a
Managed Server that is not configured for JGroups HA.
+ excludedMetricNamesByType.put(ManagedServerTest.RESOURCE_TYPE, new String[]
{"startTime", "multicastAddress"});
assertAllNumericMetricsAndTraitsHaveNonNullValues(excludedMetricNamesByType);
}
commit ead694e1a3b5ebdf540e21f9f4fe8a50703760fc
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Thu May 24 12:57:50 2012 +0200
[BZ 788997] Setting the maximum length of the description to 100 characters
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateStep.java
index c4969bd..ee49f4e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateStep.java
@@ -121,6 +121,7 @@ public class GroupCreateStep extends AbstractWizardStep {
TextAreaItem description = new AutoFitTextAreaItem("description",
MSG.common_title_description());
description.setWidth(300);
+ description.setLength(100);
CheckboxItem recursive = new CheckboxItem("recursive",
MSG.view_groupCreateWizard_createStep_recursive());
commit 1490b713fd1b2b0829521225eb4d9ab21b1f4e90
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu May 24 01:40:10 2012 -0500
[BZ 811288] Updated various subsystems to match the definition for stanadlone,
profile, and managed server. Where applicable a single resource definition was split into
two or three resources based on the parent type and available properties, metrics, and
operations.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index d4d0141..bc23504 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -882,244 +882,6 @@
]]>
</help>
- <server name="Managed Server"
- discovery="ManagedASDiscovery"
- class="ManagedASComponent"
- createDeletePolicy="both">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"/>
-
- &logSources;
- </plugin-configuration>
-
- <operation name="start" description="Start this server
instance." displayName="Start">
- <parameters>
- <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is started."
default="false" type="boolean"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation>
- <operation name="stop" description="Stop this server
instance." displayName="Stop">
- <parameters>
- <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is stopped."
default="false" type="boolean"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation>
- <operation name="restart" description="Restart this server
instance." displayName="Restart">
- <parameters>
- <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is restarted."
default="false" type="boolean"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation>
-
- &serverKindMetrics;
- <metric property="status" dataType="trait"
displayName="Server state" description="Detailed server state"
- displayType="summary"/>
- <metric property="startTime" dataType="trait"
displayName="Start time of the server" defaultOn="true"/>
- <metric property="multicastAddress" displayName="JGroups
Multicast Address" dataType="trait" displayType="summary"
- description="the host and port used by JGroups for
multicast"/>
-
- <event name="logEntry" description="an entry in a log
file"/>
-
- <resource-configuration>
- <!-- IF you add properties here, you also need to update
org.rhq.modules.plugins.jbossas7.ManagedASComponent.loadResourceConfiguration -->
- <c:simple-property name="hostname" displayName="Name of the
host to put the server on" required="true" readOnly="true">
- <c:option-source target="resource" expression="type=^Host$
plugin=&pluginName;"/>
- </c:simple-property>
- <c:simple-property name="group" readOnly="true"
displayName="Server Group" description="Server Group this instance belongs
to.">
- <c:option-source target="resource"
expression="type=ServerGroup"/>
- </c:simple-property>
- <c:simple-property name="socket-binding-group"
readOnly="true" displayName="Socket binding group"
description="Socket bindings to use" required="true"
default="standard-sockets">
- <c:option-source target="resource"
expression="type=SocketBindingGroup"/>
- </c:simple-property>
- <c:simple-property name="socket-binding-port-offset"
readOnly="true" displayName="Port Offset" type="integer"
default="0" description="Offset to the base ports"/>
-
- <c:simple-property name="auto-start"
displayName="Autostart" default="false" type="boolean"/>
-
- <!--
- <c:simple-property name="jmv" displayName="JVM"
defaultValue="default" type="string" description="JVM definition
to use with this server">
- <c:option-source target="resource"
expression="type='JVM Definition' plugin=&pluginName;"/>
- </c:simple-property>
- -->
-
- <c:group name="children:system-property:name+"
displayName="System-properties">
- <c:list-property name="*2" displayName="Properties"
required="false" readOnly="false">
- <c:map-property name="*:name" displayName="Name"
readOnly="true">
- <c:simple-property name="name"
displayName="Property-Name" readOnly="true"/>
- <c:simple-property name="value"
displayName="Value"/>
- <c:simple-property name="boot-time"
defaultValue="true" default="true" required="false"
- description="If true the system property is passed
on the command-line to the started server jvm. If false, it will be pushed to the server
as part of the startup sequence.">
- <c:property-options>
- <c:option value="true"/>
- <c:option value="false"/>
- </c:property-options>
- </c:simple-property>
- </c:map-property>
- </c:list-property>
- </c:group>
-
- </resource-configuration>
-
- <service name="ManagedServerDeployment"
- class="DeploymentComponent"
- discovery="SubsystemDiscovery"
- createDeletePolicy="neither"
- description="Deployed package on a managed server. Go to server
groups to manipulate it">
- <plugin-configuration>
- <c:simple-property name="path" default="deployment"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
- </plugin-configuration>
-
- <metric property="status" dataType="trait"
- description="The current runtime status of a deployment. Possible
status modes are OK, FAILED, and STOPPED. FAILED indicates a dependency is missing or a
service could not start. STOPPED indicates that the deployment was manually
stopped."/>
-
- <resource-configuration>
- <c:simple-property name="name" readOnly="true"/>
- <c:simple-property name="runtime-name"
readOnly="true"/>
- <c:simple-property name="content" readOnly="true"/>
- </resource-configuration>
- </service>
-
- </server>
- <!-- managed server -->
-
- <service name="Profile"
- description="A profile in a domain. Profiles are assigned to server
groups."
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" default="profile"
readOnly="true"/>
- </plugin-configuration>
-
- <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
- list is different. Update similar Standalone service if changes are necessary.
-->
- <service name="ModCluster Domain Service"
- class="ModClusterComponent"
- discovery="ModClusterDiscoveryComponent"
- description="Mod_cluster support"
- singleton="true">
-
- <runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
- </plugin-configuration>
-
- <service name="Domain Service Configuration"
- discovery="SubsystemDiscovery"
- class="ModClusterComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
- </plugin-configuration>
-
- &modclusterSharedOpsConfig;
-
- <service name="Domain Dynamic Load Provider"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
-
- <runs-inside>
- <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
- <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
- </resource-configuration>
-
- <service name="Domain Custom Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
- <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
-
- </service><!-- End of custom-load-metric service -->
-
- <service name="Domain Load Metric"
- discovery="SubsystemDiscovery"
- createDeletePolicy="delete-only"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="load-metric"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
- <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
- <c:property-options>
- <c:option value="busyness"/>
- <c:option value="cpu" />
- <c:option value="heap"/>
- <c:option value="mem"/>
- <c:option value="requests"/>
- <c:option value="receive-traffic"/>
- <c:option value="send-traffic"/>
- <c:option value="sessions"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
- </resource-configuration>
-
- </service><!-- End of load-metric service -->
-
- </service><!-- End of dynamic-load-provider service -->
-
- <service name="Domain Ssl"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
-
- <runs-inside>
- <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
- <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
- </plugin-configuration>
-
- <resource-configuration>
- <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
- <c:simple-property name="ca-revocation-ur" required="false"
type="string" readOnly="false" description="Certificate authority
revocation list."/>
- <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
- <c:simple-property name="cipher-suite" required="false"
type="string" readOnly="false" description="The allowed cipher
suite."/>
- <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
- <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
- </resource-configuration>
-
- </service><!-- End of ssl service -->
-
- </service><!-- End of Domain Modcluster Service Configuration -->
- </service>
-
- </service>
-
<service name="ServerGroup"
description="A server group on this domain"
discovery="SubsystemDiscovery"
@@ -1704,15 +1466,762 @@
</results>
</operation>
- <resource-configuration>
- <c:simple-property name="waittime" type="integer"
required="false" defaultValue="50" description="The number of
seconds to wait for the context to be stopped." />
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="waittime" type="integer"
required="false" defaultValue="50" description="The number of
seconds to wait for the context to be stopped." />
+ </resource-configuration>
+
+ </service>--><!-- End of WebAppContext service -->
+ </service><!-- End of Standalone Modcluster Service Configuration -->
+ </service><!-- End of ModCluster Standalone Service -->
+
+ </server> <!-- JBossAS7 Standalone Server -->
+
+ <server name="Managed Server"
+ discovery="ManagedASDiscovery"
+ class="ManagedASComponent"
+ createDeletePolicy="both">
+
+ <runs-inside>
+ <parent-resource-type name="JBossAS7 Host Controller"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"/>
+ &logSources;
+ </plugin-configuration>
+
+ <operation name="start" description="Start this server
instance." displayName="Start">
+ <parameters>
+ <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is started."
default="false" type="boolean"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+ <operation name="stop" description="Stop this server
instance." displayName="Stop">
+ <parameters>
+ <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is stopped."
default="false" type="boolean"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+ <operation name="restart" description="Restart this server
instance." displayName="Restart">
+ <parameters>
+ <c:simple-property name="blocking" description="Whether the
operation should block and wait until the server is restarted."
default="false" type="boolean"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+
+ &serverKindMetrics;
+ <metric property="status" dataType="trait"
displayName="Server state" description="Detailed server state"
displayType="summary"/>
+ <metric property="startTime" dataType="trait"
displayName="Start time of the server" defaultOn="true"/>
+ <metric property="multicastAddress" displayName="JGroups Multicast
Address" dataType="trait" displayType="summary"
description="the host and port used by JGroups for multicast"/>
+
+ <event name="logEntry" description="an entry in a log
file"/>
+
+ <resource-configuration>
+ <!-- IF you add properties here, you also need to update
org.rhq.modules.plugins.jbossas7.ManagedASComponent.loadResourceConfiguration -->
+ <c:simple-property name="hostname" displayName="Name of the host
to put the server on" required="true" readOnly="true">
+ <c:option-source target="resource" expression="type=^Host$
plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="group" readOnly="true"
displayName="Server Group" description="Server Group this instance belongs
to.">
+ <c:option-source target="resource"
expression="type=ServerGroup"/>
+ </c:simple-property>
+ <c:simple-property name="socket-binding-group"
readOnly="true" displayName="Socket binding group"
description="Socket bindings to use" required="true"
default="standard-sockets">
+ <c:option-source target="resource"
expression="type=SocketBindingGroup"/>
+ </c:simple-property>
+ <c:simple-property name="socket-binding-port-offset"
readOnly="true" displayName="Port Offset" type="integer"
default="0" description="Offset to the base ports"/>
+ <c:simple-property name="auto-start" displayName="Autostart"
default="false" type="boolean"/>
+ <!--
+ <c:simple-property name="jmv" displayName="JVM"
defaultValue="default" type="string" description="JVM definition
to use with this server">
+ <c:option-source target="resource"
expression="type='JVM Definition' plugin=&pluginName;"/>
+ </c:simple-property>
+ -->
+ <c:group name="children:system-property:name+"
displayName="System-properties">
+ <c:list-property name="*2" displayName="Properties"
required="false" readOnly="false">
+ <c:map-property name="*:name" displayName="Name"
readOnly="true">
+ <c:simple-property name="name"
displayName="Property-Name" readOnly="true"/>
+ <c:simple-property name="value"
displayName="Value"/>
+ <c:simple-property name="boot-time"
defaultValue="true" default="true" required="false"
+ description="If true the system property is passed on
the command-line to the started server jvm. If false, it will be pushed to the server as
part of the startup sequence.">
+ <c:property-options>
+ <c:option value="true"/>
+ <c:option value="false"/>
+ </c:property-options>
+ </c:simple-property>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+
+ <service name="ManagedServerDeployment"
+ class="DeploymentComponent"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="neither"
+ description="Deployed package on a managed server. Go to server groups
to manipulate it">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="deployment"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <metric property="status" dataType="trait"
description="The current runtime status of a deployment. Possible status modes are
OK, FAILED, and STOPPED. FAILED indicates a dependency is missing or a service could not
start. STOPPED indicates that the deployment was manually stopped."/>
+
+ <resource-configuration>
+ <c:simple-property name="name" readOnly="true"/>
+ <c:simple-property name="runtime-name"
readOnly="true"/>
+ <c:simple-property name="content" readOnly="true"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Naming (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="NamingComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <operation name="jndi-view" displayName="JNDIView"
description="Peek at the JNDI tree">
+ <results>
+ <c:list-property name="java-contexts">
+ <c:map-property name="context">
+ <c:simple-property name="context"/>
+ <c:simple-property name="name"/>
+ <c:simple-property name="value"/>
+ </c:map-property>
+ </c:list-property>
+ <c:list-property name="applications">
+ <c:map-property name="context">
+ <c:simple-property name="context"/>
+ <c:simple-property name="name"/>
+ <c:simple-property name="value"/>
+ </c:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <service name="Binding (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JNDI bindings for primitive types">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="binding"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
+ <c:property-options>
+ <c:option value="simple"/>
+ <c:option value="lookup"/>
+ <c:option value="object-factory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
+ <c:simple-property name="lookup" required="false"
type="string" readOnly="false" description="The entry to lookup
in JNDI for lookup bindings"/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module to load
the object factory from for object factory bindings"/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value to bind for
simple bindings"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Webservices (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="WebservicesComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=webservices"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="modify-wsdl-address"
required="false" type="boolean" readOnly="true"
description="Whether the soap address can be modified."/>
+ <c:simple-property name="wsdl-host" required="false"
type="string" readOnly="true" description="The WSDL, that is a
required deployment artifact for an endpoint, has a <soap:address> element
which points to the location of the endpoint. JBoss supports rewriting of that SOAP
address. If the content of <soap:address> is a valid URL, JBossWS will not
rewrite it unless 'modify-wsdl-address' is true. If the content of
<soap:address> is not a valid URL, JBossWS will rewrite it using the
attribute values given below. If 'wsdl-host' is set to
'jbossws.undefined.host', JBossWS uses requesters host when rewriting the
<soap:address>"/>
+ <c:simple-property name="wsdl-port" required="false"
type="integer" readOnly="true" description="The non-secure port
that will be used for rewriting the SOAP address. If absent the port will be identified by
querying the list of installed connectors."/>
+ <c:simple-property name="wsdl-secure-port"
required="false" type="integer" readOnly="true"
description="The secure port that will be used for rewriting the SOAP address. If
absent the port will be identified by querying the list of installed
connectors."/>
+ </resource-configuration>
+
+ <service name="Endpoint (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="endpoint-config"/>
+ </plugin-configuration>
+
+ <service name="Post Handler Chain (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="post-handler-chain"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="true"
description="Protocol binding"/>
+ </resource-configuration>
+
+ <service name="Post Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="true" description="Handler
class"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="Pre Handler Chain (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="pre-handler-chain"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="true"
description="Protocol binding"/>
+ </resource-configuration>
+
+ <service name="Pre Handler (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="handler"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="true" description="Handler
class"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+ </service>
+
+ <service name="JacORB (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JacORB subsystem configuration"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jacorb"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="add-component-via-interceptor"
required="false" type="string" readOnly="true"
defaultValue="on" description="Indicates whether SSL components should be
added by an IOR interceptor (on) or not (off). The default value is on."/>
+ <c:simple-property name="cache-poa-names" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether POA names should be cached (on) or not (off). The
default value is off."/>
+ <c:simple-property name="cache-typecodes" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether typecodes should be cached (on) or not (off). The
default value is off."/>
+ <c:simple-property name="chunk-custom-rmi-valuetypes"
required="false" type="string" readOnly="true"
defaultValue="on" description="Indicates whether custom RMI valuetypes
should be encoded as chunks (on) or not (off). The default value is on."/>
+ <c:simple-property name="client-requires" required="false"
type="string" readOnly="true" defaultValue="None"
description="Value that indicates the client SSL required parameters (None,
ServerAuth, ClientAuth, MutualAuth). The default value is None."/>
+ <c:simple-property name="client-supports" required="false"
type="string" readOnly="true" defaultValue="MutualAuth"
description="Value that indicates the client SSL supported parameters (None,
ServerAuth, ClientAuth, MutualAuth). The default value is MutualAuth."/>
+ <c:simple-property name="client-timeout" required="false"
type="integer" readOnly="true" defaultValue="0"
description="The client-side connection timeout value in milliseconds. A value of
zero indicates that the connection never times out. The default value is 0."/>
+ <c:simple-property name="comet" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether interoperability with Comet's ORB is enabled (on)
or not (off). The default value is off."/>
+ <c:simple-property name="export-corbaloc" required="false"
type="string" readOnly="true" defaultValue="on"
description="Indicates whether the root context should be exported as
corbaloc::address:port/NameService (on) or not (off). The default value is on."/>
+ <c:simple-property name="giop-minor-version"
required="false" type="integer" readOnly="true"
defaultValue="2" description="The GIOP minor version to be used. The
default value is 2."/>
+ <c:simple-property name="indirection-encoding-disable"
required="false" type="string" readOnly="true"
defaultValue="off" description="Indicates whether indirection encoding for
repeated typecodes should be disabled (on) or not (off). The default value is
off."/>
+ <c:simple-property name="iona" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether interoperability with IONA's ASP is enabled (on)
or not (off). The default value is off."/>
+ <c:simple-property name="lax-boolean-encoding"
required="false" type="string" readOnly="true"
defaultValue="off" description="Indicates whether any non-zero CDR encoded
boolean value should be interpreted as true (on) or not (off). The default value is
off."/>
+ <c:simple-property name="max-managed-buf-size"
required="false" type="integer" readOnly="true"
defaultValue="24" description="The log2 of maximum size managed by the
internal buffer manager. The default value is 24."/>
+ <c:simple-property name="max-server-connections"
required="false" type="integer" readOnly="true"
defaultValue="2147483647" description="The maximum number of connections
accepted by the server. The default value is 2147483647."/>
+ <c:simple-property name="max-threads" required="false"
type="integer" readOnly="true" defaultValue="32"
description="The maximum number of active request processor threads. Threads are
first obtained from the pool and once the pool is exhausted new threads are created until
the number of threads reaches this limit. New requests will wait until an active thread
finishes its job. The default value is 32."/>
+ <c:simple-property name="monitoring" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether the monitoring GUI should be displayed (on) or not
(off). The default value is off."/>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" defaultValue="JBoss"
description="The name of the running ORB. The default value is JBoss."/>
+ <c:simple-property name="outbuf-cache-timeout"
required="false" type="integer" readOnly="true"
defaultValue="-1" description="The buffer cache timeout in milliseconds.
The default value is -1."/>
+ <c:simple-property name="outbuf-size" required="false"
type="integer" readOnly="true" defaultValue="2048"
description="The size of the network buffers for outgoing messages. The default value
is 2048."/>
+ <c:simple-property name="pool-size" required="false"
type="integer" readOnly="true" defaultValue="5"
description="The size of the request processors thread-pool. Threads that finish
processing a request are placed back in the pool if the pool is not full and discarded
otherwise. The default value is 5."/>
+ <c:simple-property name="print-version" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether the version number should be printed during ORB
startup (on) or not (off). The default value is off."/>
+ <c:list-property name="properties" required="false"
readOnly="true" description="A list of generic key/value
properties.">
+ <c:map-property name="property:collapsed"
displayName="Property" readOnly="true">
+ <c:simple-property name="name:0" type="string"
displayName="Name" required="true" readOnly="true"/>
+ <c:simple-property name="value:1" type="string"
displayName="Value" required="true" readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ <c:simple-property name="queue-max" required="false"
type="integer" readOnly="true" defaultValue="100"
description="The maximum number of requests that can be queued. The default value is
100."/>
+ <c:simple-property name="queue-min" required="false"
type="integer" readOnly="true" defaultValue="10"
description="The size of the queue for notifying waiting requests. In other words,
blocked requests are only notified when the queue has no more than queue-min requests. The
default value is 10."/>
+ <c:simple-property name="queue-wait" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether requests that exceed the maximum queue size should
wait (on) or not (off). When disabled, a TRANSIENT exception is thrown if the queue is
full. The default value is off."/>
+ <c:simple-property name="retries" required="false"
type="integer" readOnly="true" defaultValue="5"
description="The number of retries if connections cannot be promptly established. The
default value is 5."/>
+ <c:simple-property name="retry-interval" required="false"
type="integer" readOnly="true" defaultValue="500"
description="The interval in milliseconds between retries. The default value is
500."/>
+ <c:simple-property name="root-context" required="false"
type="string" readOnly="true"
defaultValue="JBoss/Naming/root" description="The naming service root
context. The default value is JBoss/Naming/root."/>
+ <c:simple-property name="security" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether the security interceptors are to be installed (on) or
not (off). The default value is off."/>
+ <c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The name of the
security domain that holds the key and trust stores that will be used to establish SSL
connections."/>
+ <c:simple-property name="server-requires" required="false"
type="string" readOnly="true" defaultValue="None"
description="Value that indicates the server SSL required parameters (None,
ServerAuth, ClientAuth, MutualAuth). The default value is None."/>
+ <c:simple-property name="server-supports" required="false"
type="string" readOnly="true" defaultValue="MutualAuth"
description="Value that indicates the server SSL supported parameters (None,
ServerAuth, ClientAuth, MutualAuth). The default value is MutualAuth."/>
+ <c:simple-property name="server-timeout" required="false"
type="integer" readOnly="true" defaultValue="0"
description="The server-side connection timeout value in milliseconds. A value of
zero indicates that the connection never times out. The default value is 0."/>
+ <c:simple-property name="strict-check-on-tc-creation"
required="true" type="string" readOnly="true"
defaultValue="off" description="Indicates whether the method
create_abstract_interface_tc should perform a validation check on the name parameter (on)
or not (off). The default value is off."/>
+ <c:simple-property name="sun" required="false"
type="string" readOnly="true" defaultValue="on"
description="Indicates whether interoperability with Sun's ORB is enabled (on) or
not (off). The default value is on."/>
+ <c:simple-property name="support-ssl" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether SSL is to be supported (on) or not (off). The default
value is off."/>
+ <c:simple-property name="transactions" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether the transactions interceptors are to be installed (on
or spec) or not (off). The value 'on' enabled JTS while 'spec' enables a
spec compliant mode (non JTS) that rejects incoming transaction contexts. The default
value is off."/>
+ <c:simple-property name="use-bom" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether GIOP 1.2 byte order markers should be used (on) or not
(off). The default value is off."/>
+ <c:simple-property name="use-imr" required="false"
type="string" readOnly="true" defaultValue="off"
description="Indicates whether the implementation repository should be used (on) or
not (off). The default value is off."/>
+ </resource-configuration>
+ </service>
+
+ <service name="JAXR (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the JAXR subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jaxr"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="class" required="false"
type="string" readOnly="true" description="The JAXR
ConnectionFactory implementation class"/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="The JNDI name under
which the JAXR ConnectionFactory is bound"/>
+ </resource-configuration>
+
+ <service name="Property (JAXR - Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A JAXR property. The identity of the resource defines
the property name.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="property"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="true"
type="string" readOnly="true" description="The JAXR property
value."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ <service name="JPA (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the JPA subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=jpa"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-datasource"
required="false" type="string" readOnly="true"
description="The name of the default global datasource."/>
+ </resource-configuration>
+ </service>
+
+ <service name="EE (Managed Server)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the EE subsystem."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=ee"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ear-subdeployments-isolated"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Flag indicating whether each of the
subdeployments within a .ear can access classes belonging to another subdeployment within
the same .ear. A value of false means the subdeployments can see classes belonging to
other subdeployments within the .ear. The default value is false."/>
+ <c:list-property name="global-modules" description="A list of
modules that should be made available to all deployments." required="false"
readOnly="true">
+ <c:map-property name="globalmodule" displayName="Global
module" readOnly="true">
+ <c:simple-property name="name" type="string"
displayName="Name" required="true" readOnly="true"/>
+ <c:simple-property name="slot" type="string"
displayName="Slot" required="true" readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="Infinispan (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="IspnComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=infinispan"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Cache Container (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="IspnCContainerComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="cache-container"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-cache" required="false"
type="string" readOnly="true" description="The default infinispan
cache"/>
+ <!-- TODO select from child cache services -->
+ <c:list-property name="aliases" required="false"
description="The list of aliases for this cache container"
readOnly="true">
+ <c:simple-property name="alias" readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="The jndi name to which
to bind this cache container"/>
+ <c:simple-property name="start" required="false"
type="string" readOnly="true" defaultValue="LAZY"
description="The cache container start mode, which can be EAGER (immediate start) or
LAZY (on-demand start).">
+ <c:property-options>
+ <c:option value="LAZY"/>
+ <c:option value="EAGER"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="listener-executor"
required="false" type="string" readOnly="true"
description="The executor used for the replication queue"/>
+ <c:simple-property name="eviction-executor"
required="false" type="string" readOnly="true"
description="The scheduled executor used for eviction"/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true"
defaultValue="org.jboss.as.clustering.infinispan" description="The module
whose class loader should be used when building this cache container's
configuration. The default value is org.jboss.as.clustering.infinispan."/>
+ <c:simple-property name="replication-queue-executor"
required="false" type="string" readOnly="true"
description="The executor used for asynchronous cache operations"/>
+ </resource-configuration>
+
+ <service name="Cache (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="IspnCacheComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="distributed-cache|local-cache|invalidation-cache|replicated-cache"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="_flavor" displayName="Kind of
cache" required="true" readOnly="true"
default="local-cache" description="What special kind of cache is
this.">
+ <c:property-options>
+ <c:option value="local-cache"/>
+ <c:option value="invalidation-cache"/>
+ <c:option value="distributed-cache"/>
+ <c:option value="replicated-cache"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="start" required="false"
type="string" readOnly="true" default="LAZY"
description="The cache start mode, which can be EAGER (immediate start) or LAZY
(on-demand start).">
+ <c:property-options>
+ <c:option value="LAZY"/>
+ <c:option value="EAGER"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="batching" required="false"
type="boolean" readOnly="true" default="false"
description="If enabled, the invocation batching API will be made available for this
cache."/>
+ <c:simple-property name="indexing" required="false"
type="string" readOnly="true" default="NONE"
description="If enabled, entries will be indexed when they are added to the cache.
Indexes will be updated as entries change or are removed.">
+ <c:property-options>
+ <c:option value="NONE"/>
+ <c:option value="LOCAL"/>
+ <c:option value="ALL"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="The jndi-name to which
to bind this cache instance."/>
+ <c:simple-property name="mode" required="false"
type="string" readOnly="true" default="SYNC"
description="Sets the clustered cache mode, ASYNC for asynchronous operation, or SYNC
for synchronous operation.">
+ <c:property-options>
+ <c:option value="SYNC"/>
+ <c:option value="ASYNC"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="queue-size" required="false"
type="integer" readOnly="true" default="0"
description="In ASYNC mode, this attribute can be used to trigger flushing of the
queue when it reaches a specific threshold."/>
+ <c:simple-property name="queue-flush-interval"
required="false" type="long" readOnly="true"
default="10" description="In ASYNC mode, this attribute controls how often
the asynchronous thread used to flush the replication queue runs. This should be a
positive integer which represents thread wakeup time in milliseconds."/>
+ <c:simple-property name="remote-timeout"
required="false" type="long" readOnly="true"
default="17500" description="In SYNC mode, the timeout (in ms) used to wait
for an acknowledgment when making a remote call, after which the call is aborted and an
exception is thrown."/>
+ <c:simple-property name="async-marshalling"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="If enabled, this will cause marshalling
of entries to be performed asynchronously. The default value is false."/>
+ <c:simple-property name="l1-lifespan" required="false"
type="long" readOnly="true" defaultValue="600000"
description="Maximum lifespan of an entry placed in the L1 cache. This element
configures the L1 cache behavior in 'distributed' caches instances. In
any other cache modes, this element is ignored. The default value is 600000."/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="true" description="The module whose class
loader should be used when building this cache's configuration."/>
+ <c:simple-property name="owners" required="false"
type="integer" readOnly="true" defaultValue="2"
description="Number of cluster-wide replicas for each cache entry. The
default value is 2."/>
+ <c:simple-property name="virtual-nodes"
required="false" type="integer" readOnly="true"
defaultValue="1" description="Controls the number of virtual nodes per
'real' node. If numVirtualNodes is 1, then virtual nodes are disabled.
The topology aware consistent hash must be used if you wish to take advantage of virtual
nodes. A default of 1 is used. The default value is 1."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Transport (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ description="The description of the transport used by this cache
container">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="transport=TRANSPORT"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="cluster" required="false"
type="string" readOnly="true" description="The name of the group
communication cluster"/>
+ <c:simple-property name="executor" required="false"
type="string" readOnly="true" description="The executor to use
for the transport"/>
+ <c:simple-property name="lock-timeout"
required="false" type="long" readOnly="true"
defaultValue="240000" description="The timeout for locks for the transport.
The default value is 240000."/>
+ <c:simple-property name="machine" required="false"
type="string" readOnly="true" description="A machine identifier
for the transport"/>
+ <c:simple-property name="rack" required="false"
type="string" readOnly="true" description="A rack identifier for
the transport"/>
+ <c:simple-property name="site" required="false"
type="string" readOnly="true" description="A site identifier for
the transport"/>
+ <c:simple-property name="stack" required="false"
type="string" readOnly="true" description="The jgroups stack to
use for the transport"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ <service name="JGroups (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=jgroups"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="default-stack" description="Default
stack to use" readOnly="true"/>
+ </resource-configuration>
+ </service>
+
+ <service name="Remoting (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=remoting"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="worker-read-threads"
required="false" type="integer" readOnly="true"
defaultValue="1" description="The number of read threads to create for the
remoting worker. The default value is 1."/>
+ <c:simple-property name="worker-task-core-threads"
required="false" type="integer" readOnly="true"
defaultValue="4" description="The number of core threads for the remoting
worker task thread pool. The default value is 4."/>
+ <c:simple-property name="worker-task-keepalive"
required="false" type="integer" readOnly="true"
defaultValue="60" description="The number of milliseconds to keep non-core
remoting worker task threads alive. The default value is 60."/>
+ <c:simple-property name="worker-task-limit"
required="false" type="integer" readOnly="true"
defaultValue="16384" description="The maximum number of remoting worker
tasks to allow before rejecting. The default value is 16384."/>
+ <c:simple-property name="worker-task-max-threads"
required="false" type="integer" readOnly="true"
defaultValue="16" description="The maximum number of threads for the
remoting worker task thread pool. The default value is 16."/>
+ <c:simple-property name="worker-write-threads"
required="false" type="integer" readOnly="true"
defaultValue="1" description="The number of write threads to create for the
remoting worker. The default value is 1."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Mail (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=mail"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Mail Session (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mail-session"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="debug" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enables javamail debugging. The default value is false."/>
+ <c:simple-property name="from" required="false"
type="string" readOnly="true" description="From address that is
used as default from, if not set when sending"/>
+ <c:simple-property name="jndi-name" required="false"
type="string" readOnly="true" description="JNDI name to where
mail session should be bound"/>
+ </resource-configuration>
+
+ <service name="SMTP Mail Server (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=smtp"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
+
+ <service name="IMAP Mail Server (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=imap"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
+
+ <service name="POP3 Mail Server (Managed Server)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=pop3"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="true"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="true" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
+ </service>
+ </service>
+
+ </server>
+
+
+ <service name="Profile"
+ description="A profile in a domain. Profiles are assigned to server
groups."
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="profile"
readOnly="true"/>
+ </plugin-configuration>
+
+ <!-- Necessary to duplicate the ModCluster component for Standalone and Domain
because supported operations
+ list is different. Update similar Standalone service if changes are necessary.
-->
+ <service name="ModCluster Domain Service"
+ class="ModClusterComponent"
+ discovery="ModClusterDiscoveryComponent"
+ description="Mod_cluster support"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
+ </plugin-configuration>
+
+ <service name="Domain Service Configuration"
+ discovery="SubsystemDiscovery"
+ class="ModClusterComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ </plugin-configuration>
+
+ &modclusterSharedOpsConfig;
+
+ <service name="Domain Dynamic Load Provider"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
+ <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
+ </resource-configuration>
+
+ <service name="Domain Custom Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of custom-load-metric service -->
+
+ <service name="Domain Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+ </service><!-- End of load-metric service -->
+ </service><!-- End of dynamic-load-provider service -->
+
+ <service name="Domain Ssl"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-revocation-ur"
required="false" type="string" readOnly="false"
description="Certificate authority revocation list."/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite"
required="false" type="string" readOnly="false"
description="The allowed cipher suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ </resource-configuration>
+ </service><!-- End of ssl service -->
+ </service><!-- End of Domain Modcluster Service Configuration -->
+ </service>
+
+ <service name="Naming (Profile)"
+ discovery="SubsystemDiscovery"
+ class="NamingComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
+ </plugin-configuration>
- </service>--><!-- End of WebAppContext service -->
- </service><!-- End of Standalone Modcluster Service Configuration -->
- </service><!-- End of ModCluster Standalone Service -->
+ <service name="Binding (Profile)"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JNDI bindings for primitive types"
+ createDeletePolicy="both">
- </server> <!-- JBossAS7 Standalone Server -->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="binding"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="binding-type" required="true"
type="string" readOnly="false" description="The type of binding
to create, may be simple, lookup or object-factory">
+ <c:property-options>
+ <c:option value="simple"/>
+ <c:option value="lookup"/>
+ <c:option value="object-factory"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="class" required="false"
type="string" readOnly="false" description="The object factory
class name for object factory bindings"/>
+ <c:simple-property name="lookup" required="false"
type="string" readOnly="false" description="The entry to lookup
in JNDI for lookup bindings"/>
+ <c:simple-property name="module" required="false"
type="string" readOnly="false" description="The module to load
the object factory from for object factory bindings"/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="false" description="The type of the value
to bind for simple bindings, this must be a primitive type"/>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The value to bind for
simple bindings"/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ </service>
<service name="JVM"
discovery="JVMDiscoveryComponent"
@@ -2073,7 +2582,6 @@
<c:simple-property name="path" readOnly="true"
default="connector"/>
</plugin-configuration>
-
<metric property="bytesSent" measurementType="trendsup"
description="Number of byte sent by the connector."/>
<metric property="bytesReceived" measurementType="trendsup"
description="Number of byte received by the connector (POST data)."/>
<metric property="processingTime" measurementType="trendsup"
units="milliseconds" description="Processing time used by the connector. Im
milli-seconds."/>
@@ -2908,7 +3416,6 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
</runs-inside>
@@ -3006,7 +3513,6 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
@@ -3014,26 +3520,6 @@
<c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
- <!-- REMOVING. These are lifecycle operations for AS container itself. Don't
think we want to allow
- customers to be able to remove/add a subsystem via RHQ.
- <operation name="add" description="Adds the web services
subsystem.">
- <parameters>
- <c:simple-property name="modify-wsdl-address"
required="false" type="boolean" readOnly="false"
description="Whether the soap address can be modified."/>
- <c:simple-property name="wsdl-host" required="false"
type="string" readOnly="false" description="The WSDL, that is a
required deployment artifact for an endpoint, has a <soap:address> element
which points to the location of the endpoint. JBoss supports rewriting of that SOAP
address. If the content of <soap:address> is a valid URL, JBossWS will not
rewrite it unless 'modify-wsdl-address' is true. If the content of
<soap:address> is not a valid URL, JBossWS will rewrite it using the
attribute values given below. If 'wsdl-host' is set to
'jbossws.undefined.host', JBossWS uses requesters host when rewriting the
<soap:address>"/>
- <c:simple-property name="wsdl-port" required="false"
type="integer" readOnly="false" description="The non-secure port
that will be used for rewriting the SOAP address. If absent the port will be identified by
querying the list of installed connectors."/>
- <c:simple-property name="wsdl-secure-port" required="false"
type="integer" readOnly="false" description="The secure port that
will be used for rewriting the SOAP address. If absent the port will be identified by
querying the list of installed connectors."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds the
web services subsystem."/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes the web services
subsystem.">
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation> -->
-
<resource-configuration>
<c:simple-property name="modify-wsdl-address"
required="false" type="boolean" readOnly="false"
description="Whether the soap address can be modified."/>
<c:simple-property name="wsdl-host" required="false"
type="string" readOnly="false" description="The WSDL, that is a
required deployment artifact for an endpoint, has a <soap:address> element
which points to the location of the endpoint. JBoss supports rewriting of that SOAP
address. If the content of <soap:address> is a valid URL, JBossWS will not
rewrite it unless 'modify-wsdl-address' is true. If the content of
<soap:address> is not a valid URL, JBossWS will rewrite it using the
attribute values given below. If 'wsdl-host' is set to
'jbossws.undefined.host', JBossWS uses requesters host when rewriting the
<soap:address>"/>
@@ -3043,78 +3529,69 @@
<service name="Endpoint"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="endpoint-config"/>
</plugin-configuration>
- <resource-configuration>
- <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
- <c:list-property name="property" required="false"
description="A list of generic key/value properties.">
- <c:map-property name="property:collapsed"
displayName="Property">
- <c:simple-property name="name:0" type="string"
displayName="Name" required="true"/>
- <c:simple-property name="value:1" type="string"
displayName="Value" required="true"/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
-
<service name="Post Handler Chain"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="post-handler-chain"/>
</plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
+ </resource-configuration>
+
<service name="Post Handler"
discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <runs-inside>
- <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
- <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
- </runs-inside>
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="handler"/>
</plugin-configuration>
+
<resource-configuration>
<c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
</resource-configuration>
</service>
</service>
- <!-- End of post handler chain service -->
<service name="Pre Handler Chain"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="pre-handler-chain"/>
</plugin-configuration>
+
<resource-configuration>
<c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
</resource-configuration>
<service name="Pre Handler"
discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <runs-inside>
- <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
- <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
- </runs-inside>
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="handler"/>
</plugin-configuration>
+
<resource-configuration>
<c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
</resource-configuration>
</service>
- <!-- End of Pre Handler service definition -->
</service>
- <!-- End of Pre Handler Chain service definition -->
</service>
- <!-- End of Endpoint service definition -->
</service>
@@ -3125,14 +3602,11 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Host"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=naming"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<operation name="jndi-view" displayName="JNDIView"
description="Peek at the JNDI tree">
@@ -4897,12 +5371,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=jacorb"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -4962,7 +5434,6 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
<parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
@@ -5119,12 +5590,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=jaxr"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5159,12 +5628,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=jpa"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5229,12 +5696,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" default="subsystem=ee"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -5248,10 +5713,11 @@
</resource-configuration>
</service>
-
<service name="Security"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ description="The configuration of the security subsystem."
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -5264,43 +5730,19 @@
<c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
- <operation name="add" description="Adds the security
subsystem.">
- <parameters>
- <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
description="Sets the copy mode of subjects done by the security managers to be deep
copies that makes copies of the subject principals and credentials if they are cloneable.
It should be set to true if subject include mutable content that can be corrupted when
multiple threads have the same identity and cache flushes/logout clearing the subject in
one thread results in subject references affecting other threads."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds the
security subsystem."/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes the security
subsystem.">
- <results>
- <c:simple-property name="operationResult" description="Removes
the security subsystem."/>
- </results>
- </operation>
-
<resource-configuration>
- <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false"
- description="Sets the copy mode of subjects done by the
security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
</resource-configuration>
<service name="Security Domain"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="security-domain"/>
</plugin-configuration>
- <operation name="add" description="Add a security
domain.">
- <parameters>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Add a
security domain."/>
- </results>
- </operation>
-
<operation name="flush-cache" description="Remove entries stored
in the authentication cache for this security domain. A single entry can be flushed by
using the principal argument with the username as the value. If no argument is passed to
the operation, all entries are flushed.">
<results>
<c:simple-property name="operationResult" description="Remove
entries stored in the authentication cache for this security domain. A single entry can be
flushed by using the principal argument with the username as the value. If no argument is
passed to the operation, all entries are flushed."/>
@@ -5313,39 +5755,19 @@
</results>
</operation>
- <operation name="remove" description="Remove a security
domain.">
- <results>
- <c:simple-property name="operationResult" description="Remove
a security domain."/>
- </results>
- </operation>
-
<resource-configuration>
<c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
</resource-configuration>
- <service name="acl"
+ <service name="ACL"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="acl"/>
</plugin-configuration>
- <operation name="add" description="Adds an ACL
configuration">
- <parameters>
- <c:simple-property name="acl-modules" required="true"
type="string" readOnly="false" description="List of acl
modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
an ACL configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes an ACL
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes an ACL configuration"/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="acl-modules" required="false"
description="List of acl modules">
<c:simple-property name="acl-modules"/>
@@ -5353,159 +5775,80 @@
</resource-configuration>
</service>
- <service name="audit"
+
+ <service name="Audit"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="audit"/>
</plugin-configuration>
- <operation name="add" description="Adds an audit
configuration">
- <parameters>
- <c:simple-property name="provider-modules"
required="true" type="string" readOnly="false"
description="List of provider modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
an audit configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes and audit
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes and audit configuration"/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="provider-modules"
required="false" description="List of provider modules">
<c:simple-property name="provider-modules"/>
</c:list-property>
</resource-configuration>
-
</service>
- <service name="authentication"
+
+ <service name="Authentication"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="authentication"/>
</plugin-configuration>
- <operation name="add" description="Adds a traditional
authentication configuration">
- <parameters>
- <c:simple-property name="login-modules"
required="true" type="string" readOnly="false"
description="List of authentication modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
a traditional authentication configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes a traditional
authentication configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes a traditional authentication configuration"/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="login-modules" required="false"
description="List of authentication modules">
<c:simple-property name="login-modules"/>
</c:list-property>
</resource-configuration>
-
</service>
- <service name="authorization"
+
+ <service name="Authorization"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="authorization"/>
</plugin-configuration>
- <operation name="add" description="Adds an authorization
configuration">
- <parameters>
- <c:simple-property name="policy-modules"
required="true" type="string" readOnly="false"
description="List of authorization modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
an authorization configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes an authorization
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes an authorization configuration"/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="policy-modules" required="false"
description="List of authorization modules">
<c:simple-property name="policy-modules"/>
</c:list-property>
</resource-configuration>
-
</service>
- <service name="identity-trust"
+
+ <service name="Identity Trust"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="identity-trust"/>
</plugin-configuration>
- <operation name="add" description="Adds an identity trust
configuration.">
- <parameters>
- <c:simple-property name="trust-modules"
required="true" type="string" readOnly="false"
description="List of trust modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
an identity trust configuration."/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes an identity trust
configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes an identity trust configuration."/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="trust-modules" required="false"
description="List of trust modules">
<c:simple-property name="trust-modules"/>
</c:list-property>
</resource-configuration>
-
</service>
- <service name="jsse"
+
+ <service name="JSSE"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="jsse"/>
</plugin-configuration>
- <operation name="add" description="Adds a JSSE
configuration">
- <parameters>
- <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
- <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
- <c:simple-property name="truststore" required="false"
type="string" readOnly="false" description="Configures a JSSE
trust store"/>
- <c:simple-property name="trust-manager"
required="false" type="string" readOnly="false"
description="JSEE Trust Manager factory"/>
- <c:simple-property name="key-manager" required="false"
type="string" readOnly="false" description="JSEE Key Manager
factory"/>
- <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
- <c:simple-property name="keystore" required="false"
type="string" readOnly="false" description="Configures a JSSE key
store"/>
- <c:simple-property name="additional-properties"
required="false" type="string" readOnly="false"
description="Additional properties that may be necessary to configure
JSSE."/>
- <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
- <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
- <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
a JSSE configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes a JSSE
configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes a JSSE configuration."/>
- </results>
- </operation>
-
<resource-configuration>
<c:simple-property name="cipher-suites" required="false"
type="string" readOnly="false" description="Comma separated list
of cipher suites to enable on SSLSockets."/>
<c:simple-property name="client-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the client alias."/>
@@ -5536,40 +5879,26 @@
<c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
</c:map-property>
</resource-configuration>
-
</service>
- <service name="mapping"
+
+ <service name="Mapping"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="mapping"/>
</plugin-configuration>
- <operation name="add" description="Adds a mapping
configuration.">
- <parameters>
- <c:simple-property name="mapping-modules"
required="true" type="string" readOnly="false"
description="List of modules that map principal, role, and credential
information"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
a mapping configuration."/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes a mapping
configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes a mapping configuration."/>
- </results>
- </operation>
-
<resource-configuration>
<c:list-property name="mapping-modules" required="false"
description="List of modules that map principal, role, and credential
information">
<c:simple-property name="mapping-modules"/>
</c:list-property>
</resource-configuration>
-
</service>
</service>
- <service name="vault"
+
+ <service name="Vault"
discovery="SubsystemDiscovery"
class="BaseComponent">
@@ -5577,29 +5906,11 @@
<c:simple-property name="path" readOnly="true"
default="vault"/>
</plugin-configuration>
- <operation name="add" description="Adds a security vault
configuration">
- <parameters>
- <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
- <c:simple-property name="options" required="false"
type="string" readOnly="false" description="Security Vault
options."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds a
security vault configuration"/>
- </results>
- </operation>
-
- <operation name="remove" description="Removes a security vault
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes a security vault configuration"/>
- </results>
- </operation>
-
<resource-configuration>
<c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
</resource-configuration>
-
</service>
- </service> <!-- Security -->
-
+ </service>
<service name="Threads"
discovery="SubsystemDiscovery"
@@ -6093,12 +6404,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=infinispan"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="Cache Container"
@@ -6235,12 +6544,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=remoting"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<resource-configuration>
@@ -6289,7 +6596,7 @@
</c:list-property>
</resource-configuration>
- <service name="Property"
+ <service name="Property (Osgi)"
discovery="SubsystemDiscovery"
class="BaseComponent"
description="A framework property. The identity of the resource defines
the property name.">
@@ -6357,12 +6664,10 @@
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=mail"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<service name="Mail Session"
@@ -7859,4 +8164,42 @@
</resource-configuration>
</service>
+
+ <service name="Property"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A property"
+ createDeletePolicy="both">
+
+ <runs-inside>
+ <parent-resource-type name="Endpoint"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="property"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="false"
type="string" readOnly="false" description="The property
value."/>
+ </resource-configuration>
+ </service>
+
+ <service name="Property (Read Only)"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="A property">
+
+ <runs-inside>
+ <parent-resource-type name="Endpoint (Managed Server)"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="property"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="value" required="false"
type="string" readOnly="true" description="The property
value."/>
+ </resource-configuration>
+ </service>
+
</plugin>
commit 6eb0643d9d1e27376628048f564759cb87868487
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 21:31:11 2012 -0400
[BZ 813066] expose new 'multicastAddress' trait on Standalone Server and
Managed Server Resources that are running in HA/cluster mode
(
https://bugzilla.redhat.com/show_bug.cgi?id=813066)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 49dfc1d..ace2a35 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -62,6 +62,7 @@ import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.core.pluginapi.util.StartScriptConfiguration;
import org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
@@ -744,6 +745,79 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
return (T) res.getResult();
}
+ protected Address getServerAddress() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected String getSocketBindingGroup() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected void collectMulticastAddressTrait(MeasurementReport report,
MeasurementScheduleRequest request) {
+ Address jgroupsUdpStackAddress = new Address(getServerAddress());
+ jgroupsUdpStackAddress.add("subsystem", "jgroups");
+ jgroupsUdpStackAddress.add("stack", "udp");
+ jgroupsUdpStackAddress.add("transport", "TRANSPORT");
+
+ String socketBinding;
+ try {
+ socketBinding = readAttribute(jgroupsUdpStackAddress,
"socket-binding");
+ } catch (Exception e) {
+ socketBinding = null;
+ }
+
+ if (socketBinding != null) {
+ Address jgroupsSocketBindingAddress = new Address(getServerAddress());
+ String socketBindingGroup = getSocketBindingGroup();
+ jgroupsSocketBindingAddress.add("socket-binding-group",
socketBindingGroup);
+ jgroupsSocketBindingAddress.add("socket-binding", socketBinding);
+ String multicastHost = null;
+ Integer multicastPort;
+ try {
+ try {
+ Map<String, String> map =
readAttribute(jgroupsSocketBindingAddress, "multicast-address", Map.class);
+ String expressionValue = map.get("EXPRESSION_VALUE");
+ int beginIndex =
expressionValue.indexOf("${jboss.default.multicast.address");
+ if (beginIndex >= 0) {
+ int endIndex = expressionValue.indexOf('}', beginIndex);
+ if (endIndex >= 0) {
+ String expression = expressionValue.substring(beginIndex + 2,
endIndex);
+ StartScriptConfiguration startScriptConfig =
getServerComponent().getStartScriptConfiguration();
+ List<String> startScriptArgs =
startScriptConfig.getStartScriptArgs();
+ for (String startScriptArg : startScriptArgs) {
+ if
(startScriptArg.startsWith("-Djboss.default.multicast.address=")) {
+ multicastHost =
startScriptArg.substring("-Djboss.default.multicast.address=".length());
+ break;
+ }
+ }
+ if (multicastHost == null) {
+ int colonIndex = expression.indexOf(':');
+ String defaultValue = (colonIndex >= 0) ?
expression.substring(colonIndex + 1) : null;
+ if (defaultValue != null) {
+ multicastHost = defaultValue;
+ } else {
+ log.error("Failed to resolve expression value
[" + expressionValue
+ + "] of 'multicast-address'
attribute.");
+ }
+ }
+ }
+ }
+ } catch (ClassCastException cce) {
+ multicastHost = readAttribute(jgroupsSocketBindingAddress,
"multicast-address");
+ }
+ multicastPort = readAttribute(jgroupsSocketBindingAddress,
"multicast-port", Integer.class);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to lookup multicast address for
socket binding [" + socketBinding + "].");
+ }
+
+ if (multicastHost != null && multicastPort != null) {
+ String multicastAddress = multicastHost + ":" + multicastPort;
+ MeasurementDataTrait data = new MeasurementDataTrait(request,
multicastAddress);
+ report.addData(data);
+ }
+ }
+ }
+
private static class ComplexRequest {
private String prop;
private String sub;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 836393e..8b85deb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -189,6 +189,10 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
return serverPluginConfig;
}
+ public StartScriptConfiguration getStartScriptConfiguration() {
+ return startScriptConfig;
+ }
+
@Override
public ASConnection getASConnection() {
return connection;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
index 945682c..d26f54e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
@@ -102,18 +102,14 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
return super.getAvailability();
}
-
public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
requests) throws Exception {
-
- Set<MeasurementScheduleRequest> leftovers = new
HashSet<MeasurementScheduleRequest>(requests.size());
Set<MeasurementScheduleRequest> skmRequests = new
HashSet<MeasurementScheduleRequest>(requests.size());
- for (MeasurementScheduleRequest req : requests) {
- if (req.getName().startsWith("_skm:"))
- skmRequests.add(req);
- }
+ Set<MeasurementScheduleRequest> leftovers = new
HashSet<MeasurementScheduleRequest>(requests.size());
for (MeasurementScheduleRequest request : requests) {
- if (request.getName().equals("startTime")) {
+ if (request.getName().startsWith("_skm:")) {
+ skmRequests.add(request);
+ } else if (request.getName().equals("startTime")) {
String path = getPath();
path = path.replace("server-config", "server");
Address address = new Address(path);
@@ -127,10 +123,13 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
MeasurementDataTrait data = new MeasurementDataTrait(request, new
Date(startTime).toString());
report.addData(data);
}
- } else if (!request.getName().startsWith("_skm:")) {
+ } else if (request.getName().equals("multicastAddress")) {
+ collectMulticastAddressTrait(report, request);
+ } else {
leftovers.add(request);
}
}
+
// Now handle the skm (this could go into a common method with
BaseServerComponent's impl.
if (skmRequests.size() > 0) {
Address address = new Address();
@@ -169,6 +168,42 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
}
@Override
+ protected Address getServerAddress() {
+ String serverConfigElement = getAddress().get(1);
+ String serverName =
serverConfigElement.substring(serverConfigElement.indexOf('=') + 1);
+ Address serverAddress = getAddress().getParent();
+ serverAddress.add("server", serverName);
+ return serverAddress;
+ }
+
+ @Override
+ protected String getSocketBindingGroup() {
+ String socketBindingGroup;
+ try {
+ socketBindingGroup = readAttribute("socket-binding-group");
+ } catch (Exception e) {
+ socketBindingGroup = null;
+ }
+ if (socketBindingGroup == null) {
+ String group;
+ try {
+ group = readAttribute("group");
+ } catch (Exception e) {
+ group = null;
+ }
+ if (group != null) {
+ Address groupAddress = new Address("server-group", group);
+ try {
+ socketBindingGroup = readAttribute(groupAddress,
"socket-binding-group");
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ }
+ return socketBindingGroup;
+ }
+
+ @Override
public Configuration loadResourceConfiguration() throws Exception {
Configuration configuration = super.loadResourceConfiguration();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
index f024530..6eb19f6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
@@ -63,6 +63,8 @@ public class StandaloneASComponent<T extends
ResourceComponent<?>> extends BaseS
String requestName = request.getName();
if (requestName.equals(SERVER_CONFIG_TRAIT)) {
collectConfigTrait(report, request);
+ } else if (requestName.equals("multicastAddress")) {
+ collectMulticastAddressTrait(report, request);
} else {
leftovers.add(request); // handled below
}
@@ -72,6 +74,17 @@ public class StandaloneASComponent<T extends
ResourceComponent<?>> extends BaseS
}
@Override
+ protected Address getServerAddress() {
+ return getAddress();
+ }
+
+ @Override
+ protected String getSocketBindingGroup() {
+ // TODO (ips): Can this ever be something other than
"standard-sockets"?
+ return "standard-sockets";
+ }
+
+ @Override
public OperationResult invokeOperation(String name,
Configuration parameters) throws Exception {
if (name.equals("start")) {
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 4331fcc..d4d0141 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -921,6 +921,8 @@
<metric property="status" dataType="trait"
displayName="Server state" description="Detailed server state"
displayType="summary"/>
<metric property="startTime" dataType="trait"
displayName="Start time of the server" defaultOn="true"/>
+ <metric property="multicastAddress" displayName="JGroups
Multicast Address" dataType="trait" displayType="summary"
+ description="the host and port used by JGroups for
multicast"/>
<event name="logEntry" description="an entry in a log
file"/>
@@ -1336,6 +1338,8 @@
displayType="summary"/>
&serverKindMetrics;
<metric property="startTime" dataType="trait"
displayName="Server Start Time" defaultOn="true"/>
+ <metric property="multicastAddress" displayName="JGroups Multicast
Address" dataType="trait" displayType="summary"
+ description="the host and port used by JGroups for multicast"/>
<metric property="config-file" dataType="trait"
displayName="Server Config File" displayType="summary"
defaultInterval="3600000"
description="The name of the server configuration file this server is
using"/>
commit 5dce85d192bbd2f060dff6e32d5231ff5f045569
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed May 23 17:27:37 2012 -0400
[BZ 823860] get the installer startup props links to work. Get them to not require the
prefix "-" so we can have JON be able to use these without requiring JON docs to
have "-" in the URL.
this also cleans up some of the other non-en i18n properties files - they don't
need some of the non-translatable properties (this way we don't have N places to
change the strings, we just have 1 now)
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_de.properties
index cd12595..6b17551 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_de.properties
@@ -7,48 +7,18 @@
###################################
#=================== Help URLs =====================
-# The Help sections and entries are table driven via property lookups. The following
property
-# names are expected:
+# See the default MessageConstants.properties for what these properties mean and
+# what needs to be internationalized.
#
-# The number of help sections:
-#
-# view_help_section_count = numSectionsInteger
-#
-# For each section:
-# N = 1..numSections
-#
-# view_help_section_N_title = localized title for section in the sectionStack
-# view_help_section_N_item_count = numSectionItemsInteger
-#
-# For each url entry in the section N:
-# M = 1..numSectionItems
-#
-# view_help_section_N_propTitle_M = localized title for the help (required)
-# view_help_section_N_propIcon_M = icon path (optional, defaults to document icon)
-# view_help_section_N_propUrl_M = url for the help (required)
-#
-view_help_section_count = 2
-
view_help_section_1_title = Dokumentation
-view_help_section_1_item_count = 3
view_help_section_1_propTitle_1 = Frequently Asked Questions (FAQ)
-view_help_section_1_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/FAQ
view_help_section_1_propTitle_2 = Dokumentation
-view_help_section_1_propUrl_2 =
http://www.rhq-project.org/display/JOPR2/Home
view_help_section_1_propTitle_3 = API Javadoc
-view_help_section_1_propUrl_3 =
http://www.rhq-project.org/display/JOPR2/API+Documentation
view_help_section_2_title = Tutorium
-view_help_section_2_item_count = 4
view_help_section_2_propTitle_1 = Demo: Alles
-view_help_section_2_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/Demos
view_help_section_2_propTitle_2 = Demo: Bundles installieren
-view_help_section_2_propUrl_2 =
http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
view_help_section_2_propTitle_3 = Wie man Gruppen-Definitionen erstellt
-view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_3 =
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
view_help_section_2_propTitle_4 = Wie man die Suchleiste benutzt
-view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_4 =
http://www.rhq-project.org/display/JOPR2/Search
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
index 0f3caa7..c3b1487 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
@@ -7,48 +7,18 @@
###################################
#=================== Help URLs =====================
-# The Help sections and entries are table driven via property lookups. The following
property
-# names are expected:
+# See the default MessageConstants.properties for what these properties mean and
+# what needs to be internationalized.
#
-# The number of help sections:
-#
-# view_help_section_count = numSectionsInteger
-#
-# For each section:
-# N = 1..numSections
-#
-# view_help_section_N_title = localized title for section in the sectionStack
-# view_help_section_N_item_count = numSectionItemsInteger
-#
-# For each url entry in the section N:
-# M = 1..numSectionItems
-#
-# view_help_section_N_propTitle_M = localized title for the help (required)
-# view_help_section_N_propIcon_M = icon path (optional, defaults to document icon)
-# view_help_section_N_propUrl_M = url for the help (required)
-#
-view_help_section_count = 2
-
view_help_section_1_title = ドキュメンテーション
-view_help_section_1_item_count = 3
view_help_section_1_propTitle_1 = よくある質問 (FAQ)
-view_help_section_1_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/FAQ
view_help_section_1_propTitle_2 = ドキュメンテーションセット
-view_help_section_1_propUrl_2 =
http://www.rhq-project.org/display/JOPR2/Home
view_help_section_1_propTitle_3 = API Javadoc
-view_help_section_1_propUrl_3 =
http://www.rhq-project.org/display/JOPR2/API+Documentation
view_help_section_2_title = チュートリアル
-view_help_section_2_item_count = 4
view_help_section_2_propTitle_1 = デモ: すべてのデモ
-view_help_section_2_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/Demos
view_help_section_2_propTitle_2 = デモ: バンドルプロビジョニング
-view_help_section_2_propUrl_2 =
http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
view_help_section_2_propTitle_3 = グループ定義の構築方法
-view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_3 =
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
view_help_section_2_propTitle_4 = 検索バーの使用方法
-view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_4 =
http://www.rhq-project.org/display/JOPR2/Search
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_pt.properties
index 76d3fa8..434c06b 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_pt.properties
@@ -1,21 +1,24 @@
-view_help_section_count = 2
-view_help_section_1_title = Documentação
-view_help_section_1_item_count = 3
+#
+# RHQ GUI i18n Message Constants - Locale: PT (Portuguese)
+# This file should be UTF-8 encoded.
+#
+# This is used specifically for properties needing lookup by name, at runtime. These
+# constant properties can be localized but can not have arguments.
+###################################
+
+#=================== Help URLs =====================
+# See the default MessageConstants.properties for what these properties mean and
+# what needs to be internationalized.
+#
+view_help_section_1_title = Documentação
+
view_help_section_1_propTitle_1 = Perguntas & Respostas (FAQ)
-view_help_section_1_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/FAQ
view_help_section_1_propTitle_2 = Conjunto de Documentos
-view_help_section_1_propUrl_2 =
http://www.rhq-project.org/display/JOPR2/Home
view_help_section_1_propTitle_3 = API Javadoc
-view_help_section_1_propUrl_3 =
http://www.rhq-project.org/display/JOPR2/API+Documentation
-view_help_section_2_title = Tutorial
-view_help_section_2_item_count = 4
+
+view_help_section_2_title = Tutorial
+
view_help_section_2_propTitle_1 = Demo: Todas as Demos
-view_help_section_2_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/Demos
view_help_section_2_propTitle_2 = Demo: Provisionamento de Pacotes
-view_help_section_2_propUrl_2 =
http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
view_help_section_2_propTitle_3 = Como construir Definições de Grupo
-view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_3 =
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
view_help_section_2_propTitle_4 = Como utilizar a Barra de Pesquisa
-view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png\n
-view_help_section_2_propUrl_4 =
http://www.rhq-project.org/display/JOPR2/Search
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_zh.properties
index 86a6efb..545263e 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_zh.properties
@@ -7,49 +7,18 @@
###################################
#=================== Help URLs =====================
-# The Help sections and entries are table driven via property lookups. The following
property
-# names are expected:
+# See the default MessageConstants.properties for what these properties mean and
+# what needs to be internationalized.
#
-# The number of help sections:
-#
-# view_help_section_count = numSectionsInteger
-#
-# For each section:
-# N = 1..numSections
-#
-# view_help_section_N_title = localized title for section in the sectionStack
-# view_help_section_N_item_count = numSectionItemsInteger
-#
-# For each url entry in the section N:
-# M = 1..numSectionItems
-#
-# view_help_section_N_propTitle_M = localized title for the help (required)
-# view_help_section_N_propIcon_M = icon path (optional, defaults to document icon)
-# view_help_section_N_propUrl_M = url for the help (required)
-#
-view_help_section_count = 2
-
view_help_section_1_title = \u6587\u6863
-view_help_section_1_item_count = 3
view_help_section_1_propTitle_1 = \u7591\u96be\u89e3\u7b54 (FAQ)
-view_help_section_1_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/FAQ
view_help_section_1_propTitle_2 = \u6587\u6863\u96c6
-view_help_section_1_propUrl_2 =
http://www.rhq-project.org/display/JOPR2/Home
view_help_section_1_propTitle_3 = API Javadoc
-view_help_section_1_propUrl_3 =
http://www.rhq-project.org/display/JOPR2/API+Documentation
view_help_section_2_title = \u6559\u7a0b
-view_help_section_2_item_count = 4
view_help_section_2_propTitle_1 = \u6f14\u793a: \u6240\u6709\u6f14\u793a
-view_help_section_2_propUrl_1 =
http://www.rhq-project.org/display/JOPR2/Demos
view_help_section_2_propTitle_2 = \u6f14\u793a: Bundle Provisioning
-view_help_section_2_propUrl_2 =
http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
view_help_section_2_propTitle_3 = How to build Group Definitions
-view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_3 =
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
view_help_section_2_propTitle_4 = \u5982\u4f55\u4f7f\u7528\u68c0\u7d22\u6846
-view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png
-view_help_section_2_propUrl_4 =
http://www.rhq-project.org/display/JOPR2/Search
-
diff --git a/modules/enterprise/gui/installer-war/pom.xml
b/modules/enterprise/gui/installer-war/pom.xml
index b4fd36c..ba0518f 100644
--- a/modules/enterprise/gui/installer-war/pom.xml
+++ b/modules/enterprise/gui/installer-war/pom.xml
@@ -26,15 +26,15 @@
<product.name>RHQ</product.name>
<product.fullName>RHQ</product.fullName>
<product.url.domain>rhq-project.org</product.url.domain>
- <product.sales.email>sales(a)rhq-project.org</product.sales.email>
- <product.support.email>info(a)rhq-project.org</product.support.email>
+
<product.sales.email>rhq-users(a)lists.fedorahosted.org</product.sales.email>
+
<product.support.email>rhq-users(a)lists.fedorahosted.org</product.support.email>
<product.version>${project.version}</product.version>
-
<
product.help.doc.root>http://support.rhq-project.org/display/JOPR2/<...
+
<
product.help.doc.root>http://www.rhq-project.org/display/JOPR2/</pr...
<product.help.installation>Installation</product.help.installation>
<product.help.guide.server>Running+the+RHQ+Server</product.help.guide.server>
<product.help.guide.agent>Running+the+RHQ+Agent</product.help.guide.agent>
<product.help.FAQ>FAQ</product.help.FAQ>
-
<
product.help.config.props>http://support.rhq-project.org/display/JOPR2...
+
<
product.help.config.props>http://www.rhq-project.org/display/JOPR2/Sta...
</properties>
<dependencies>
diff --git
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
index e9f1511..b316c13 100644
---
a/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
+++
b/modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/i18n/InstallerI18NResourceKeys.java
@@ -201,447 +201,447 @@ public interface InstallerI18NResourceKeys {
@I18NMessage(locale = "en", value = "Database Type")
String PROP_DATABASE_TYPE = "propertyDatabaseType";
- @I18NMessage("-DatabaseType")
+ @I18NMessage(/* help url */"DatabaseType")
String PROP_DATABASE_TYPE_HELP = "propertyDatabaseTypeHelp";
@I18NMessage(locale = "en", value = "Database Connection URL")
String PROP_DATABASE_CONNECTION_URL = "propertyDatabaseConnectionUrl";
- @I18NMessage("-DatabaseConnectionURL")
+ @I18NMessage(/* help url */"DatabaseConnectionURL")
String PROP_DATABASE_CONNECTION_URL_HELP =
"propertyDatabaseConnectionUrlHelp";
@I18NMessage(locale = "en", value = "Database JDBC Driver
Class")
String PROP_DATABASE_DRIVER_CLASS = "propertyDatabaseDriverClass";
- @I18NMessage("-DatabaseJDBCDriverClass")
+ @I18NMessage(/* help url */"DatabaseJDBCDriverClass")
String PROP_DATABASE_DRIVER_CLASS_HELP =
"propertyDatabaseDriverClassHelp";
@I18NMessage(locale = "en", value = "Database XA DataSource
Class")
String PROP_DATABASE_XA_DS_CLASS = "propertyDatabaseXADataSourceClass";
- @I18NMessage("-DatabaseXADataSourceClass")
+ @I18NMessage(/* help url */"DatabaseXADataSourceClass")
String PROP_DATABASE_XA_DS_CLASS_HELP =
"propertyDatabaseXADataSourceClassHelp";
@I18NMessage(locale = "en", value = "Database User Name")
String PROP_DATABASE_USERNAME = "propertyDatabaseUserName";
- @I18NMessage("-DatabaseUserName")
+ @I18NMessage(/* help url */"DatabaseUserName")
String PROP_DATABASE_USERNAME_HELP = "propertyDatabaseUserNameHelp";
@I18NMessage(locale = "en", value = "Database Password")
String PROP_DATABASE_PASSWORD = "propertyDatabasePassword";
- @I18NMessage("-DatabasePassword")
+ @I18NMessage(/* help url */"DatabasePassword")
String PROP_DATABASE_PASSWORD_HELP = "propertyDatabasePasswordHelp";
@I18NMessage(locale = "en", value = "Server Bind Address")
String PROP_SERVER_BIND_ADDRESS = "propertyBindAddress";
- @I18NMessage("-ServerBindAddress")
+ @I18NMessage(/* help url */"ServerBindAddress")
String PROP_SERVER_BIND_ADDRESS_HELP = "propertyBindAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "HTTP Port")
})
String PROP_HTTP_PORT = "propertyHttpPort";
- @I18NMessage("-HTTPPort")
+ @I18NMessage(/* help url */"HTTPPort")
String PROP_HTTP_PORT_HELP = "propertyHttpPortHelp";
@I18NMessage(locale = "en", value = "Secure HTTPS Port")
String PROP_HTTPS_PORT = "propertyHttpsPort";
- @I18NMessage("-SecureHTTPSPort")
+ @I18NMessage(/* help url */"SecureHTTPSPort")
String PROP_HTTPS_PORT_HELP = "propertyHttpsPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Web Service
Port") })
String PROP_WEB_SERVICE_PORT = "propertyWebServicePort";
- @I18NMessage("-WebServicePort")
+ @I18NMessage(/* help url */"WebServicePort")
String PROP_WEB_SERVICE_PORT_HELP = "propertyWebServicePortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Naming Service
Port") })
String PROP_NAMING_SERVICE_PORT = "propertyNamingServicePort";
- @I18NMessage("-NamingServicePort")
+ @I18NMessage(/* help url */"NamingServicePort")
String PROP_NAMING_SERVICE_PORT_HELP = "propertyNamingServicePortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Naming Service
RMI Port") })
String PROP_NAMING_SERVICE_RMI_PORT = "propertyNamingServiceRmiPort";
- @I18NMessage("-NamingServiceRMIPort")
+ @I18NMessage(/* help url */"NamingServiceRMIPort")
String PROP_NAMING_SERVICE_RMI_PORT_HELP =
"propertyNamingServiceRmiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "JRMP Invoker RMI
Port") })
String PROP_JRMP_INVOKER_RMI_PORT = "propertyJrmpInvokerRmiPort";
- @I18NMessage("-JRMPInvokerRMIPort")
+ @I18NMessage(/* help url */"JRMPInvokerRMIPort")
String PROP_JRMP_INVOKER_RMI_PORT_HELP = "propertyJrmpInvokerRmiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Pooled Invoker
RMI Port") })
String PROP_POOLED_INVOKER_RMI_PORT = "propertyPooledInvokerRmiPort";
- @I18NMessage("-PooledInvokerRMIPort")
+ @I18NMessage(/* help url */"PooledInvokerRMIPort")
String PROP_POOLED_INVOKER_RMI_PORT_HELP =
"propertyPooledInvokerRmiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "AJP Port")
})
String PROP_AJP_PORT = "propertyAjpPort";
- @I18NMessage("-AJPPort")
+ @I18NMessage(/* help url */"AJPPort")
String PROP_AJP_PORT_HELP = "propertyAjpPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Unified Invoker
Port") })
String PROP_UNIFIED_INVOKER_PORT = "propertyUnifiedInvokerPort";
- @I18NMessage("-UnifiedInvokerPort")
+ @I18NMessage(/* help url */"UnifiedInvokerPort")
String PROP_UNIFIED_INVOKER_PORT_HELP = "propertyUnifiedInvokerPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Aspect Deployer
Port") })
String PROP_ASPECT_DEPLOYER_PORT = "propertyAspectDeployerPort";
- @I18NMessage("-AspectDeployerPort")
+ @I18NMessage(/* help url */"AspectDeployerPort")
String PROP_ASPECT_DEPLOYER_PORT_HELP = "propertyAspectDeployerPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Client
Auth Mode") })
String PROP_TOMCAT_SECURITY_CLIENT_AUTH_MOD =
"propertyTomcatClientAuthMode";
- @I18NMessage("-TomcatClientAuthMode")
+ @I18NMessage(/* help url */"TomcatClientAuthMode")
String PROP_TOMCAT_SECURITY_CLIENT_AUTH_MOD_HELP =
"propertyTomcatClientAuthModeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat
Keystore/Truststore Algorithm") })
String PROP_TOMCAT_SECURITY_ALGORITHM = "propertyTomcatAlgorithm";
- @I18NMessage("-TomcatAlgorithm")
+ @I18NMessage(/* help url */"TomcatAlgorithm")
String PROP_TOMCAT_SECURITY_ALGORITHM_HELP =
"propertyTomcatAlgorithmHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat
Keystore") })
String PROP_TOMCAT_SECURITY_KEYSTORE_FILENAME =
"propertyTomcatKeystoreFilename";
- @I18NMessage("-TomcatKeystore")
+ @I18NMessage(/* help url */"TomcatKeystore")
String PROP_TOMCAT_SECURITY_KEYSTORE_FILENAME_HELP =
"propertyTomcatKeystoreFilenameHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Keystore
Password") })
String PROP_TOMCAT_SECURITY_KEYSTORE_PASSWORD =
"propertyTomcatKeystorePassword";
- @I18NMessage("-TomcatKeystorePassword")
+ @I18NMessage(/* help url */"TomcatKeystorePassword")
String PROP_TOMCAT_SECURITY_KEYSTORE_PASSWORD_HELP =
"propertyTomcatKeystorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Keystore
Type") })
String PROP_TOMCAT_SECURITY_KEYSTORE_TYPE = "propertyTomcatKeystoreType";
- @I18NMessage("-TomcatKeystoreType")
+ @I18NMessage(/* help url */"TomcatKeystoreType")
String PROP_TOMCAT_SECURITY_KEYSTORE_TYPE_HELP =
"propertyTomcatKeystoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Keystore
Alias") })
String PROP_TOMCAT_SECURITY_KEYSTORE_ALIAS =
"propertyTomcatKeystoreAlias";
- @I18NMessage("-TomcatKeystoreAlias")
+ @I18NMessage(/* help url */"TomcatKeystoreAlias")
String PROP_TOMCAT_SECURITY_KEYSTORE_ALIAS_HELP =
"propertyTomcatKeystoreAliasHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat
Truststore") })
String PROP_TOMCAT_SECURITY_TRUSTSTORE_FILENAME =
"propertyTomcatTruststoreFilename";
- @I18NMessage("-TomcatTruststore")
+ @I18NMessage(/* help url */"TomcatTruststore")
String PROP_TOMCAT_SECURITY_TRUSTSTORE_FILENAME_HELP =
"propertyTomcatTruststoreFilenameHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Truststore
Password") })
String PROP_TOMCAT_SECURITY_TRUSTSTORE_PASSWORD =
"propertyTomcatTruststorePassword";
- @I18NMessage("-TomcatTruststorePassword")
+ @I18NMessage(/* help url */"TomcatTruststorePassword")
String PROP_TOMCAT_SECURITY_TRUSTSTORE_PASSWORD_HELP =
"propertyTomcatTruststorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat Truststore
Type") })
String PROP_TOMCAT_SECURITY_TRUSTSTORE_TYPE =
"propertyTomcatTruststoreType";
- @I18NMessage("-TomcatTruststoreType")
+ @I18NMessage(/* help url */"TomcatTruststoreType")
String PROP_TOMCAT_SECURITY_TRUSTSTORE_TYPE_HELP =
"propertyTomcatTruststoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Tomcat SSL
Protocol") })
String PROP_TOMCAT_SECURITY_SSL_PROTOCOL = "propertyTomcatSslProtocol";
- @I18NMessage("-TomcatSSLProtocol")
+ @I18NMessage(/* help url */"TomcatSSLProtocol")
String PROP_TOMCAT_SECURITY_SSL_PROTOCOL_HELP =
"propertyTomcatSslProtocolHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Agent
Communications Transport") })
String PROP_CONNECTOR_TRANSPORT = "propertyConnectorTransport";
- @I18NMessage("-IncomingAgentCommunicationsTransport")
+ @I18NMessage(/* help url */"IncomingAgentCommunicationsTransport")
String PROP_CONNECTOR_TRANSPORT_HELP = "propertyConnectorTransportHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Agent
Communications Bind Address") })
String PROP_CONNECTOR_BIND_ADDRESS = "propertyConnectorBindAddress";
- @I18NMessage("-IncomingAgentCommunicationsBindAddress")
+ @I18NMessage(/* help url */"IncomingAgentCommunicationsBindAddress")
String PROP_CONNECTOR_BIND_ADDRESS_HELP =
"propertyConnectorBindAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Agent
Communications Port") })
String PROP_CONNECTOR_BIND_PORT = "propertyConnectorBindPort";
- @I18NMessage("-IncomingAgentCommunicationsPort")
+ @I18NMessage(/* help url */"IncomingAgentCommunicationsPort")
String PROP_CONNECTOR_BIND_PORT_HELP = "propertyConnectorBindPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Agent
Communications Transport Parameters") })
String PROP_CONNECTOR_TRANSPORT_PARAMS =
"propertyConnectorTransportParams";
- @I18NMessage("-IncomingAgentCommunicationsTransportParameters")
+ @I18NMessage(/* help url
*/"IncomingAgentCommunicationsTransportParameters")
String PROP_CONNECTOR_TRANSPORT_PARAMS_HELP =
"propertyConnectorTransportParamsHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Agent Multicast
Detector Enabled") })
String PROP_AGENT_MULTICAST_DETECTOR_ENABLED =
"propertyAgentMulticastDetectorEnabled";
- @I18NMessage("-AgentMulticastDetectorEnabled")
+ @I18NMessage(/* help url */"AgentMulticastDetectorEnabled")
String PROP_AGENT_MULTICAST_DETECTOR_ENABLED_HELP =
"propertyAgentMulticastDetectorEnabledHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Agent Multicast
Detector Bind Address") })
String PROP_AGENT_MULTICAST_DETECTOR_BIND_ADDRESS =
"propertyAgentMulticastDetectorBindAddress";
- @I18NMessage("-AgentMulticastDetectorBindAddress")
+ @I18NMessage(/* help url */"AgentMulticastDetectorBindAddress")
String PROP_AGENT_MULTICAST_DETECTOR_BIND_ADDRESS_HELP =
"propertyAgentMulticastDetectorBindAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Agent Multicast
Detector Multicast Address") })
String PROP_AGENT_MULTICAST_DETECTOR_MULTICAST_ADDRESS =
"propertyAgentMulticastDetectorMulticastAddress";
- @I18NMessage("-AgentMulticastDetectorMulticastAddress")
+ @I18NMessage(/* help url */"AgentMulticastDetectorMulticastAddress")
String PROP_AGENT_MULTICAST_DETECTOR_MULTICAST_ADDRESS_HELP =
"propertyAgentMulticastDetectorMulticastAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Agent Multicast
Detector Port") })
String PROP_AGENT_MULTICAST_DETECTOR_PORT =
"propertyAgentMulticastDetectorPort";
- @I18NMessage("-AgentMulticastDetectorPort")
+ @I18NMessage(/* help url */"AgentMulticastDetectorPort")
String PROP_AGENT_MULTICAST_DETECTOR_PORT_HELP =
"propertyAgentMulticastDetectorPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Secure Socket Protocol") })
String PROP_SECURITY_SERVER_SECURE_SOCKET_PROTOCOL =
"propertySecurityServerSecureSocketProtocol";
- @I18NMessage("-IncomingSecureSocketProtocol")
+ @I18NMessage(/* help url */"IncomingSecureSocketProtocol")
String PROP_SECURITY_SERVER_SECURE_SOCKET_PROTOCOL_HELP =
"propertySecurityServerSecureSocketProtocolHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore File") })
String PROP_SECURITY_SERVER_KEYSTORE_FILE =
"propertySecurityServerKeystoreFile";
- @I18NMessage("-IncomingKeystoreFile")
+ @I18NMessage(/* help url */"IncomingKeystoreFile")
String PROP_SECURITY_SERVER_KEYSTORE_FILE_HELP =
"propertySecurityServerKeystoreFileHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore Algorithm") })
String PROP_SECURITY_SERVER_KEYSTORE_ALGORITHM =
"propertySecurityServerKeystoreAlgorithm";
- @I18NMessage("-IncomingKeystoreAlgorithm")
+ @I18NMessage(/* help url */"IncomingKeystoreAlgorithm")
String PROP_SECURITY_SERVER_KEYSTORE_ALGORITHM_HELP =
"propertySecurityServerKeystoreAlgorithmHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore Type") })
String PROP_SECURITY_SERVER_KEYSTORE_TYPE =
"propertySecurityServerKeystoreType";
- @I18NMessage("-IncomingKeystoreType")
+ @I18NMessage(/* help url */"IncomingKeystoreType")
String PROP_SECURITY_SERVER_KEYSTORE_TYPE_HELP =
"propertySecurityServerKeystoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore Password") })
String PROP_SECURITY_SERVER_KEYSTORE_PASSWORD =
"propertySecurityServerKeystorePassword";
- @I18NMessage("-IncomingKeystorePassword")
+ @I18NMessage(/* help url */"IncomingKeystorePassword")
String PROP_SECURITY_SERVER_KEYSTORE_PASSWORD_HELP =
"propertySecurityServerKeystorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore Key Password") })
String PROP_SECURITY_SERVER_KEYSTORE_KEY_PASSWORD =
"propertySecurityServerKeystoreKeyPassword";
- @I18NMessage("-IncomingKeystoreKeyPassword")
+ @I18NMessage(/* help url */"IncomingKeystoreKeyPassword")
String PROP_SECURITY_SERVER_KEYSTORE_KEY_PASSWORD_HELP =
"propertySecurityServerKeystoreKeyPasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Keystore Alias") })
String PROP_SECURITY_SERVER_KEYSTORE_ALIAS =
"propertySecurityServerKeystoreAlias";
- @I18NMessage("-IncomingKeystoreAlias")
+ @I18NMessage(/* help url */"IncomingKeystoreAlias")
String PROP_SECURITY_SERVER_KEYSTORE_ALIAS_HELP =
"propertySecurityServerKeystoreAliasHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Truststore File") })
String PROP_SECURITY_SERVER_TRUSTSTORE_FILE =
"propertySecurityServerTruststoreFile";
- @I18NMessage("-IncomingTruststoreFile")
+ @I18NMessage(/* help url */"IncomingTruststoreFile")
String PROP_SECURITY_SERVER_TRUSTSTORE_FILE_HELP =
"propertySecurityServerTruststoreFileHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Truststore Algorithm") })
String PROP_SECURITY_SERVER_TRUSTSTORE_ALGORITHM =
"propertySecurityServerTruststoreAlgorithm";
- @I18NMessage("-IncomingTruststoreAlgorithm")
+ @I18NMessage(/* help url */"IncomingTruststoreAlgorithm")
String PROP_SECURITY_SERVER_TRUSTSTORE_ALGORITHM_HELP =
"propertySecurityServerTruststoreAlgorithmHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Truststore Type") })
String PROP_SECURITY_SERVER_TRUSTSTORE_TYPE =
"propertySecurityServerTruststoreType";
- @I18NMessage("-IncomingTruststoreType")
+ @I18NMessage(/* help url */"IncomingTruststoreType")
String PROP_SECURITY_SERVER_TRUSTSTORE_TYPE_HELP =
"propertySecurityServerTruststoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Truststore Password") })
String PROP_SECURITY_SERVER_TRUSTSTORE_PASSWORD =
"propertySecurityServerTruststorePassword";
- @I18NMessage("-IncomingTruststorePassword")
+ @I18NMessage(/* help url */"IncomingTruststorePassword")
String PROP_SECURITY_SERVER_TRUSTSTORE_PASSWORD_HELP =
"propertySecurityServerTruststorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Incoming Security
- Client Authentication Mode") })
String PROP_SECURITY_SERVER_CLIENT_AUTH_MODE =
"propertySecurityServerClientAuthMode";
- @I18NMessage("-IncomingClientAuthenticationMode")
+ @I18NMessage(/* help url */"IncomingClientAuthenticationMode")
String PROP_SECURITY_SERVER_CLIENT_AUTH_MODE_HELP =
"propertySecurityServerClientAuthModeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Secure Socket Protocol") })
String PROP_SECURITY_CLIENT_SECURE_SOCKET_PROTOCOL =
"propertySecurityClientSecureSocketProtocol";
- @I18NMessage("-OutgoingSecureSocketProtocol")
+ @I18NMessage(/* help url */"OutgoingSecureSocketProtocol")
String PROP_SECURITY_CLIENT_SECURE_SOCKET_PROTOCOL_HELP =
"propertySecurityClientSecureSocketProtocolHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore File") })
String PROP_SECURITY_CLIENT_KEYSTORE_FILE =
"propertySecurityClientKeystoreFile";
- @I18NMessage("-OutgoingKeystoreFile")
+ @I18NMessage(/* help url */"OutgoingKeystoreFile")
String PROP_SECURITY_CLIENT_KEYSTORE_FILE_HELP =
"propertySecurityClientKeystoreFileHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore Algorithm") })
String PROP_SECURITY_CLIENT_KEYSTORE_ALGORITHM =
"propertySecurityClientKeystoreAlgorithm";
- @I18NMessage("-OutgoingKeystoreAlgorithm")
+ @I18NMessage(/* help url */"OutgoingKeystoreAlgorithm")
String PROP_SECURITY_CLIENT_KEYSTORE_ALGORITHM_HELP =
"propertySecurityClientKeystoreAlgorithmHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore Type") })
String PROP_SECURITY_CLIENT_KEYSTORE_TYPE =
"propertySecurityClientKeystoreType";
- @I18NMessage("-OutgoingKeystoreType")
+ @I18NMessage(/* help url */"OutgoingKeystoreType")
String PROP_SECURITY_CLIENT_KEYSTORE_TYPE_HELP =
"propertySecurityClientKeystoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore Password") })
String PROP_SECURITY_CLIENT_KEYSTORE_PASSWORD =
"propertySecurityClientKeystorePassword";
- @I18NMessage("-OutgoingKeystorePassword")
+ @I18NMessage(/* help url */"OutgoingKeystorePassword")
String PROP_SECURITY_CLIENT_KEYSTORE_PASSWORD_HELP =
"propertySecurityClientKeystorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore Key Password") })
String PROP_SECURITY_CLIENT_KEYSTORE_KEY_PASSWORD =
"propertySecurityClientKeystoreKeyPassword";
- @I18NMessage("-OutgoingKeystoreKeyPassword")
+ @I18NMessage(/* help url */"OutgoingKeystoreKeyPassword")
String PROP_SECURITY_CLIENT_KEYSTORE_KEY_PASSWORD_HELP =
"propertySecurityClientKeystoreKeyPasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Keystore Alias") })
String PROP_SECURITY_CLIENT_KEYSTORE_ALIAS =
"propertySecurityClientKeystoreAlias";
- @I18NMessage("-OutgoingKeystoreAlias")
+ @I18NMessage(/* help url */"OutgoingKeystoreAlias")
String PROP_SECURITY_CLIENT_KEYSTORE_ALIAS_HELP =
"propertySecurityClientKeystoreAliasHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Truststore File") })
String PROP_SECURITY_CLIENT_TRUSTSTORE_FILE =
"propertySecurityClientTruststoreFile";
- @I18NMessage("-OutgoingTruststoreFile")
+ @I18NMessage(/* help url */"OutgoingTruststoreFile")
String PROP_SECURITY_CLIENT_TRUSTSTORE_FILE_HELP =
"propertySecurityClientTruststoreFileHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Truststore Algorithm") })
String PROP_SECURITY_CLIENT_TRUSTSTORE_ALGORITHM =
"propertySecurityClientTruststoreAlgorithm";
- @I18NMessage("-OutgoingTruststoreAlgorithm")
+ @I18NMessage(/* help url */"OutgoingTruststoreAlgorithm")
String PROP_SECURITY_CLIENT_TRUSTSTORE_ALGORITHM_HELP =
"propertySecurityClientTruststoreAlgorithmHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Truststore Type") })
String PROP_SECURITY_CLIENT_TRUSTSTORE_TYPE =
"propertySecurityClientTruststoreType";
- @I18NMessage("-OutgoingTruststoreType")
+ @I18NMessage(/* help url */"OutgoingTruststoreType")
String PROP_SECURITY_CLIENT_TRUSTSTORE_TYPE_HELP =
"propertySecurityClientTruststoreTypeHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Truststore Password") })
String PROP_SECURITY_CLIENT_TRUSTSTORE_PASSWORD =
"propertySecurityClientTruststorePassword";
- @I18NMessage("-OutgoingTruststorePassword")
+ @I18NMessage(/* help url */"OutgoingTruststorePassword")
String PROP_SECURITY_CLIENT_TRUSTSTORE_PASSWORD_HELP =
"propertySecurityClientTruststorePasswordHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Outgoing Security
- Server Authentication Mode Enabled") })
String PROP_SECURITY_CLIENT_SERVER_AUTH_MODE_ENABLED =
"propertySecurityClientServerAuthModeEnabled";
- @I18NMessage("-OutgoingServerAuthenticationModeEnabled")
+ @I18NMessage(/* help url */"OutgoingServerAuthenticationModeEnabled")
String PROP_SECURITY_CLIENT_SERVER_AUTH_MODE_ENABLED_HELP =
"propertySecurityClientServerAuthModeEnabledHelp";
@I18NMessage(locale = "en", value = "Embedded Agent Enabled")
String PROP_EMBEDDED_RHQ_AGENT_ENABLED =
"propertyEmbeddedRHQAgentEnabled";
- @I18NMessage("-EmbeddedRHQAgentEnabled")
+ @I18NMessage(/* help url */"EmbeddedRHQAgentEnabled")
String PROP_EMBEDDED_RHQ_AGENT_ENABLED_HELP =
"propertyEmbeddedRHQAgentEnabledHelp";
@I18NMessage(locale = "en", value = "Embedded Agent Name")
String PROP_EMBEDDED_RHQ_AGENT_NAME = "propertyEmbeddedRHQAgentName";
- @I18NMessage("-EmbeddedRHQAgentName")
+ @I18NMessage(/* help url */"EmbeddedRHQAgentName")
String PROP_EMBEDDED_RHQ_AGENT_NAME_HELP =
"propertyEmbeddedRHQAgentNameHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Embedded Agent
Disable Native System") })
String PROP_EMBEDDED_RHQ_AGENT_DISABLE_NATIVE_SYSTEM =
"propertyEmbeddedRHQAgentDisableNativeSystem";
- @I18NMessage("-EmbeddedRHQAgentDisableNativeSystem")
+ @I18NMessage(/* help url */"EmbeddedRHQAgentDisableNativeSystem")
String PROP_EMBEDDED_RHQ_AGENT_DISABLE_NATIVE_SYSTEM_HELP =
"propertyEmbeddedRHQAgentDisableNativeSystemHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Embedded Agent
Reset Configuration") })
String PROP_EMBEDDED_RHQ_AGENT_RESET_CONFIGURATION =
"propertyEmbeddedRHQAgentResetConfiguration";
- @I18NMessage("-EmbeddedRHQAgentResetConfiguration")
+ @I18NMessage(/* help url */"EmbeddedRHQAgentResetConfiguration")
String PROP_EMBEDDED_RHQ_AGENT_RESET_CONFIGURATION_HELP =
"propertyEmbeddedRHQAgentResetConfigurationHelp";
@I18NMessage(locale = "en", value = "Email SMTP Hostname")
String PROP_EMAIL_SMTP_HOST = "propertyEmailSmtpHost";
- @I18NMessage("-EmailSMTPHostname")
+ @I18NMessage(/* help url */"EmailSMTPHostname")
String PROP_EMAIL_SMTP_HOST_HELP = "propertyEmailSmtpHostHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Email SMTP
Port") })
String PROP_EMAIL_SMTP_PORT = "propertyEmailSmtpPort";
- @I18NMessage("-EmailSMTPPort")
+ @I18NMessage(/* help url */"EmailSMTPPort")
String PROP_EMAIL_SMTP_PORT_HELP = "propertyEmailSmtpPortHelp";
@I18NMessage(locale = "en", value = "Email From Address")
String PROP_EMAIL_FROM_ADDRESS = "propertyEmailFromAddress";
- @I18NMessage("-EmailFromAddress")
+ @I18NMessage(/* help url */"EmailFromAddress")
String PROP_EMAIL_FROM_ADDRESS_HELP = "propertyEmailFromAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Operation
Invocation Default Timeout") })
String PROP_OPERATION_TIMEOUT = "propertyOperationTimeout";
- @I18NMessage("-OperationInvocationDefaultTimeout")
+ @I18NMessage(/* help url */"OperationInvocationDefaultTimeout")
String PROP_OPERATION_TIMEOUT_HELP = "propertyOperationTimeoutHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition Name") })
String PROP_CLUSTER_PARTITION_NAME = "propertyClusterPartitionName";
- @I18NMessage("-PartitionName")
+ @I18NMessage(/* help url */"PartitionName")
String PROP_CLUSTER_PARTITION_NAME_HELP =
"propertyClusterPartitionNameHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition Bind Address") })
String PROP_CLUSTER_PARTITION_BIND_ADDRESS =
"propertyClusterPartitionBindAddress";
- @I18NMessage("-PartitionBindAddress")
+ @I18NMessage(/* help url */"PartitionBindAddress")
String PROP_CLUSTER_PARTITION_BIND_ADDRESS_HELP =
"propertyClusterPartitionBindAddressHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition UDP Multicast Group IP Address") })
String PROP_CLUSTER_UDP_GROUP = "propertyClusterUdpGroup";
- @I18NMessage("-PartitionUDPMulticastGroupIPAddress")
+ @I18NMessage(/* help url */"PartitionUDPMulticastGroupIPAddress")
String PROP_CLUSTER_UDP_GROUP_HELP = "propertyClusterUdpGroupHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition UDP Multicast Port") })
String PROP_CLUSTER_HAPARTITION_PORT = "propertyClusterHaPartitionPort";
- @I18NMessage("-PartitionUDPMulticastPort")
+ @I18NMessage(/* help url */"PartitionUDPMulticastPort")
String PROP_CLUSTER_HAPARTITION_PORT_HELP =
"propertyClusterHaPartitionPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition UDP EJB3 Entity Cache Multicast Port") })
String PROP_CLUSTER_EJB3CACHE_PORT = "propertyClusterEjb3CachePort";
- @I18NMessage("-PartitionUDPEJB3EntityCacheMulticastPort")
+ @I18NMessage(/* help url */"PartitionUDPEJB3EntityCacheMulticastPort")
String PROP_CLUSTER_EJB3CACHE_PORT_HELP =
"propertyClusterEjb3CachePortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition UDP Alert Cache Multicast Port") })
String PROP_CLUSTER_ALERTCACHE_PORT = "propertyClusterAlertCachePort";
- @I18NMessage("-PartitionUDPAlertCacheMulticastPort")
+ @I18NMessage(/* help url */"PartitionUDPAlertCacheMulticastPort")
String PROP_CLUSTER_ALERTCACHE_PORT_HELP =
"propertyClusterAlertCachePortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster -
Partition UDP Loopback") })
String PROP_CLUSTER_UDP_LOOPBACK = "propertyClusterUdpLoopback";
- @I18NMessage("-PartitionUDPLoopback")
+ @I18NMessage(/* help url */"PartitionUDPLoopback")
String PROP_CLUSTER_UDP_LOOPBACK_HELP = "propertyClusterUdpLoopbackHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - HA JNDI
Port") })
String PROP_CLUSTER_HAJNDI_PORT = "propertyClusterHaJndiPort";
- @I18NMessage("-HAJNDIPort")
+ @I18NMessage(/* help url */"HAJNDIPort")
String PROP_CLUSTER_HAJNDI_PORT_HELP = "propertyClusterHaJndiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - HA JNDI
RMI Port") })
String PROP_CLUSTER_HAJNDI_RMIPORT = "propertyClusterHaJndiRmiPort";
- @I18NMessage("-HAJNDIRMIPort")
+ @I18NMessage(/* help url */"HAJNDIRMIPort")
String PROP_CLUSTER_HAJNDI_RMIPORT_HELP =
"propertyClusterHaJndiRmiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - HA JNDI
Auto Discovery Group Port") })
String PROP_CLUSTER_HAJNDI_AUTODISCOVERPORT =
"propertyClusterHaJndiAutoDiscoveryPort";
- @I18NMessage("-HAJNDIAutoDiscoveryGroupPort")
+ @I18NMessage(/* help url */"HAJNDIAutoDiscoveryGroupPort")
String PROP_CLUSTER_HAJNDI_AUTODISCOVERPORT_HELP =
"propertyClusterHaJndiAutoDiscoveryPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - HA JRMP
Invoker RMI Port") })
String PROP_CLUSTER_HAJRMPINVOKER_RMIPORT =
"propertyClusterHaJrmpInvokerRmiPort";
- @I18NMessage("-HAJRMPInvokerRMIPort")
+ @I18NMessage(/* help url */"HAJRMPInvokerRMIPort")
String PROP_CLUSTER_HAJRMPINVOKER_RMIPORT_HELP =
"propertyClusterHaJrmpInvokerRmiPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - HA
Pooled Invoker Port") })
String PROP_CLUSTER_HAPOOLEDINVOKER_PORT =
"propertyClusterHaPooledInvokerPort";
- @I18NMessage("-HAPooledInvokerPort")
+ @I18NMessage(/* help url */"HAPooledInvokerPort")
String PROP_CLUSTER_HAPOOLEDINVOKER_PORT_HELP =
"propertyClusterHaPooledInvokerPortHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Cluster - JGroups
UDP IP Time To Live") })
String PROP_CLUSTER_JGROUPS_UDP_IP_TTL = "propertyClusterJGroupsUdpIpTtl";
- @I18NMessage("-JGroupsUDPIPTimeToLive")
+ @I18NMessage(/* help url */"JGroupsUDPIPTimeToLive")
String PROP_CLUSTER_JGROUPS_UDP_IP_TTL_HELP =
"propertyClusterJGroupsUdpIpTtlHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Maximum Web Connections") })
String PROP_CONCURRENCY_LIMIT_WEBCONNS =
"propertyConcurrencyLimitWebConns";
- @I18NMessage("-WebConnections")
+ @I18NMessage(/* help url */"WebConnections")
String PROP_CONCURRENCY_LIMIT_WEBCONNS_HELP =
"propertyConcurrencyLimitWebConnsHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Global") })
String PROP_CONCURRENCY_LIMIT_GLOBAL = "propertyConcurrencyLimitGlobal";
- @I18NMessage("-GlobalConcurrencyLimit")
+ @I18NMessage(/* help url */"GlobalConcurrencyLimit")
String PROP_CONCURRENCY_LIMIT_GLOBAL_HELP =
"propertyConcurrencyLimitGlobalHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Inventory Reports") })
String PROP_CONCURRENCY_LIMIT_INV_REPORT =
"propertyConcurrencyLimitInventoryReport";
- @I18NMessage("-InventoryReport")
+ @I18NMessage(/* help url */"InventoryReport")
String PROP_CONCURRENCY_LIMIT_INV_REPORT_HELP =
"propertyConcurrencyLimitInventoryReportHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Availability Reports") })
String PROP_CONCURRENCY_LIMIT_AVAIL_REPORT =
"propertyConcurrencyLimitAvailabilityReport";
- @I18NMessage("-AvailabilityReport")
+ @I18NMessage(/* help url */"AvailabilityReport")
String PROP_CONCURRENCY_LIMIT_AVAIL_REPORT_HELP =
"propertyConcurrencyLimitAvailabilityReportHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Inventory Synchronizations") })
String PROP_CONCURRENCY_LIMIT_INV_SYNC =
"propertyConcurrencyLimitInventorySync";
- @I18NMessage("-InventorySynchronization")
+ @I18NMessage(/* help url */"InventorySynchronization")
String PROP_CONCURRENCY_LIMIT_INV_SYNC_HELP =
"propertyConcurrencyLimitInventorySyncHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Content Reports") })
String PROP_CONCURRENCY_LIMIT_CONTENT_REPORT =
"propertyConcurrencyLimitContentReport";
- @I18NMessage("-ContentReport")
+ @I18NMessage(/* help url */"ContentReport")
String PROP_CONCURRENCY_LIMIT_CONTENT_REPORT_HELP =
"propertyConcurrencyLimitContentReportHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Content Downloads") })
String PROP_CONCURRENCY_LIMIT_CONTENT_DOWNLOAD =
"propertyConcurrencyLimitContentDownload";
- @I18NMessage("-ContentDownload")
+ @I18NMessage(/* help url */"ContentDownload")
String PROP_CONCURRENCY_LIMIT_CONTENT_DOWNLOAD_HELP =
"propertyConcurrencyLimitContentDownloadHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Measurement Reports") })
String PROP_CONCURRENCY_LIMIT_MEAS_REPORT =
"propertyConcurrencyLimitMeasurementReport";
- @I18NMessage("-MeasurementReport")
+ @I18NMessage(/* help url */"MeasurementReport")
String PROP_CONCURRENCY_LIMIT_MEAS_REPORT_HELP =
"propertyConcurrencyLimitMeasurementReportHelp";
@I18NMessages({ @I18NMessage(locale = "en", value = "Concurrency Limit
- Measurement Schedule Requests") })
String PROP_CONCURRENCY_LIMIT_MEASSCHED_REQ =
"propertyConcurrencyLimitMeasurementScheduleRequest";
- @I18NMessage("-MeasurementScheduleRequest")
+ @I18NMessage(/* help url */"MeasurementScheduleRequest")
String PROP_CONCURRENCY_LIMIT_MEASSCHED_REQ_HELP =
"propertyConcurrencyLimitMeasurementScheduleRequestHelp";
// Help Documentation - links to the wiki
@@ -687,12 +687,12 @@ public interface InstallerI18NResourceKeys {
@I18NMessage(locale = "en", value = "Server Name")
String PROP_HIGH_AVAILABILITY_NAME = "propertyHighAvailabilityName";
- @I18NMessage("-ServerName")
+ @I18NMessage(/* help url */"ServerName")
String PROP_HIGH_AVAILABILITY_NAME_HELP =
"propertyHighAvailabilityNameHelp";
@I18NMessage(locale = "en", value = "Maintenance Mode At Start")
String PROP_MM_AT_START = "propertyMaintenanceModeAtStart";
- @I18NMessage("-MaintenanceModeAtStart")
+ @I18NMessage(/* help url */"MaintenanceModeAtStart")
String PROP_MM_AT_START_HELP = "propertyMaintenanceModeAtStartHelp";
@I18NMessage(locale = "en", value = "Server Public Address")
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
index f98e373..c3af5ba 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_pt.properties
@@ -45,7 +45,6 @@ startInstallingLink=Clique aqui para continuar a instala\u00E7\u00E3o.
backToSettingsLink=Retornar \u00E0 p\u00E1gina de configura\u00E7\u00E3o
showAdvancedSettings=Mostrar configura\u00E7\u00F5es avan\u00E7adas
propertyDatabaseType=Tipo de Banco de Dados
-propertyDatabaseTypeHelp=-TipoBancoDeDados
propertyDatabaseConnectionUrl=URL de conex\u00E3o do Banco de Dados
propertyDatabaseUserName=Usu\u00E1rio do Banco de Dados
propertyDatabasePassword=Senha do Banco de Dados
diff --git a/pom.xml b/pom.xml
index 3ae18ec..de04570 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,12 +47,12 @@
<product.shortName>RHQ</product.shortName>
<product.name>RHQ</product.name>
<product.fullName>RHQ</product.fullName>
- <
product.url>http://rhq-project.org/</product.url>
+ <
product.url>http://www.rhq-project.org/</product.url>
<product.urlDomain>rhq-project.org</product.urlDomain>
- <product.salesEmail>sales(a)rhq-project.org</product.salesEmail>
- <product.supportEmail>info(a)rhq-project.org</product.supportEmail>
+
<product.salesEmail>rhq-users(a)lists.fedorahosted.org</product.salesEmail>
+
<product.supportEmail>rhq-users(a)lists.fedorahosted.org</product.supportEmail>
<product.version>${project.version}</product.version>
-
<
product.helpDocRoot>http://support.rhq-project.org/display/RHQ/</pr...
+
<
product.helpDocRoot>http://www.rhq-project.org/display/JOPR2/</prod...
<product.buildPropertiesFile>target/build.properties</product.buildPropertiesFile>
<doUpdate>false</doUpdate>
commit 89bf8dfc9ead2f6cff8382617bfad018e58f7790
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed May 23 16:52:33 2012 -0400
[BZ 823624] refactor to no longer depend upon presence or components from mod_cluster
for various reasons.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index f630059..d586724 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -65,14 +65,6 @@
<version>${jboss.sasl.version}</version>
</dependency>
- <!-- Earlier AS4/5 modcluster components -->
- <dependency>
- <groupId>${rhq.groupId}</groupId>
- <artifactId>modcluster-plugin</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
-
<!-- === Test Deps === -->
<dependency>
@@ -128,11 +120,6 @@
<artifactId>jboss-sasl</artifactId>
</artifactItem>
- <artifactItem>
- <groupId>${rhq.groupId}</groupId>
- <artifactId>modcluster-plugin</artifactId>
- <version>${project.version}</version>
- </artifactItem>
</artifactItems>
<outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
</configuration>
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
index 5239e1a..836b6a7 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
@@ -6,7 +6,7 @@ import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.Result;
-import org.rhq.plugins.modcluster.model.ProxyInfo;
+import org.rhq.modules.plugins.jbossas7.modcluster.ProxyInfo;
/**
* Component class for ModCluster Webapp Context
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
index 02a7e68..eed0c3b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
@@ -30,7 +30,7 @@ import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.Result;
-import org.rhq.plugins.modcluster.model.ProxyInfo;
+import org.rhq.modules.plugins.jbossas7.modcluster.ProxyInfo;
/**
* Discovers mod_cluster contexts using the proxyInfo details from as7.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/modcluster/ProxyInfo.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/modcluster/ProxyInfo.java
new file mode 100644
index 0000000..3a57a1b
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/modcluster/ProxyInfo.java
@@ -0,0 +1,349 @@
+package org.rhq.modules.plugins.jbossas7.modcluster;
+
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**This is a clone of org.rhq.plugins.modcluster.model.ProxyInfo from
modules/plugins/mod-cluster/... pulled
+ * into this plugin to avoid complicated build/install/deploy/runtime dependency issues
+ * between the two plugins.
+ *
+ * Simple parser for the raw proxy information provided by mod_cluster.
+ *
+ * @author Simeon Pinder
+ */
+public class ProxyInfo {
+
+ private Map<String, Node> availableNodes = new HashMap<String, Node>();
+ private Map<String, Vhost> availableVhosts = new HashMap<String,
Vhost>();
+ private List<Context> availableContexts = new
ArrayList<ProxyInfo.Context>();
+
+ public ProxyInfo(String rawProxyInfo) {
+ parseNodes(rawProxyInfo);
+ parseVhosts(rawProxyInfo);
+ parseContexts(rawProxyInfo);
+ }
+
+ private void parseNodes(String rawProxyInfo) {
+ Pattern nodePattern = Pattern.compile("Node:.*\n");
+ Matcher nodeMatcher = nodePattern.matcher(rawProxyInfo);
+ while (nodeMatcher.find()) {
+ String rawNode = nodeMatcher.group();
+ String[] nodePieces = rawNode.split(",");
+
+ String identifier = nodePieces[0];
+ identifier = identifier.substring(identifier.indexOf("[") + 1,
identifier.indexOf("]"));
+
+ String jvmRoute = nodePieces[1];
+ jvmRoute = jvmRoute.substring(jvmRoute.indexOf(':') + 1).trim();
+
+ availableNodes.put(identifier, new Node(jvmRoute, identifier));
+ }
+ }
+
+ private void parseVhosts(String rawProxyInfo) {
+ Pattern vhostPattern = Pattern.compile("Vhost:.*\n");
+ Matcher vhostMatcher = vhostPattern.matcher(rawProxyInfo);
+ while (vhostMatcher.find()) {
+ String rawVhost = vhostMatcher.group();
+ String[] vhostPieces = rawVhost.split(",");
+
+ String identifier = vhostPieces[0].trim();
+ identifier = identifier.substring(identifier.indexOf("[") + 1,
identifier.indexOf("]"));
+ identifier = identifier.substring(0, identifier.lastIndexOf(":"));
+
+ String host = vhostPieces[1].trim();
+ host = host.substring(host.indexOf(":") + 1).trim();
+
+ availableVhosts.put(identifier, new Vhost(identifier, host));
+ }
+ }
+
+ private void parseContexts(String rawProxyInfo) {
+ Pattern contextPattern = Pattern.compile("Context:.*[\n|}]");
+ Matcher contextMatcher = contextPattern.matcher(rawProxyInfo);
+ while (contextMatcher.find()) {
+ String rawContext = contextMatcher.group();
+ String[] contextPieces = rawContext.split(",");
+ String actualContext =
contextPieces[1].substring(contextPieces[1].indexOf("/")).trim();
+
+ String identifier = contextPieces[0];
+ identifier = identifier.substring(identifier.indexOf("[") + 1,
identifier.indexOf("]"));
+ identifier = identifier.substring(0, identifier.lastIndexOf(":"));
+
+ String nodeIdentifier = contextPieces[0];
+ nodeIdentifier =
nodeIdentifier.substring(nodeIdentifier.indexOf("[") + 1,
nodeIdentifier.indexOf("]"));
+ nodeIdentifier = nodeIdentifier.substring(0,
nodeIdentifier.indexOf(":"));
+ String jvmRoute = availableNodes.get(nodeIdentifier).getJvmRoute();
+
+ String rawIsEnabled = contextPieces[2];
+ rawIsEnabled = rawIsEnabled.substring(rawIsEnabled.indexOf(':') +
1).trim();
+ boolean isEnabled = rawIsEnabled.equals("ENABLED") ? true : false;
+
+ Vhost relatedVhost = availableVhosts.get(identifier);
+
+ availableContexts.add(new Context(jvmRoute, relatedVhost.getHost(),
actualContext, isEnabled));
+ }
+ }
+
+ public List<Context> getAvailableContexts() {
+ return Collections.unmodifiableList(availableContexts);
+ }
+
+ public List<Vhost> getAvailableVhosts() {
+ return Collections.unmodifiableList(new
ArrayList<Vhost>(availableVhosts.values()));
+ }
+
+ public List<Node> getAvailableNodes() {
+ return Collections.unmodifiableList(new
ArrayList<Node>(availableNodes.values()));
+ }
+
+ public static class Node {
+ private String jvmRoute;
+ private String nodeId;
+
+ public Node(String jvmRoute, String nodeId) {
+ this.jvmRoute = jvmRoute;
+ this.nodeId = nodeId;
+ }
+
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ public String getJvmRoute() {
+ return jvmRoute;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((jvmRoute == null) ? 0 : jvmRoute.hashCode());
+ result = prime * result + ((nodeId == null) ? 0 : nodeId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Node other = (Node) obj;
+ if (jvmRoute == null) {
+ if (other.jvmRoute != null)
+ return false;
+ } else if (!jvmRoute.equals(other.jvmRoute))
+ return false;
+ if (nodeId == null) {
+ if (other.nodeId != null)
+ return false;
+ } else if (!nodeId.equals(other.nodeId))
+ return false;
+ return true;
+ }
+ }
+
+ public static class Vhost {
+ private String identifier;
+ private String host;
+
+ public Vhost(String identifier, String host) {
+ this.identifier = identifier;
+ this.host = host;
+ }
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((host == null) ? 0 : host.hashCode());
+ result = prime * result + ((identifier == null) ? 0 :
identifier.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Vhost other = (Vhost) obj;
+ if (host == null) {
+ if (other.host != null)
+ return false;
+ } else if (!host.equals(other.host))
+ return false;
+ if (identifier == null) {
+ if (other.identifier != null)
+ return false;
+ } else if (!identifier.equals(other.identifier))
+ return false;
+ return true;
+ }
+ }
+
+ public static class Context {
+ private String path;
+ private String host;
+ private String jvmRoute;
+ private boolean isEnabled;
+
+ public Context(String jvmRoute, String host, String path) {
+ this(jvmRoute, host, path, false);
+ }
+
+ public Context(String jvmRoute, String host, String path, boolean isEnabled) {
+ this.jvmRoute = jvmRoute;
+ this.host = host;
+ this.path = path;
+ this.isEnabled = isEnabled;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public String getJvmRoute() {
+ return jvmRoute;
+ }
+
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+
+ public String createKey() {
+ return jvmRoute + ":" + host + ":" + path;
+ }
+
+ public String createName() {
+ return host + ":" + path;
+ }
+
+ @Override
+ public String toString() {
+ return createKey();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((host == null) ? 0 : host.hashCode());
+ result = prime * result + ((jvmRoute == null) ? 0 : jvmRoute.hashCode());
+ result = prime * result + ((path == null) ? 0 : path.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Context other = (Context) obj;
+ if (host == null) {
+ if (other.host != null)
+ return false;
+ } else if (!host.equals(other.host))
+ return false;
+ if (jvmRoute == null) {
+ if (other.jvmRoute != null)
+ return false;
+ } else if (!jvmRoute.equals(other.jvmRoute))
+ return false;
+ if (path == null) {
+ if (other.path != null)
+ return false;
+ } else if (!path.equals(other.path))
+ return false;
+ return true;
+ }
+
+ public static Context fromString(String stringRepresentation) throws Exception {
+ String parts[] = stringRepresentation.trim().split(":");
+ if (parts.length < 3) {
+ throw new Exception("Parsing error. Not enough information to create
a context.");
+ }
+
+ return new Context(parts[0], parts[1], parts[2]);
+ }
+ }
+
+ public static void main(String[] args) {
+ String as7ProxyInfo = "";
+ as7ProxyInfo += "Node: [1],Name:
asterixA-0502-3305-8ff3-fad7fee8b516,Balancer: mycluster,LBGroup: ,Host: 192.168.1.9,Port:
8009,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 26,Ttl: 60,Elected: 0,Read:
0,Transfered: 0,Connected: 0,Load: 100\n";
+ as7ProxyInfo += "Node: [2],Name:
00fa6bff-83a2-3bde-9e76-998b1a4a8c2c,Balancer: mycluster,LBGroup: ,Host: 192.168.1.3,Port:
8009,Type: ajp,Flushpackets: Off,Flushwait: 10,Ping: 10,Smax: 26,Ttl: 60,Elected: 0,Read:
0,Transfered: 0,Connected: 0,Load: 98\n";
+ as7ProxyInfo += "Vhost: [1:1:1], Alias: example.com\n";
+ as7ProxyInfo += "Vhost: [1:1:2], Alias: localhost\n";
+ as7ProxyInfo += "Vhost: [1:1:3], Alias: default-host\n";
+ as7ProxyInfo += "Vhost: [2:1:4], Alias: default-host\n";
+ as7ProxyInfo += "Vhost: [2:1:5], Alias: 192.168.1.3\n";
+ as7ProxyInfo += "Vhost: [2:1:6], Alias: example1.com\n";
+ as7ProxyInfo += "Context: [1:1:1], Context: /helloworld, Status:
ENABLED\n";
+ as7ProxyInfo += "Context: [2:1:2], Context: /helloworld, Status:
ENABLED\n";
+
+ //test out proxyInfo
+ ProxyInfo pi = new ProxyInfo(as7ProxyInfo);
+ //list nodes
+ for (Node n : pi.getAvailableNodes()) {
+ System.out.println("Node jvmRoute:" + n.getJvmRoute() + "
nodeId:" + n.getNodeId());
+ }
+ System.out.println("");
+ //list VHosts
+ for (Vhost v : pi.getAvailableVhosts()) {
+ System.out.println("VHost host:" + v.getHost() + "
identifier:" + v.getIdentifier());
+ }
+ System.out.println("");
+
+ //list Contexts
+ for (Context c : pi.getAvailableContexts()) {
+ System.out.println("VHost host:" + c.getHost() + "
jvmRoute:" + c.getJvmRoute() + " path:" + c.getPath());
+ System.out.println("\t createKey:" + c.createKey() + "
createName:" + c.createName());
+ }
+ System.out.println("");
+
+ }
+}
commit f05397758cd437e80ea81303a7004406709a6e47
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed May 23 13:15:44 2012 -0400
[BZ 823860] the korean and chinese i18n props file had the help url props
in them. No need to do this since these aren't really strings that need
translation and if we ever change these url fragments (which we need to
in this bz), we need to not only change the java code that produces the
default message .props but we would then have to remember to change these
files. Taking these out won't break anything since those languages will
not have these props in their own .props file thus will fallback to the
default messages props file which WILL have them (they are autogenerated
by the java code)
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
index ecf95e8..f206aef 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_ko.properties
@@ -57,183 +57,94 @@ startInstallingLink=\uc124\uce58\ub97c \uacc4\uc18d\ud558\ub824\uba74
\uc5ec\uae
backToSettingsLink=\uad6c\uc131 \ud398\uc774\uc9c0\ub85c \ub3cc\uc544\uac00\uae30
showAdvancedSettings=\uace0\uae09 \uc124\uc815 \ubcf4\uae30
propertyDatabaseType=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud0c0\uc785
-propertyDatabaseTypeHelp=-DatabaseType
propertyDatabaseConnectionUrl=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0 URL
-propertyDatabaseConnectionUrlHelp=-DatabaseConnectionURL
propertyDatabaseDriverClass=\ub370\uc774\ud130\ubca0\uc774\uc2a4 JDBC
\ub4dc\ub77c\uc774\ubc84 \ud074\ub798\uc2a4
-propertyDatabaseDriverClassHelp=-DatabaseJDBCDriverClass
propertyDatabaseXADataSourceClass=\ub370\uc774\ud130\ubca0\uc774\uc2a4 XA
\ub370\uc774\ud130\uc18c\uc2a4 \ud074\ub798\uc2a4
-propertyDatabaseXADataSourceClassHelp=-DatabaseXADataSourceClass
propertyDatabaseUserName=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc0ac\uc6a9\uc790
\uc774\ub984
-propertyDatabaseUserNameHelp=-DatabaseUserName
propertyDatabasePassword=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ube44\ubc00\ubc88\ud638
-propertyDatabasePasswordHelp=-DatabasePassword
propertyBindAddress=\uc11c\ubc84 \ubc14\uc778\ub4dc \uc8fc\uc18c
-propertyBindAddressHelp=-ServerBindAddress
propertyHttpPort=HTTP \ud3ec\ud2b8
-propertyHttpPortHelp=-HTTPPort
propertyHttpsPort=\ubcf4\uc548 HTTPS \ud3ec\ud2b8
-propertyHttpsPortHelp=-SecureHTTPSPort
propertyWebServicePort=\uc6f9 \uc11c\ube44\uc2a4 \ud3ec\ud2b8
-propertyWebServicePortHelp=-WebServicePort
propertyNamingServicePort=\ub124\uc774\ubc0d \uc11c\ube44\uc2a4 \ud3ec\ud2b8
-propertyNamingServicePortHelp=-NamingServicePort
propertyNamingServiceRmiPort=\ub124\uc774\ubc0d \uc11c\ube44\uc2a4 RMI \ud3ec\ud2b8
-propertyNamingServiceRmiPortHelp=-NamingServiceRMIPort
propertyJrmpInvokerRmiPort=JRMP \ud638\ucd9c\uc790 RMI \ud3ec\ud2b8
-propertyJrmpInvokerRmiPortHelp=-JRMPInvokerRMIPort
propertyPooledInvokerRmiPort=\ud480\ub9c1 \ud638\ucd9c\uc790 RMI \ud3ec\ud2b8
-propertyPooledInvokerRmiPortHelp=-PooledInvokerRMIPort
propertyAjpPort=AJP \ud3ec\ud2b8
-propertyAjpPortHelp=-AJPPort
propertyUnifiedInvokerPort=\ud1b5\ud569 \ud638\ucd9c\uc790 \ud3ec\ud2b8
-propertyUnifiedInvokerPortHelp=-UnifiedInvokerPort
propertyAspectDeployerPort=Aspect \ubc30\ud3ec\uc790 \ud3ec\ud2b8
-propertyAspectDeployerPortHelp=-AspectDeployerPort
propertyTomcatClientAuthMode=\ud1b0\ucf13 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d
\ubaa8\ub4dc
-propertyTomcatClientAuthModeHelp=-TomcatClientAuthMode
propertyTomcatAlgorithm=\ud1b0\ucf13 Keystore/Truststore \uc54c\uace0\ub9ac\uc998
-propertyTomcatAlgorithmHelp=-TomcatAlgorithm
propertyTomcatKeystoreFilename=\ud1b0\ucf13 Keystore
-propertyTomcatKeystoreFilenameHelp=-TomcatKeystore
propertyTomcatKeystorePassword=\ud1b0\ucf13 Keystore \ube44\ubc00\ubc88\ud638
-propertyTomcatKeystorePasswordHelp=-TomcatKeystorePassword
propertyTomcatKeystoreType=\ud1b0\ucf13 Keystore \ud0c0\uc785
-propertyTomcatKeystoreTypeHelp=-TomcatKeystoreType
propertyTomcatKeystoreAlias=\ud1b0\ucf13 Keystore \ubcc4\uce6d
-propertyTomcatKeystoreAliasHelp=-TomcatKeystoreAlias
propertyTomcatTruststoreFilename=\ud1b0\ucf13 Truststore
-propertyTomcatTruststoreFilenameHelp=-TomcatTruststore
propertyTomcatTruststorePassword=\ud1b0\ucf13 Truststore \ube44\ubc00\ubc88\ud638
-propertyTomcatTruststorePasswordHelp=-TomcatTruststorePassword
propertyTomcatTruststoreType=\ud1b0\ucf13 Truststore \ud0c0\uc785
-propertyTomcatTruststoreTypeHelp=-TomcatTruststoreType
propertyTomcatSslProtocol=\ud1b0\ucf13 SSL \ud504\ub85c\ud1a0\ucf5c
-propertyTomcatSslProtocolHelp=-TomcatSSLProtocol
propertyConnectorTransport=\uc218\uc2e0 \uc5d0\uc774\uc804\ud2b8 \ud1b5\uc2e0
\uc804\uc1a1
-propertyConnectorTransportHelp=-IncomingAgentCommunicationsTransport
propertyConnectorBindAddress=\uc218\uc2e0 \uc5d0\uc774\uc804\ud2b8 \ud1b5\uc2e0
\ubc14\uc778\ub4dc \uc8fc\uc18c
-propertyConnectorBindAddressHelp=-IncomingAgentCommunicationsBindAddress
propertyConnectorBindPort=\uc218\uc2e0 \uc5d0\uc774\uc804\ud2b8 \ud1b5\uc2e0
\ud3ec\ud2b8
-propertyConnectorBindPortHelp=-IncomingAgentCommunicationsPort
propertyConnectorTransportParams=\uc218\uc2e0 \uc5d0\uc774\uc804\ud2b8 \ud1b5\uc2e0
\uc804\uc1a1 \ud30c\ub77c\ubbf8\ud130
-propertyConnectorTransportParamsHelp=-IncomingAgentCommunicationsTransportParameters
propertyAgentMulticastDetectorEnabled=\uc5d0\uc774\uc804\ud2b8
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud0d0\uc9c0 \ud65c\uc131\ud654
-propertyAgentMulticastDetectorEnabledHelp=-AgentMulticastDetectorEnabled
propertyAgentMulticastDetectorBindAddress=\uc5d0\uc774\uc804\ud2b8
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud0d0\uc9c0 \ubc14\uc778\ub4dc \uc8fc\uc18c
-propertyAgentMulticastDetectorBindAddressHelp=-AgentMulticastDetectorBindAddress
propertyAgentMulticastDetectorMulticastAddress=\uc5d0\uc774\uc804\ud2b8
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud0d0\uc9c0 \uba40\ud2f0\uce90\uc2a4\ud2b8 \uc8fc\uc18c
-propertyAgentMulticastDetectorMulticastAddressHelp=-AgentMulticastDetectorMulticastAddress
propertyAgentMulticastDetectorPort=\uc5d0\uc774\uc804\ud2b8
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud0d0\uc9c0 \ud3ec\ud2b8
-propertyAgentMulticastDetectorPortHelp=-AgentMulticastDetectorPort
propertySecurityServerSecureSocketProtocol=\uc218\uc2e0 \ubcf4\uc548 - \ubcf4\uc548
\uc18c\ucf13 \ud504\ub85c\ud1a0\ucf5c
-propertySecurityServerSecureSocketProtocolHelp=-IncomingSecureSocketProtocol
propertySecurityServerKeystoreFile=\uc218\uc2e0 \ubcf4\uc548 - Keystore \ud30c\uc77c
-propertySecurityServerKeystoreFileHelp=-IncomingKeystoreFile
propertySecurityServerKeystoreAlgorithm=\uc218\uc2e0 \ubcf4\uc548 - Keystore
\uc54c\uace0\ub9ac\uc998
-propertySecurityServerKeystoreAlgorithmHelp=-IncomingKeystoreAlgorithm
propertySecurityServerKeystoreType=\uc218\uc2e0 \ubcf4\uc548 - Keystore \ud0c0\uc785
-propertySecurityServerKeystoreTypeHelp=-IncomingKeystoreType
propertySecurityServerKeystorePassword=\uc218\uc2e0 \ubcf4\uc548 - Keystore
\ube44\ubc00\ubc88\ud638
-propertySecurityServerKeystorePasswordHelp=-IncomingKeystorePassword
propertySecurityServerKeystoreKeyPassword=\uc218\uc2e0 \ubcf4\uc548 - Keystore \ud0a4
\ud328\uc2a4\uc6cc\ub4dc
-propertySecurityServerKeystoreKeyPasswordHelp=-IncomingKeystoreKeyPassword
propertySecurityServerKeystoreAlias=\uc218\uc2e0 \ubcf4\uc548 - Keystore \ubcc4\uce6d
-propertySecurityServerKeystoreAliasHelp=-IncomingKeystoreAlias
propertySecurityServerTruststoreFile=\uc218\uc2e0 \ubcf4\uc548 - Truststore \ud30c\uc77c
-propertySecurityServerTruststoreFileHelp=-IncomingTruststoreFile
propertySecurityServerTruststoreAlgorithm=\uc218\uc2e0 \ubcf4\uc548 - Truststore
\uc54c\uace0\ub9ac\uc998
-propertySecurityServerTruststoreAlgorithmHelp=-IncomingTruststoreAlgorithm
propertySecurityServerTruststoreType=\uc218\uc2e0 \ubcf4\uc548 - Truststore \ud0c0\uc785
-propertySecurityServerTruststoreTypeHelp=-IncomingTruststoreType
propertySecurityServerTruststorePassword=\uc218\uc2e0 \ubcf4\uc548 - Truststore
\ud328\uc2a4\uc6cc\ub4dc
-propertySecurityServerTruststorePasswordHelp=-IncomingTruststorePassword
propertySecurityServerClientAuthMode=\uc218\uc2e0 \ubcf4\uc548 -
\ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d \ubaa8\ub4dc
-propertySecurityServerClientAuthModeHelp=-IncomingClientAuthenticationMode
propertySecurityClientSecureSocketProtocol=\ubc1c\uc2e0 \ubcf4\uc548 - \ubcf4\uc548
\uc18c\ucf13 \ud504\ub85c\ud1a0\ucf5c
-propertySecurityClientSecureSocketProtocolHelp=-OutgoingSecureSocketProtocol
propertySecurityClientKeystoreFile=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore \ud30c\uc77c
-propertySecurityClientKeystoreFileHelp=-OutgoingKeystoreFile
propertySecurityClientKeystoreAlgorithm=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore
\uc54c\uace0\ub9ac\uc998
-propertySecurityClientKeystoreAlgorithmHelp=-OutgoingKeystoreAlgorithm
propertySecurityClientKeystoreType=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore \ud0c0\uc785
-propertySecurityClientKeystoreTypeHelp=-OutgoingKeystoreType
propertySecurityClientKeystorePassword=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore
\ube44\ubc00\ubc88\ud638
-propertySecurityClientKeystorePasswordHelp=-OutgoingKeystorePassword
propertySecurityClientKeystoreKeyPassword=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore \ud0a4
\ube44\ubc00\ubc88\ud638
-propertySecurityClientKeystoreKeyPasswordHelp=-OutgoingKeystoreKeyPassword
propertySecurityClientKeystoreAlias=\ubc1c\uc2e0 \ubcf4\uc548 - Keystore \ubcc4\uce6d
-propertySecurityClientKeystoreAliasHelp=-OutgoingKeystoreAlias
propertySecurityClientTruststoreFile=\ubc1c\uc2e0 \ubcf4\uc548 - Truststore \ud30c\uc77c
-propertySecurityClientTruststoreFileHelp=-OutgoingTruststoreFile
propertySecurityClientTruststoreAlgorithm=\ubc1c\uc2e0 \ubcf4\uc548 - Truststore
\uc54c\uace0\ub9ac\uc998
-propertySecurityClientTruststoreAlgorithmHelp=-OutgoingTruststoreAlgorithm
propertySecurityClientTruststoreType=\ubc1c\uc2e0 \ubcf4\uc548 - Truststore \ud0c0\uc785
-propertySecurityClientTruststoreTypeHelp=-OutgoingTruststoreType
propertySecurityClientTruststorePassword=\ubc1c\uc2e0 \ubcf4\uc548 - Truststore
\ube44\ubc00\ubc88\ud638
-propertySecurityClientTruststorePasswordHelp=-OutgoingTruststorePassword
propertySecurityClientServerAuthModeEnabled=\ubc1c\uc2e0 \ubcf4\uc548 - \uc11c\ubc84
\uc778\uc99d \ubaa8\ub4dc \ud65c\uc131\ud654
-propertySecurityClientServerAuthModeEnabledHelp=-OutgoingServerAuthenticationModeEnabled
propertyEmbeddedRHQAgentEnabled=\uc784\ubca0\ub514\ub4dc \uc5d0\uc774\uc804\ud2b8
\ud65c\uc131\ud654
-propertyEmbeddedRHQAgentEnabledHelp=-EmbeddedRHQAgentEnabled
propertyEmbeddedRHQAgentName=\uc784\ubca0\ub514\ub4dc \uc5d0\uc774\uc804\ud2b8
\uc774\ub984
-propertyEmbeddedRHQAgentNameHelp=-EmbeddedRHQAgentName
propertyEmbeddedRHQAgentDisableNativeSystem=\uc784\ubca0\ub514\ub4dc
\uc5d0\uc774\uc804\ud2b8 \ubd88\uac00 \ub124\uc774\ud2f0\ube0c \uc2dc\uc2a4\ud15c
-propertyEmbeddedRHQAgentDisableNativeSystemHelp=-EmbeddedRHQAgentDisableNativeSystem
propertyEmbeddedRHQAgentResetConfiguration=\uc784\ubca0\ub514\ub4dc
\uc5d0\uc774\uc804\ud2b8 \ucd08\uae30\ud654 \uad6c\uc131
-propertyEmbeddedRHQAgentResetConfigurationHelp=-EmbeddedRHQAgentResetConfiguration
propertyEmailSmtpHost=\uc774\uba54\uc77c SMTP \ud638\uc2a4\ud2b8\uba85
-propertyEmailSmtpHostHelp=-EmailSMTPHostname
propertyEmailSmtpPort=\uc774\uba54\uc77c SMTP \ud3ec\ud2b8
-propertyEmailSmtpPortHelp=-EmailSMTPPort
propertyEmailFromAddress=\uc774\uba54\uc77c \ubcf4\ub0b4\ub294 \uc8fc\uc18c
-propertyEmailFromAddressHelp=-EmailFromAddress
propertyOperationTimeout=\uc791\uc5c5\uc218\ud589 \ud638\ucd9c \uae30\ubcf8
\ud0c0\uc784\uc544\uc6c3
-propertyOperationTimeoutHelp=-OperationInvocationDefaultTimeout
propertyClusterPartitionName=\ud074\ub7ec\uc2a4\ud130 - \ud30c\ud2f0\uc158 \uc774\ub984
-propertyClusterPartitionNameHelp=-PartitionName
propertyClusterPartitionBindAddress=\ud074\ub7ec\uc2a4\ud130 - \ud30c\ud2f0\uc158
\ubc14\uc778\ub4dc \uc8fc\uc18c
-propertyClusterPartitionBindAddressHelp=-PartitionBindAddress
propertyClusterUdpGroup=\ud074\ub7ec\uc2a4\ud130 - \ud30c\ud2f0\uc158 UDP
\uba40\ud2f0\uce90\uc2a4\ud2b8 \uadf8\ub8f9 \uc544\uc774\ud53c \uc8fc\uc18c
-propertyClusterUdpGroupHelp=-PartitionUDPMulticastGroupIPAddress
propertyClusterHaPartitionPort=\ud074\ub7ec\uc2a4\ud130 - \ud30c\ud2f0\uc158 UDP
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud3ec\ud2b8
-propertyClusterHaPartitionPortHelp=-PartitionUDPMulticastPort
propertyClusterEjb3CachePort=Cluster - \ud30c\ud2f0\uc158 UDP EJB3 \uc5d4\ud2f0\ud2f0
\uce90\uc2dc \uba40\ud2f0\uce90\uc2a4\ud2b8 \ud3ec\ud2b8
-propertyClusterEjb3CachePortHelp=-PartitionUDPEJB3EntityCacheMulticastPort
propertyClusterAlertCachePort=Cluster - \ud30c\ud2f0\uc158 UDP \uc54c\ub9bc \uce90\uc2dc
\uba40\ud2f0\uce90\uc2a4\ud2b8 \ud3ec\ud2b8
-propertyClusterAlertCachePortHelp=-PartitionUDPAlertCacheMulticastPort
propertyClusterUdpLoopback=Cluster - \ud30c\ud2f0\uc158 UDP \ub8e8\ud504\ubc31
-propertyClusterUdpLoopbackHelp=-PartitionUDPLoopback
propertyClusterHaJndiPort=Cluster - HA JNDI \ud3ec\ud2b8
-propertyClusterHaJndiPortHelp=-HAJNDIPort
propertyClusterHaJndiRmiPort=Cluster - HA JNDI RMI \ud3ec\ud2b8
-propertyClusterHaJndiRmiPortHelp=-HAJNDIRMIPort
propertyClusterHaJndiAutoDiscoveryPort=Cluster - HA JNDI \uc790\ub3d9 \ud0d0\uc0c9
\uadf8\ub8f9 \ud3ec\ud2b8
-propertyClusterHaJndiAutoDiscoveryPortHelp=-HAJNDIAutoDiscoveryGroupPort
propertyClusterHaJrmpInvokerRmiPort=Cluster - HA JRMP \ud638\ucd9c\uc790 RMI
\ud3ec\ud2b8
-propertyClusterHaJrmpInvokerRmiPortHelp=-HAJRMPInvokerRMIPort
propertyClusterHaPooledInvokerPort=Cluster - HA \ud480\ub9c1 \ud638\ucd9c\uc790
\ud3ec\ud2b8
-propertyClusterHaPooledInvokerPortHelp=-HAPooledInvokerPort
propertyClusterJGroupsUdpIpTtl=Cluster - JGroups UDP \uc544\uc774\ud53c Time To Live
-propertyClusterJGroupsUdpIpTtlHelp=-JGroupsUDPIPTimeToLive
propertyConcurrencyLimitWebConns=\ub3d9\uc2dc\uc131 \uc81c\ud55c - \ucd5c\ub300 \uc6f9
\uc5f0\uacb0
-propertyConcurrencyLimitWebConnsHelp=-WebConnections
propertyConcurrencyLimitGlobal=\ub3d9\uc2dc\uc131 \uc81c\ud55c - \uae00\ub85c\ubc8c
-propertyConcurrencyLimitGlobalHelp=-GlobalConcurrencyLimit
propertyConcurrencyLimitInventoryReport=\ub3d9\uc2dc\uc131 \uc81c\ud55c - \ubaa9\ub85d
\ubcf4\uace0\uc11c
-propertyConcurrencyLimitInventoryReportHelp=-InventoryReport
propertyConcurrencyLimitAvailabilityReport=\ub3d9\uc2dc\uc131 \uc81c\ud55c -
\uac00\uc6a9\uc131 \ubcf4\uace0\uc11c
-propertyConcurrencyLimitAvailabilityReportHelp=-AvailabilityReport
propertyConcurrencyLimitInventorySync=\ub3d9\uc2dc\uc131 \uc81c\ud55c - \ubaa9\ub85d
\ub3d9\uae30\ud654
-propertyConcurrencyLimitInventorySyncHelp=-InventorySynchronization
propertyConcurrencyLimitContentReport=\ub3d9\uc2dc\uc131 \uc81c\ud55c -
\ucf58\ud150\uce20 \ubcf4\uace0\uc11c
-propertyConcurrencyLimitContentReportHelp=-ContentReport
propertyConcurrencyLimitContentDownload=\ub3d9\uc2dc\uc131 \uc81c\ud55c -
\ucf58\ud150\uce20 \ub2e4\uc6b4\ub85c\ub4dc
-propertyConcurrencyLimitContentDownloadHelp=-ContentDownload
propertyConcurrencyLimitMeasurementReport=\ub3d9\uc2dc\uc131 \uc81c\ud55c - \uce21\uc815
\ubcf4\uace0\uc11c
-propertyConcurrencyLimitMeasurementReportHelp=-MeasurementReport
propertyConcurrencyLimitMeasurementScheduleRequest=\ub3d9\uc2dc\uc131 \uc81c\ud55c -
\uce21\uc815 \uc2a4\ucf00\uc974 \uc694\uccad
-propertyConcurrencyLimitMeasurementScheduleRequestHelp=-MeasurementScheduleRequest
introduceHelpDocs=RHQ\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740
\uc544\ub798 \ub9c1\ud06c\ub41c \ubb38\uc11c\ub97c \ucc38\uace0\ud558\uc2ed\uc2dc\uc624:
helpDocRHQServerInstallGuide=\uc124\uce58
helpDocRHQServerInstallGuideLabel=RHQ \uc11c\ubc84 \uc124\uce58 \uac00\uc774\ub4dc
@@ -249,8 +160,6 @@
helpDocRHQServerPropParentPage=http://support.rhq-project.org/display/JOP...
newServerSelectItem=\uc2e0\uaddc \uc11c\ubc84
registeredServersLabel=\ub4f1\ub85d\ub41c \uc11c\ubc84:
propertyHighAvailabilityName=\uc11c\ubc84 \uc774\ub984
-propertyHighAvailabilityNameHelp=-ServerName
propertyMaintenanceModeAtStart=\uad6c\ub3d9\uc2dc \uc720\uc9c0 \uad00\ub9ac \ubaa8\ub4dc
-propertyMaintenanceModeAtStartHelp=-MaintenanceModeAtStart
propertyHighAvailabilityEndpointAddress=\uc11c\ubc84 \uacf5\uac1c \uc8fc\uc18c
-propertyHighAvailabilityAffinityGroup=\uc11c\ubc84 \ub3d9\uc9c8 \uadf8\ub8f9
\uc774\ub984
\ No newline at end of file
+propertyHighAvailabilityAffinityGroup=\uc11c\ubc84 \ub3d9\uc9c8 \uadf8\ub8f9
\uc774\ub984
diff --git
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
index 06c2191..e392202 100644
---
a/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
+++
b/modules/enterprise/gui/installer-war/src/main/resources/InstallerMessages_zh.properties
@@ -51,183 +51,94 @@
startInstallingLink=\u7ee7\u7eed\u5b89\u88c5\u8bf7\u70b9\u51fb\u8fd9\u91cc
backToSettingsLink=\u8fd4\u56de\u914d\u7f6e\u9875\u9762
showAdvancedSettings=\u663e\u793a\u9ad8\u7ea7\u9009\u9879
propertyDatabaseType=\u6570\u636e\u5e93\u7c7b\u578b
-propertyDatabaseTypeHelp=-DatabaseType
propertyDatabaseConnectionUrl=\u6570\u636e\u5e93\u8fde\u63a5URL
-propertyDatabaseConnectionUrlHelp=-DatabaseConnectionURL
propertyDatabaseDriverClass=\u6570\u636e\u5e93JDBC\u9a71\u52a8
-propertyDatabaseDriverClassHelp=-DatabaseJDBCDriverClass
propertyDatabaseXADataSourceClass=\u6570\u636e\u5e93XA\u6570\u636e\u6e90\u7c7b
-propertyDatabaseXADataSourceClassHelp=-DatabaseXADataSourceClass
propertyDatabaseUserName=\u6570\u636e\u5e93\u7528\u6237\u540d
-propertyDatabaseUserNameHelp=-DatabaseUserName
propertyDatabasePassword=\u6570\u636e\u5e93\u5bc6\u7801
-propertyDatabasePasswordHelp=-DatabasePassword
propertyBindAddress=\u670d\u52a1\u5668\u76d1\u542c\u5730\u5740
-propertyBindAddressHelp=-ServerBindAddress
propertyHttpPort=HTTP\u7aef\u53e3
-propertyHttpPortHelp=-HTTPPort
propertyHttpsPort=\u5b89\u5168HTTPS\u7aef\u53e3
-propertyHttpsPortHelp=-SecureHTTPSPort
propertyWebServicePort=Web Service\u7aef\u53e3
-propertyWebServicePortHelp=-WebServicePort
propertyNamingServicePort=Naming Service\u7aef\u53e3
-propertyNamingServicePortHelp=-NamingServicePort
propertyNamingServiceRmiPort=Naming Service RMI\u7aef\u53e3
-propertyNamingServiceRmiPortHelp=-NamingServiceRMIPort
propertyJrmpInvokerRmiPort=JRMP Invoker RMI\u7aef\u53e3
-propertyJrmpInvokerRmiPortHelp=-JRMPInvokerRMIPort
propertyPooledInvokerRmiPort=Pooled Invoker RMI\u7aef\u53e3
-propertyPooledInvokerRmiPortHelp=-PooledInvokerRMIPort
propertyAjpPort=AJP\u7aef\u53e3
-propertyAjpPortHelp=-AJPPort
propertyUnifiedInvokerPort=\u7edf\u4e00Invoker\u7aef\u53e3
-propertyUnifiedInvokerPortHelp=-UnifiedInvokerPort
propertyAspectDeployerPort=Aspect Deployer\u7aef\u53e3
-propertyAspectDeployerPortHelp=-AspectDeployerPort
propertyTomcatClientAuthMode=Tomcat\u5ba2\u6237\u7aef\u6388\u6743\u6a21\u5f0f
-propertyTomcatClientAuthModeHelp=-TomcatClientAuthMode
propertyTomcatAlgorithm=Tomcat Keystore/Truststore\u7b97\u6cd5
-propertyTomcatAlgorithmHelp=-TomcatAlgorithm
propertyTomcatKeystoreFilename=Tomcat Keystore
-propertyTomcatKeystoreFilenameHelp=-TomcatKeystore
propertyTomcatKeystorePassword=Tomcat Keystore\u5bc6\u7801
-propertyTomcatKeystorePasswordHelp=-TomcatKeystorePassword
propertyTomcatKeystoreType=Tomcat Keystore\u7c7b\u578b
-propertyTomcatKeystoreTypeHelp=-TomcatKeystoreType
propertyTomcatKeystoreAlias=Tomcat Keystore Alias
-propertyTomcatKeystoreAliasHelp=-TomcatKeystoreAlias
propertyTomcatTruststoreFilename=Tomcat Truststore
-propertyTomcatTruststoreFilenameHelp=-TomcatTruststore
propertyTomcatTruststorePassword=Tomcat Truststore\u5bc6\u7801
-propertyTomcatTruststorePasswordHelp=-TomcatTruststorePassword
propertyTomcatTruststoreType=Tomcat Truststore\u7c7b\u578b
-propertyTomcatTruststoreTypeHelp=-TomcatTruststoreType
propertyTomcatSslProtocol=Tomcat SSL\u534f\u8bae
-propertyTomcatSslProtocolHelp=-TomcatSSLProtocol
propertyConnectorTransport=\u63a5\u6536Agent\u901a\u4fe1\u4f20\u8f93
-propertyConnectorTransportHelp=-IncomingAgentCommunicationsTransport
propertyConnectorBindAddress=\u63a5\u6536Agent\u901a\u4fe1\u76d1\u542c\u5730\u5740
-propertyConnectorBindAddressHelp=-IncomingAgentCommunicationsBindAddress
propertyConnectorBindPort=\u63a5\u6536Agent\u901a\u4fe1\u7aef\u53e3
-propertyConnectorBindPortHelp=-IncomingAgentCommunicationsPort
propertyConnectorTransportParams=\u63a5\u6536Agent\u901a\u4fe1\u4f20\u8f93\u53c2\u6570
-propertyConnectorTransportParamsHelp=-IncomingAgentCommunicationsTransportParameters
propertyAgentMulticastDetectorEnabled=\u542f\u7528Agent\u591a\u64ad\u63a2\u6d4b\u5668
-propertyAgentMulticastDetectorEnabledHelp=-AgentMulticastDetectorEnabled
propertyAgentMulticastDetectorBindAddress=Agent\u591a\u64ad\u63a2\u6d4b\u5668\u76d1\u542c\u5730\u5740
-propertyAgentMulticastDetectorBindAddressHelp=-AgentMulticastDetectorBindAddress
propertyAgentMulticastDetectorMulticastAddress=Agent
\u7ec4\u64ad\u5730\u5740\u591a\u64ad\u63a2\u6d4b\u5668
-propertyAgentMulticastDetectorMulticastAddressHelp=-AgentMulticastDetectorMulticastAddress
propertyAgentMulticastDetectorPort=Agent\u591a\u64ad\u63a2\u6d4b\u5668\u7aef\u53e3
-propertyAgentMulticastDetectorPortHelp=-AgentMulticastDetectorPort
propertySecurityServerSecureSocketProtocol=\u63a5\u6536\u5b89\u5168 -
\u5b89\u5168Socket\u534f\u8bae
-propertySecurityServerSecureSocketProtocolHelp=-IncomingSecureSocketProtocol
propertySecurityServerKeystoreFile=\u63a5\u6536\u5b89\u5168 - Keystore\u6587\u4ef6
-propertySecurityServerKeystoreFileHelp=-IncomingKeystoreFile
propertySecurityServerKeystoreAlgorithm=\u63a5\u6536\u5b89\u5168 - Keystore\u7b97\u6cd5
-propertySecurityServerKeystoreAlgorithmHelp=-IncomingKeystoreAlgorithm
propertySecurityServerKeystoreType=\u63a5\u6536\u5b89\u5168 - Keystore\u7c7b\u578b
-propertySecurityServerKeystoreTypeHelp=-IncomingKeystoreType
propertySecurityServerKeystorePassword=\u63a5\u6536\u5b89\u5168 - Keystore\u5bc6\u7801
-propertySecurityServerKeystorePasswordHelp=-IncomingKeystorePassword
propertySecurityServerKeystoreKeyPassword=\u63a5\u6536\u5b89\u5168 - Keystore
Key\u5bc6\u7801
-propertySecurityServerKeystoreKeyPasswordHelp=-IncomingKeystoreKeyPassword
propertySecurityServerKeystoreAlias=\u63a5\u6536\u5b89\u5168 - Keystore Alias
-propertySecurityServerKeystoreAliasHelp=-IncomingKeystoreAlias
propertySecurityServerTruststoreFile=\u63a5\u6536\u5b89\u5168 - Truststore\u6587\u4ef6
-propertySecurityServerTruststoreFileHelp=-IncomingTruststoreFile
propertySecurityServerTruststoreAlgorithm=\u63a5\u6536\u5b89\u5168 -
Truststore\u7b97\u6cd5
-propertySecurityServerTruststoreAlgorithmHelp=-IncomingTruststoreAlgorithm
propertySecurityServerTruststoreType=\u63a5\u6536\u5b89\u5168 - Truststore\u7c7b\u578b
-propertySecurityServerTruststoreTypeHelp=-IncomingTruststoreType
propertySecurityServerTruststorePassword=\u63a5\u6536\u5b89\u5168 -
Truststore\u5bc6\u7801
-propertySecurityServerTruststorePasswordHelp=-IncomingTruststorePassword
propertySecurityServerClientAuthMode=\u63a5\u6536\u5b89\u5168 -
\u5ba2\u6237\u7aef\u6388\u6743\u6a21\u5f0f
-propertySecurityServerClientAuthModeHelp=-IncomingClientAuthenticationMode
propertySecurityClientSecureSocketProtocol=\u5916\u53d1\u5b89\u5168 -
\u5b89\u5168Socket\u534f\u8bae
-propertySecurityClientSecureSocketProtocolHelp=-OutgoingSecureSocketProtocol
propertySecurityClientKeystoreFile=\u5916\u53d1\u5b89\u5168 - Keystore\u6587\u4ef6
-propertySecurityClientKeystoreFileHelp=-OutgoingKeystoreFile
propertySecurityClientKeystoreAlgorithm=\u5916\u53d1\u5b89\u5168 - Keystore\u7b97\u6cd5
-propertySecurityClientKeystoreAlgorithmHelp=-OutgoingKeystoreAlgorithm
propertySecurityClientKeystoreType=\u5916\u53d1\u5b89\u5168 - Keystore\u7c7b\u578b
-propertySecurityClientKeystoreTypeHelp=-OutgoingKeystoreType
propertySecurityClientKeystorePassword=\u5916\u53d1\u5b89\u5168 - Keystore\u5bc6\u7801
-propertySecurityClientKeystorePasswordHelp=-OutgoingKeystorePassword
propertySecurityClientKeystoreKeyPassword=\u5916\u53d1\u5b89\u5168 - Keystore
Key\u5bc6\u7801
-propertySecurityClientKeystoreKeyPasswordHelp=-OutgoingKeystoreKeyPassword
propertySecurityClientKeystoreAlias=\u5916\u53d1\u5b89\u5168 - Keystore Alias
-propertySecurityClientKeystoreAliasHelp=-OutgoingKeystoreAlias
propertySecurityClientTruststoreFile=\u5916\u53d1\u5b89\u5168 - Truststore\u6587\u4ef6
-propertySecurityClientTruststoreFileHelp=-OutgoingTruststoreFile
propertySecurityClientTruststoreAlgorithm=\u5916\u53d1\u5b89\u5168 -
Truststore\u7b97\u6cd5
-propertySecurityClientTruststoreAlgorithmHelp=-OutgoingTruststoreAlgorithm
propertySecurityClientTruststoreType=\u5916\u53d1\u5b89\u5168 - Truststore\u7c7b\u578b
-propertySecurityClientTruststoreTypeHelp=-OutgoingTruststoreType
propertySecurityClientTruststorePassword=\u5916\u53d1\u5b89\u5168 -
Truststore\u5bc6\u7801
-propertySecurityClientTruststorePasswordHelp=-OutgoingTruststorePassword
propertySecurityClientServerAuthModeEnabled=\u5916\u53d1\u5b89\u5168 -
\u542f\u7528\u670d\u52a1\u5668\u6388\u6743\u6a21\u5f0f
-propertySecurityClientServerAuthModeEnabledHelp=-OutgoingServerAuthenticationModeEnabled
propertyEmbeddedRHQAgentEnabled=\u542f\u7528\u5d4c\u5165Agent
-propertyEmbeddedRHQAgentEnabledHelp=-EmbeddedRHQAgentEnabled
propertyEmbeddedRHQAgentName=\u5d4c\u5165Agent\u540d\u79f0
-propertyEmbeddedRHQAgentNameHelp=-EmbeddedRHQAgentName
propertyEmbeddedRHQAgentDisableNativeSystem=\u5d4c\u5165Agent\u7981\u7528\u672c\u5730\u7cfb\u7edf
-propertyEmbeddedRHQAgentDisableNativeSystemHelp=-EmbeddedRHQAgentDisableNativeSystem
propertyEmbeddedRHQAgentResetConfiguration=\u5d4c\u5165Agent\u91cd\u7f6e\u914d\u7f6e
-propertyEmbeddedRHQAgentResetConfigurationHelp=-EmbeddedRHQAgentResetConfiguration
propertyEmailSmtpHost=\u90ae\u4ef6SMTP\u4e3b\u673a\u540d
-propertyEmailSmtpHostHelp=-EmailSMTPHostname
propertyEmailSmtpPort=\u90ae\u4ef6SMTP\u7aef\u53e3
-propertyEmailSmtpPortHelp=-EmailSMTPPort
propertyEmailFromAddress=\u53d1\u9001\u90ae\u4ef6\u5730\u5740
-propertyEmailFromAddressHelp=-EmailFromAddress
propertyOperationTimeout=\u9ed8\u8ba4Operation Invocation\u8d85\u65f6\u65f6\u95f4
-propertyOperationTimeoutHelp=-OperationInvocationDefaultTimeout
propertyClusterPartitionName=\u96c6\u7fa4 - Partition Name
-propertyClusterPartitionNameHelp=-PartitionName
propertyClusterPartitionBindAddress=\u96c6\u7fa4 - Partition\u76d1\u542c\u5730\u5740
-propertyClusterPartitionBindAddressHelp=-PartitionBindAddress
propertyClusterUdpGroup=\u96c6\u7fa4 - Partition UDP Multicast Group IP\u5730\u5740
-propertyClusterUdpGroupHelp=-PartitionUDPMulticastGroupIPAddress
propertyClusterHaPartitionPort=\u96c6\u7fa4 - Partition UDP\u591a\u64ad\u7aef\u53e3
-propertyClusterHaPartitionPortHelp=-PartitionUDPMulticastPort
propertyClusterEjb3CachePort=\u96c6\u7fa4 - Partition UDP
EJB3\u5b9e\u4f53\u7f13\u5b58\u591a\u64ad\u7aef\u53e3
-propertyClusterEjb3CachePortHelp=-PartitionUDPEJB3EntityCacheMulticastPort
propertyClusterAlertCachePort=\u96c6\u7fa4 - Partition
UDP\u544a\u8b66\u7f13\u5b58\u591a\u64ad\u7aef\u53e3
-propertyClusterAlertCachePortHelp=-PartitionUDPAlertCacheMulticastPort
propertyClusterUdpLoopback=\u96c6\u7fa4 - Partition UDP\u56de\u73af
-propertyClusterUdpLoopbackHelp=-PartitionUDPLoopback
propertyClusterHaJndiPort=\u96c6\u7fa4 - HA JNDI\u7aef\u53e3
-propertyClusterHaJndiPortHelp=-HAJNDIPort
propertyClusterHaJndiRmiPort=\u96c6\u7fa4 - HA JNDI RMI\u7aef\u53e3
-propertyClusterHaJndiRmiPortHelp=-HAJNDIRMIPort
propertyClusterHaJndiAutoDiscoveryPort=\u96c6\u7fa4 - HA
JNDI\u81ea\u52a8\u53d1\u73b0\u7ec4\u7aef\u53e3
-propertyClusterHaJndiAutoDiscoveryPortHelp=-HAJNDIAutoDiscoveryGroupPort
propertyClusterHaJrmpInvokerRmiPort=\u96c6\u7fa4 - HA JRMP Invoker RMI\u7aef\u53e3
-propertyClusterHaJrmpInvokerRmiPortHelp=-HAJRMPInvokerRMIPort
propertyClusterHaPooledInvokerPort=\u96c6\u7fa4 - HA Pooled Invoker\u7aef\u53e3
-propertyClusterHaPooledInvokerPortHelp=-HAPooledInvokerPort
propertyClusterJGroupsUdpIpTtl=\u96c6\u7fa4 - JGroups UDP IP\u5b58\u6d3b\u65f6\u95f4
-propertyClusterJGroupsUdpIpTtlHelp=-JGroupsUDPIPTimeToLive
propertyConcurrencyLimitWebConns=\u5e76\u53d1\u6570\u9650\u5236 -
\u6700\u5927Web\u8fde\u63a5\u6570
-propertyConcurrencyLimitWebConnsHelp=-WebConnections
propertyConcurrencyLimitGlobal=\u5e76\u53d1\u6570\u9650\u5236 - \u5168\u5c40
-propertyConcurrencyLimitGlobalHelp=-GlobalConcurrencyLimit
propertyConcurrencyLimitInventoryReport=\u5e76\u53d1\u6570\u9650\u5236 -
\u6e05\u5355\u62a5\u8868
-propertyConcurrencyLimitInventoryReportHelp=-InventoryReport
propertyConcurrencyLimitAvailabilityReport=\u5e76\u53d1\u6570\u9650\u5236 -
\u53ef\u7528\u6027\u62a5\u8868
-propertyConcurrencyLimitAvailabilityReportHelp=-AvailabilityReport
propertyConcurrencyLimitInventorySync=\u5e76\u53d1\u6570\u9650\u5236 -
\u6e05\u5355\u540c\u6b65
-propertyConcurrencyLimitInventorySyncHelp=-InventorySynchronization
propertyConcurrencyLimitContentReport=\u5e76\u53d1\u6570\u9650\u5236 -
Content\u62a5\u8868
-propertyConcurrencyLimitContentReportHelp=-ContentReport
propertyConcurrencyLimitContentDownload=\u5e76\u53d1\u6570\u9650\u5236 -
Content\u4e0b\u8f7d
-propertyConcurrencyLimitContentDownloadHelp=-ContentDownload
propertyConcurrencyLimitMeasurementReport=\u5e76\u53d1\u6570\u9650\u5236 -
\u6027\u80fd\u62a5\u8868
-propertyConcurrencyLimitMeasurementReportHelp=-MeasurementReport
propertyConcurrencyLimitMeasurementScheduleRequest=\u5e76\u53d1\u6570\u9650\u5236 -
Measurement Schedule\u8bf7\u6c42
-propertyConcurrencyLimitMeasurementScheduleRequestHelp=-MeasurementScheduleRequest
introduceHelpDocs=\u60f3\u66f4\u591a\u4e86\u89e3RHQ,\u8bf7\u67e5\u770b\u4e0b\u9762\u7684\u6587\u6863\u94fe\u63a5:
helpDocRHQServerInstallGuide=\u5b89\u88c5
helpDocRHQServerInstallGuideLabel=RHQ\u670d\u52a1\u5668\u5b89\u88c5\u6307\u5357
@@ -243,8 +154,6 @@
helpDocRHQServerPropParentPage=http://support.rhq-project.org/display/JOP...
newServerSelectItem=\u65b0\u670d\u52a1\u5668
registeredServersLabel=\u6ce8\u518c\u7684\u670d\u52a1\u5668:
propertyHighAvailabilityName=\u670d\u52a1\u5668\u540d\u79f0
-propertyHighAvailabilityNameHelp=-ServerName
propertyMaintenanceModeAtStart=\u542f\u52a8\u7ef4\u62a4\u6a21\u5f0f
-propertyMaintenanceModeAtStartHelp=-MaintenanceModeAtStart
propertyHighAvailabilityEndpointAddress=\u670d\u52a1\u5668\u516c\u5171\u5730\u5740
propertyHighAvailabilityAffinityGroup=\u76f8\u4f3c\u7684\u670d\u52a1\u5668\u7ec4\u540d
commit 3ba7c30f1a23c243448cc427c763dcd83b5d76da
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 13:07:41 2012 -0400
use <target>...</target>, rather than the deprecated
<tasks>...</tasks>, in all antrun plugin executions
diff --git a/etc/apt/pom.xml b/etc/apt/pom.xml
index cbb8ae3..882bdee 100644
--- a/etc/apt/pom.xml
+++ b/etc/apt/pom.xml
@@ -49,7 +49,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...
</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
@@ -81,7 +81,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -150,12 +150,12 @@
<id>deploy</id>
<!--<phase>compile</phase>-->
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -166,11 +166,11 @@
<id>undeploy</id>
<!--<phase>clean</phase>-->
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/etc/classloaders-test/plugin1/pom.xml
b/etc/classloaders-test/plugin1/pom.xml
index b23d084..465db1c 100644
--- a/etc/classloaders-test/plugin1/pom.xml
+++ b/etc/classloaders-test/plugin1/pom.xml
@@ -169,12 +169,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -184,7 +184,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -196,7 +196,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -206,11 +206,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/etc/classloaders-test/plugin2/pom.xml
b/etc/classloaders-test/plugin2/pom.xml
index 593d2ce..265b305 100644
--- a/etc/classloaders-test/plugin2/pom.xml
+++ b/etc/classloaders-test/plugin2/pom.xml
@@ -169,12 +169,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -184,7 +184,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -196,7 +196,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -206,11 +206,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/etc/samples/perspectives/sample-perspective/perspective/pom.xml
b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
index c72c419..d50b4e4 100644
--- a/etc/samples/perspectives/sample-perspective/perspective/pom.xml
+++ b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
@@ -81,7 +81,7 @@
<id>add-war</id>
<phase>verify</phase>
<configuration>
- <tasks>
+ <target>
<property
name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes"
/>
@@ -90,7 +90,7 @@
destfile="${basedir}/target/${project.artifactId}-${project.version}.jar"
basedir="${basedir}/../app/target"
includes="*.war" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -122,11 +122,11 @@
<id>deploy</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<copy
file="${basedir}/target/${project.build.finalName}.jar"
toDir="${rhq.deploymentDir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -137,11 +137,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/etc/samples/provisioning/sample-bundle/pom.xml
b/etc/samples/provisioning/sample-bundle/pom.xml
index 26f227b..a939baf 100644
--- a/etc/samples/provisioning/sample-bundle/pom.xml
+++ b/etc/samples/provisioning/sample-bundle/pom.xml
@@ -43,7 +43,7 @@
<id>prepare-bundle</id>
<phase>process-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>settings.localRepository=${settings.localRepository}</echo>
<echo>project.build.outputDirectory=${project.build.outputDirectory}</echo>
<ant antfile="src/main/scripts/build.xml">
@@ -52,7 +52,7 @@
<property name="project.build.outputDirectory"
value="${project.build.outputDirectory}"/>
<property name="derbyclient.version"
value="${derbyclient.version}"/>
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/etc/samples/skeleton-plugin/pom.xml b/etc/samples/skeleton-plugin/pom.xml
index f45b37e..39fc241 100644
--- a/etc/samples/skeleton-plugin/pom.xml
+++ b/etc/samples/skeleton-plugin/pom.xml
@@ -170,12 +170,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -185,7 +185,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -197,7 +197,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -207,11 +207,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/cli-tests/pom.xml b/modules/cli-tests/pom.xml
index de9a671..e1b5521 100644
--- a/modules/cli-tests/pom.xml
+++ b/modules/cli-tests/pom.xml
@@ -86,7 +86,7 @@
<id>test-scripts</id>
<phase>test</phase>
<configuration>
- <tasks>
+ <target>
<java
classname="org.rhq.enterprise.remoting.cli.ScriptTestRunner"
classpathref="maven.test.classpath"
resultproperty="script.tests.failed"
@@ -103,7 +103,7 @@
<isfailure code="${script.tests.failed}"/>
</condition>
</fail>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -161,7 +161,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -181,7 +181,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -191,7 +191,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -212,7 +212,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/common/ant-bundle/pom.xml b/modules/common/ant-bundle/pom.xml
index 9fe88e9..4da4ece 100644
--- a/modules/common/ant-bundle/pom.xml
+++ b/modules/common/ant-bundle/pom.xml
@@ -135,7 +135,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -155,7 +155,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -165,7 +165,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -186,7 +186,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/common/drift/pom.xml b/modules/common/drift/pom.xml
index 8268ccf..cd0c979 100644
--- a/modules/common/drift/pom.xml
+++ b/modules/common/drift/pom.xml
@@ -49,12 +49,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -65,11 +65,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -104,7 +104,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -124,7 +124,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -134,7 +134,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -155,7 +155,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/common/filetemplate-bundle/pom.xml
b/modules/common/filetemplate-bundle/pom.xml
index 580ecef..74480d7 100644
--- a/modules/common/filetemplate-bundle/pom.xml
+++ b/modules/common/filetemplate-bundle/pom.xml
@@ -62,7 +62,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -82,7 +82,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -92,7 +92,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -113,7 +113,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/common/jboss-as/pom.xml b/modules/common/jboss-as/pom.xml
index 60894f0..6600791 100644
--- a/modules/common/jboss-as/pom.xml
+++ b/modules/common/jboss-as/pom.xml
@@ -106,7 +106,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -132,7 +132,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -142,7 +142,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -163,7 +163,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/client-api/pom.xml b/modules/core/client-api/pom.xml
index bd022fb..b5f049f 100644
--- a/modules/core/client-api/pom.xml
+++ b/modules/core/client-api/pom.xml
@@ -145,12 +145,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -161,11 +161,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -199,7 +199,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -219,7 +219,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -229,7 +229,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -250,7 +250,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/comm-api/pom.xml b/modules/core/comm-api/pom.xml
index b71665b..bf501fc 100644
--- a/modules/core/comm-api/pom.xml
+++ b/modules/core/comm-api/pom.xml
@@ -40,12 +40,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -56,11 +56,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index ebe159a..fa4eee4 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -330,7 +330,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- don't instrument...
I'm leaving this here as an example of how to apply
Hibernate Instrumentation to a class.
Instrumentation is useful for various property-level things
such as field-level lazy load.
@@ -354,7 +354,7 @@
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset dir="target/classes" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -365,11 +365,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -443,7 +443,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -463,7 +463,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -473,7 +473,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -494,7 +494,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/gui/pom.xml b/modules/core/gui/pom.xml
index 0ed21ed..51781ce 100644
--- a/modules/core/gui/pom.xml
+++ b/modules/core/gui/pom.xml
@@ -162,12 +162,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -178,11 +178,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/native-system/pom.xml b/modules/core/native-system/pom.xml
index de8e2e3..82cd33a 100644
--- a/modules/core/native-system/pom.xml
+++ b/modules/core/native-system/pom.xml
@@ -50,7 +50,7 @@
<execution>
<phase>process-test-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>SIGAR Java library version used is
${sigar.version}.</echo>
<echo>Copying/unzipping SIGAR native libraries (version
${sigar.version}) to local build directory...</echo>
<mkdir dir="${project.build.directory}/jboss-sigar" />
@@ -74,7 +74,7 @@
</fileset>
</move>
<delete
dir="${project.build.directory}/jboss-sigar/hyperic-sigar-${sigar.version}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -177,7 +177,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -198,7 +198,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -208,7 +208,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -229,7 +229,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/plugin-api/pom.xml b/modules/core/plugin-api/pom.xml
index b79a075..5ba5465 100644
--- a/modules/core/plugin-api/pom.xml
+++ b/modules/core/plugin-api/pom.xml
@@ -143,7 +143,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -163,7 +163,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -174,7 +174,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -195,7 +195,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/plugin-container/pom.xml
b/modules/core/plugin-container/pom.xml
index 8887e4c..b9c19a4 100644
--- a/modules/core/plugin-container/pom.xml
+++ b/modules/core/plugin-container/pom.xml
@@ -128,7 +128,7 @@
<id>process-test-resources</id>
<phase>process-test-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>SIGAR java library version used is
${sigar.version}</echo>
<echo>Copying/unzipping SIGAR native libraries (version
${sigar.version}) to local build directory</echo>
<mkdir dir="${project.build.directory}/jboss-sigar" />
@@ -152,7 +152,7 @@
</fileset>
</move>
<delete
dir="${project.build.directory}/jboss-sigar/hyperic-sigar-${sigar.version}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -163,7 +163,7 @@
<id>process-test-classes</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks unless="maven.test.skip">
+ <target unless="maven.test.skip">
<echo>Assembling the resource upgrade test plugins</echo>
<copy
toDir="${project.build.testOutputDirectory}/tmp/v1/META-INF">
<fileset
file="${project.build.testSourceDirectory}/org/rhq/core/pc/upgrade/plugins/v1/rhq-plugin.xml"
/>
@@ -336,7 +336,7 @@
</jar>
<delete dir="${project.build.testOutputDirectory}/tmp"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -411,7 +411,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -431,7 +431,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -441,7 +441,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -462,7 +462,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/plugindoc/pom.xml b/modules/core/plugindoc/pom.xml
index 7192c4d..c35c001 100644
--- a/modules/core/plugindoc/pom.xml
+++ b/modules/core/plugindoc/pom.xml
@@ -102,12 +102,12 @@
<id>plugindoc-distro-package</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="${basedir}/ant-run.xml"
dir="${basedir}" target="package-dist" inheritAll="false"
inheritRefs="false">
<property name="settings.localRepository"
value="${settings.localRepository}" />
<property name="project.version"
value="${project.version}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/core/util/pom.xml b/modules/core/util/pom.xml
index 2dd2ef6..2737ce3 100644
--- a/modules/core/util/pom.xml
+++ b/modules/core/util/pom.xml
@@ -53,7 +53,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.compile.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
@@ -63,7 +63,7 @@
<include name="**/*.class" />
</classfileset>
</i18n>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -97,12 +97,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -113,11 +113,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -151,7 +151,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -171,7 +171,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -181,7 +181,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -202,7 +202,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/agent/pom.xml b/modules/enterprise/agent/pom.xml
index 6abfed3..6fa0902 100644
--- a/modules/enterprise/agent/pom.xml
+++ b/modules/enterprise/agent/pom.xml
@@ -122,7 +122,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
@@ -152,7 +152,7 @@ Build-OS-Version=${os.version}
Build-Number=${buildNumber}
</echo>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -164,7 +164,7 @@ Build-Number=${buildNumber}
<id>agent-distro-package</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<ant antfile="${basedir}/ant-run.xml"
dir="${basedir}" target="package-dist" inheritAll="false"
inheritRefs="false">
<property name="settings.localRepository"
value="${settings.localRepository}" />
<property name="project.version"
value="${project.version}" />
@@ -185,7 +185,7 @@ Build-Number=${buildNumber}
<property name="augeas.zip.version"
value="${augeas.zip.version}" />
<property name="log4j.version"
value="${log4j.version}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -196,10 +196,10 @@ Build-Number=${buildNumber}
<id>clean-test-dirs</id>
<phase>test</phase>
<configuration>
- <tasks>
+ <target>
<delete dir="${basedir}/data" />
<delete dir="${basedir}/plugins" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -257,7 +257,7 @@ Build-Number=${buildNumber}
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -277,7 +277,7 @@ Build-Number=${buildNumber}
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -287,7 +287,7 @@ Build-Number=${buildNumber}
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -308,7 +308,7 @@ Build-Number=${buildNumber}
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/agentupdate/pom.xml
b/modules/enterprise/agentupdate/pom.xml
index de2ef8d..6069aaf 100644
--- a/modules/enterprise/agentupdate/pom.xml
+++ b/modules/enterprise/agentupdate/pom.xml
@@ -162,7 +162,7 @@ rhq-agent.latest.build-number=${buildNumber}
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<echo>*** Cleaning old ${rhq.deploymentDir}...</echo>
<mkdir dir="${rhq.deploymentDir}" />
<delete failonerror="false">
@@ -171,7 +171,7 @@ rhq-agent.latest.build-number=${buildNumber}
<property name="deployment.file"
location="${rhq.deploymentDir}/${rhq.deploymentJar}" />
<echo>*** Updating ${deployment.file}...</echo>
<copy file="${basedir}/target/${rhq.projectJar}"
toFile="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -181,12 +181,12 @@ rhq-agent.latest.build-number=${buildNumber}
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<echo>*** Deleting ${rhq.deploymentDir}...</echo>
<delete failonerror="false">
<fileset dir="${rhq.deploymentDir}"
includes="*" />
</delete>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,7 +218,7 @@ rhq-agent.latest.build-number=${buildNumber}
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -238,7 +238,7 @@ rhq-agent.latest.build-number=${buildNumber}
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -248,7 +248,7 @@ rhq-agent.latest.build-number=${buildNumber}
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -269,7 +269,7 @@ rhq-agent.latest.build-number=${buildNumber}
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/binding/pom.xml b/modules/enterprise/binding/pom.xml
index 7383d3a..23eab14 100644
--- a/modules/enterprise/binding/pom.xml
+++ b/modules/enterprise/binding/pom.xml
@@ -238,13 +238,13 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -255,12 +255,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -292,7 +292,7 @@
<id>bindings-api</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="javadoc.outputDirectory"
value="${javadoc.outputDirectory}" />
<property name="project.dir"
value="./src/main/java/org/rhq/bindings" />
<property name="maven.compile.classpath"
refid="maven.compile.classpath" />
@@ -309,7 +309,7 @@
<link
href="http://download.oracle.com/javase/6/docs/api/" />
<bottom><![CDATA[Copyright © 2005-2011
<a
href="http://redhat.com/">Red Hat, Inc.</a>. All Rights
Reserved.]]></bottom>
</javadoc>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -344,7 +344,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure
for cobertura -->
<mkdir dir="target/cobertura" />
@@ -368,7 +368,7 @@
<include name="**/*.class"
/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -378,7 +378,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
classpathref="maven.plugin.classpath" resource="tasks.properties"
/>
<!-- prepare directory structure
for cobertura -->
@@ -402,7 +402,7 @@
<!-- delete cobertura.properties
file -->
<delete
file="target/classes/cobertura.properties" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -448,10 +448,10 @@
</goals>
<phase>generate-sources</phase>
<configuration>
- <tasks>
+ <target>
<!-- Ex. -DTagManager=false will disable the
TagManager from remote api if this profile is active. -->
<echo>Updating remote api to exclude
RemoteManagers passed in.</echo>
- </tasks>
+ </target>
</configuration>
</execution>
</executions>
diff --git a/modules/enterprise/comm/pom.xml b/modules/enterprise/comm/pom.xml
index 2c6133e..f784d42 100644
--- a/modules/enterprise/comm/pom.xml
+++ b/modules/enterprise/comm/pom.xml
@@ -105,7 +105,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
@@ -115,7 +115,7 @@
<include name="**/CommI18NResourceKeys.class" />
</classfileset>
</i18n>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -186,12 +186,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -202,11 +202,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -240,7 +240,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -260,7 +260,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -270,7 +270,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -291,7 +291,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/content_http-war/pom.xml
b/modules/enterprise/gui/content_http-war/pom.xml
index 5f86321..78f8982 100644
--- a/modules/enterprise/gui/content_http-war/pom.xml
+++ b/modules/enterprise/gui/content_http-war/pom.xml
@@ -220,7 +220,7 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from
target/classes to ${classes.dir}...</echo>
<copy todir="${classes.dir}"
verbose="${rhq.verbose}">
@@ -232,7 +232,7 @@
<fileset
dir="${basedir}/src/main/webapp" />
</copy>
<!-- TODO: Also copy the files from
src/main/webapp-filtered/, and then filter them ourselves. -->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -243,13 +243,13 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -260,11 +260,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index 1260cee..45308cc 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -351,7 +351,7 @@
<id>Generate I18N Resource Bundles</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
<i18n
outputdir="${project.buildNodes.outputDirectory}" defaultlocale="en"
verbose="false" append="false" verify="true">
<classpath refid="maven.runtime.classpath"
/>
@@ -359,7 +359,7 @@
<include
name="**/*I18NResourceKeys.class" />
</classfileset>
</i18n>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -369,14 +369,14 @@
<id>Maintain an unfiltered copy of i18n properties
files</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<copy
todir="${project.buildNodes.outputDirectory}">
<fileset
dir="src/main/webapp-filtered/WEB-INF/classes">
<include
name="ApplicationResources.properties" />
</fileset>
<mapper type="glob" from="*"
to="*.unfiltered" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -414,7 +414,7 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<!--
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from
target/${project.buildNodes.finalName}/WEB-INF/classes to ${classes.dir}...</echo>
@@ -430,7 +430,7 @@
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/src/main/webapp" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -441,7 +441,7 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
@@ -450,7 +450,7 @@
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -461,11 +461,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/installer-war/pom.xml
b/modules/enterprise/gui/installer-war/pom.xml
index 471f23e..b4fd36c 100644
--- a/modules/enterprise/gui/installer-war/pom.xml
+++ b/modules/enterprise/gui/installer-war/pom.xml
@@ -182,7 +182,7 @@
<id>Generate I18N Resource Bundles</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
<!--<i18n outputdir="${project.build.outputDirectory}"
defaultlocale="en" verbose="false" append="false"
verify="true">-->
@@ -198,7 +198,7 @@
</fileset>
<mapper type="glob" from="*"
to="*.unfiltered" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -256,13 +256,13 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from target/classes to
${classes.dir}...</echo>
<copy todir="${classes.dir}"
verbose="${rhq.verbose}">
<fileset dir="target/classes" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -273,14 +273,14 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
<delete dir="${deployment.dir}.rej" />
<!-- need to remove any residual backups -->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -291,11 +291,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/portal-war/pom.xml
b/modules/enterprise/gui/portal-war/pom.xml
index 6a5e230..5e034ef 100644
--- a/modules/enterprise/gui/portal-war/pom.xml
+++ b/modules/enterprise/gui/portal-war/pom.xml
@@ -444,7 +444,7 @@
<id>Generate I18N Resource Bundles</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
<i18n outputdir="${project.build.outputDirectory}"
defaultlocale="en" verbose="false" append="false"
verify="true">
@@ -453,7 +453,7 @@
<include name="**/*I18NResourceKeys.class"
/>
</classfileset>
</i18n>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -463,14 +463,14 @@
<id>Maintain an unfiltered copy of i18n properties
files</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<copy todir="${project.build.outputDirectory}">
<fileset
dir="src/main/webapp-filtered/WEB-INF/classes">
<include
name="ApplicationResources.properties" />
</fileset>
<mapper type="glob" from="*"
to="*.unfiltered" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -507,7 +507,7 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from target/classes to
${classes.dir}...</echo>
<copy todir="${classes.dir}"
verbose="${rhq.verbose}">
@@ -519,7 +519,7 @@
<fileset dir="${basedir}/src/main/webapp"
/>
</copy>
<!-- TODO: Also copy the files from
src/main/webapp-filtered/, and then filter them ourselves. -->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -530,13 +530,13 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -547,11 +547,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -610,7 +610,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -632,7 +632,7 @@
<include
name="org/rhq/enterprise/gui/common/time/converter/RelativeDurationConverter.class"
/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -642,7 +642,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -665,7 +665,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/rest-war/pom.xml
b/modules/enterprise/gui/rest-war/pom.xml
index 4eb9c60..4c18901 100644
--- a/modules/enterprise/gui/rest-war/pom.xml
+++ b/modules/enterprise/gui/rest-war/pom.xml
@@ -139,7 +139,7 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from target/classes to
${classes.dir}...</echo>
<copy todir="${classes.dir}"
verbose="${rhq.verbose}">
@@ -151,7 +151,7 @@
<fileset dir="${basedir}/src/main/webapp"
/>
</copy>
<!-- TODO: Also copy the files from
src/main/webapp-filtered/, and then filter them ourselves. -->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -162,13 +162,13 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -179,11 +179,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,7 +218,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -240,7 +240,7 @@
<include
name="org/rhq/enterprise/gui/common/time/converter/RelativeDurationConverter.class"
/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -250,7 +250,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -273,7 +273,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/gui/webdav-war/pom.xml
b/modules/enterprise/gui/webdav-war/pom.xml
index b85eeef..3ab00df 100644
--- a/modules/enterprise/gui/webdav-war/pom.xml
+++ b/modules/enterprise/gui/webdav-war/pom.xml
@@ -213,7 +213,7 @@
<id>deploy-classes</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes" />
<echo>*** Copying updated files from target/classes to
${classes.dir}...</echo>
<copy todir="${classes.dir}"
verbose="${rhq.verbose}">
@@ -225,7 +225,7 @@
<fileset dir="${basedir}/src/main/webapp"
/>
</copy>
<!-- TODO: Also copy the files from
src/main/webapp-filtered/, and then filter them ourselves. -->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -236,13 +236,13 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset
dir="${basedir}/target/${project.build.finalName}" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -253,11 +253,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/remoting/webservices/pom.xml
b/modules/enterprise/remoting/webservices/pom.xml
index f3e0c81..fe1c3e7 100644
--- a/modules/enterprise/remoting/webservices/pom.xml
+++ b/modules/enterprise/remoting/webservices/pom.xml
@@ -104,7 +104,7 @@
<id>client-distribution</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<echo>ant.version=${ant.version}</echo>
<ant
antfile="${basedir}/src/main/scripts/rhq-client.build.xml"
dir="${basedir}" target="prepare-dist" inheritAll="false"
inheritRefs="false">
@@ -126,7 +126,7 @@
<property name="ant.contrib.version"
value="${ant.contrib.version}" />
<property name="webservice.version"
value="${project.version}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/client-api/pom.xml
b/modules/enterprise/server/client-api/pom.xml
index 9a2f24f..81b559c 100644
--- a/modules/enterprise/server/client-api/pom.xml
+++ b/modules/enterprise/server/client-api/pom.xml
@@ -71,13 +71,13 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -88,12 +88,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -128,7 +128,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure
for cobertura -->
<mkdir dir="target/cobertura" />
@@ -152,7 +152,7 @@
<include name="**/*.class"
/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -162,7 +162,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
classpathref="maven.plugin.classpath" resource="tasks.properties"
/>
<!-- prepare directory structure
for cobertura -->
@@ -186,7 +186,7 @@
<!-- delete cobertura.properties
file -->
<delete
file="target/classes/cobertura.properties" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/container-lib/pom.xml
b/modules/enterprise/server/container-lib/pom.xml
index 197341b..8a5f9dd 100644
--- a/modules/enterprise/server/container-lib/pom.xml
+++ b/modules/enterprise/server/container-lib/pom.xml
@@ -69,12 +69,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -85,11 +85,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/ear/pom.xml
b/modules/enterprise/server/ear/pom.xml
index ecbf664..46ec595 100644
--- a/modules/enterprise/server/ear/pom.xml
+++ b/modules/enterprise/server/ear/pom.xml
@@ -854,7 +854,7 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
@@ -866,7 +866,7 @@
<echo>*** Touching ${deployment.descriptor.file} to
force redeployment of
${rhq.deploymentName}...</echo>
<touch file="${deployment.descriptor.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -877,13 +877,13 @@
<id>deploy-ear-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<unjar
src="${project.build.directory}/${project.build.finalName}.ear"
dest="${rhq.deploymentDir}">
<patternset>
<include name="META-INF/**" />
</patternset>
</unjar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -894,11 +894,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/itests/pom.xml
b/modules/enterprise/server/itests/pom.xml
index 3725e1d..3f3f03f 100644
--- a/modules/enterprise/server/itests/pom.xml
+++ b/modules/enterprise/server/itests/pom.xml
@@ -286,7 +286,7 @@
<id>Extract JMS classes from RAR needed for JMS tests</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<unzip src="src/test/resources/jms-ra.rar"
dest="target">
<patternset>
<include name="jms-ra.jar"/>
@@ -297,7 +297,7 @@
<include name="org/**"/>
</patternset>
</unzip>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index ef539f6..86bc22d 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -606,7 +606,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
@@ -634,7 +634,7 @@ Build-Jdk=${java.version}
Build-OS-Name=${os.name}
Build-OS-Version=${os.version}
</echo>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -646,7 +646,7 @@ Build-OS-Version=${os.version}
<id>Extract JMS classes from RAR needed for JMS tests</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<unzip src="src/test/resources/jms-ra.rar"
dest="target">
<patternset>
<include name="jms-ra.jar"/>
@@ -657,7 +657,7 @@ Build-OS-Version=${os.version}
<include name="org/**"/>
</patternset>
</unzip>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -845,13 +845,13 @@ Build-OS-Version=${os.version}
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from target/classes
to ${deployment.dir}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
<fileset dir="target/classes" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -867,13 +867,13 @@ Build-OS-Version=${os.version}
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${rhq.deploymentDir}" overwrite="false">
<patternset>
<include name="META-INF/**" />
</patternset>
</unjar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -884,11 +884,11 @@ Build-OS-Version=${os.version}
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -941,7 +941,7 @@ Build-OS-Version=${os.version}
<id>remote-api</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<property name="javadoc.outputDirectory"
value="${javadoc.outputDirectory}" />
<property name="project.dir"
value="./src/main/java/org/rhq/enterprise/server" />
<property name="maven.compile.classpath"
refid="maven.compile.classpath" />
@@ -958,7 +958,7 @@ Build-OS-Version=${os.version}
<link
href="http://download.oracle.com/javase/6/docs/api/" />
<bottom><![CDATA[Copyright © 2005-2011
<a
href="http://redhat.com/">Red Hat, Inc.</a>. All Rights
Reserved.]]></bottom>
</javadoc>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -990,7 +990,7 @@ Build-OS-Version=${os.version}
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -1012,7 +1012,7 @@ Build-OS-Version=${os.version}
<exclude
name="**/DynamicConfigurationPropertyBean.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -1022,7 +1022,7 @@ Build-OS-Version=${os.version}
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -1043,7 +1043,7 @@ Build-OS-Version=${os.version}
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-cli/pom.xml
b/modules/enterprise/server/plugins/alert-cli/pom.xml
index ad59517..0977465 100644
--- a/modules/enterprise/server/plugins/alert-cli/pom.xml
+++ b/modules/enterprise/server/plugins/alert-cli/pom.xml
@@ -58,13 +58,13 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -75,12 +75,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -91,7 +91,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir
in ${deployment.file}...</echo>
@@ -102,7 +102,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -137,7 +137,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure
for cobertura -->
<mkdir dir="target/cobertura" />
@@ -161,7 +161,7 @@
<include name="**/*.class"
/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -171,7 +171,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
classpathref="maven.plugin.classpath" resource="tasks.properties"
/>
<!-- prepare directory structure
for cobertura -->
@@ -195,7 +195,7 @@
<!-- delete cobertura.properties
file -->
<delete
file="target/classes/cobertura.properties" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-email/pom.xml
b/modules/enterprise/server/plugins/alert-email/pom.xml
index 419c20a..a7db8c7 100644
--- a/modules/enterprise/server/plugins/alert-email/pom.xml
+++ b/modules/enterprise/server/plugins/alert-email/pom.xml
@@ -64,12 +64,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -80,11 +80,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -95,7 +95,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -105,7 +105,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -140,7 +140,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -160,7 +160,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -170,7 +170,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -191,7 +191,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-irc/pom.xml
b/modules/enterprise/server/plugins/alert-irc/pom.xml
index 0d7194a..53b67dd 100644
--- a/modules/enterprise/server/plugins/alert-irc/pom.xml
+++ b/modules/enterprise/server/plugins/alert-irc/pom.xml
@@ -61,12 +61,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -77,11 +77,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -92,7 +92,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -102,7 +102,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -194,7 +194,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -214,7 +214,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -224,7 +224,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -245,7 +245,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-log4j/pom.xml
b/modules/enterprise/server/plugins/alert-log4j/pom.xml
index 9884b3d..5f01f19 100644
--- a/modules/enterprise/server/plugins/alert-log4j/pom.xml
+++ b/modules/enterprise/server/plugins/alert-log4j/pom.xml
@@ -51,12 +51,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -67,11 +67,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -82,7 +82,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -92,7 +92,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -130,7 +130,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -150,7 +150,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -160,7 +160,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -181,7 +181,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-microblog/pom.xml
b/modules/enterprise/server/plugins/alert-microblog/pom.xml
index c3b4437..ceb88ad 100644
--- a/modules/enterprise/server/plugins/alert-microblog/pom.xml
+++ b/modules/enterprise/server/plugins/alert-microblog/pom.xml
@@ -59,12 +59,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -75,11 +75,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -90,7 +90,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -100,7 +100,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -191,7 +191,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -211,7 +211,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -221,7 +221,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -242,7 +242,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
index 9a5ea88..01e8ed2 100644
--- a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
+++ b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
@@ -51,12 +51,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -67,11 +67,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -82,7 +82,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -92,7 +92,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -127,7 +127,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -147,7 +147,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -157,7 +157,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -178,7 +178,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-operations/pom.xml
b/modules/enterprise/server/plugins/alert-operations/pom.xml
index c28cee4..032030c 100644
--- a/modules/enterprise/server/plugins/alert-operations/pom.xml
+++ b/modules/enterprise/server/plugins/alert-operations/pom.xml
@@ -126,12 +126,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -142,11 +142,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -157,7 +157,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -167,7 +167,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -201,7 +201,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -221,7 +221,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -231,7 +231,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -252,7 +252,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml
b/modules/enterprise/server/plugins/alert-roles/pom.xml
index 63375ca..e1b2b68 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -78,12 +78,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -94,11 +94,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -109,7 +109,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -119,7 +119,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -154,7 +154,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -174,7 +174,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -184,7 +184,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -205,7 +205,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
b/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
index 5aace00..843b2af 100644
--- a/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
+++ b/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
@@ -81,12 +81,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -97,11 +97,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -112,7 +112,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -123,7 +123,7 @@
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -156,7 +156,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -176,7 +176,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -186,7 +186,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -207,7 +207,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-sms/pom.xml
b/modules/enterprise/server/plugins/alert-sms/pom.xml
index eaddb5a..31fdfd7 100644
--- a/modules/enterprise/server/plugins/alert-sms/pom.xml
+++ b/modules/enterprise/server/plugins/alert-sms/pom.xml
@@ -94,12 +94,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -110,11 +110,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -125,7 +125,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -135,7 +135,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -209,7 +209,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -229,7 +229,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -239,7 +239,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -260,7 +260,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-snmp/pom.xml
b/modules/enterprise/server/plugins/alert-snmp/pom.xml
index 249f916..5e272f6 100644
--- a/modules/enterprise/server/plugins/alert-snmp/pom.xml
+++ b/modules/enterprise/server/plugins/alert-snmp/pom.xml
@@ -59,12 +59,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -75,11 +75,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -90,7 +90,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -100,7 +100,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -160,7 +160,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -180,7 +180,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -190,7 +190,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -211,7 +211,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml
b/modules/enterprise/server/plugins/alert-subject/pom.xml
index f1d7420..1e168a0 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -52,12 +52,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -68,11 +68,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -106,7 +106,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -126,7 +126,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -136,7 +136,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -157,7 +157,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/ant-bundle/pom.xml
b/modules/enterprise/server/plugins/ant-bundle/pom.xml
index 64d9579..5cb7d9d 100644
--- a/modules/enterprise/server/plugins/ant-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/ant-bundle/pom.xml
@@ -152,12 +152,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -168,11 +168,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -183,7 +183,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -193,7 +193,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -227,7 +227,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -247,7 +247,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -257,7 +257,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -278,7 +278,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/cloud/pom.xml
b/modules/enterprise/server/plugins/cloud/pom.xml
index 2a5b73c..6ed8c41 100644
--- a/modules/enterprise/server/plugins/cloud/pom.xml
+++ b/modules/enterprise/server/plugins/cloud/pom.xml
@@ -79,12 +79,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -95,11 +95,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -110,7 +110,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -120,7 +120,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/cobbler/pom.xml
b/modules/enterprise/server/plugins/cobbler/pom.xml
index df451de..db45a30 100644
--- a/modules/enterprise/server/plugins/cobbler/pom.xml
+++ b/modules/enterprise/server/plugins/cobbler/pom.xml
@@ -103,12 +103,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -119,11 +119,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -134,7 +134,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -144,7 +144,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -178,7 +178,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -198,7 +198,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -208,7 +208,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -229,7 +229,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/disk/pom.xml
b/modules/enterprise/server/plugins/disk/pom.xml
index 9252abd..f695434 100644
--- a/modules/enterprise/server/plugins/disk/pom.xml
+++ b/modules/enterprise/server/plugins/disk/pom.xml
@@ -78,12 +78,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -94,11 +94,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -109,7 +109,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -119,7 +119,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -153,7 +153,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -173,7 +173,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -183,7 +183,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -204,7 +204,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/drift-mongodb/pom.xml
b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
index 869286d..985cd67 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/pom.xml
+++ b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
@@ -154,12 +154,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -170,11 +170,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -185,7 +185,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -195,7 +195,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -230,7 +230,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -250,7 +250,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -260,7 +260,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -281,7 +281,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/drift-rhq/pom.xml
b/modules/enterprise/server/plugins/drift-rhq/pom.xml
index e06625c..141b792 100644
--- a/modules/enterprise/server/plugins/drift-rhq/pom.xml
+++ b/modules/enterprise/server/plugins/drift-rhq/pom.xml
@@ -92,12 +92,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -108,11 +108,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -123,7 +123,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -133,7 +133,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -167,7 +167,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -187,7 +187,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -197,7 +197,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -218,7 +218,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
index 4fed8f3..1d3afe9 100644
--- a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
@@ -129,12 +129,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -145,11 +145,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -160,7 +160,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -170,7 +170,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -205,7 +205,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -225,7 +225,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -235,7 +235,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -256,7 +256,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/groovy-script/pom.xml
b/modules/enterprise/server/plugins/groovy-script/pom.xml
index 0e26344..f708881 100644
--- a/modules/enterprise/server/plugins/groovy-script/pom.xml
+++ b/modules/enterprise/server/plugins/groovy-script/pom.xml
@@ -155,12 +155,12 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -171,11 +171,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -186,7 +186,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -196,7 +196,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -230,7 +230,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -250,7 +250,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -260,7 +260,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -281,7 +281,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/jboss-software/pom.xml
b/modules/enterprise/server/plugins/jboss-software/pom.xml
index 91920bf..ba40c46 100644
--- a/modules/enterprise/server/plugins/jboss-software/pom.xml
+++ b/modules/enterprise/server/plugins/jboss-software/pom.xml
@@ -82,12 +82,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -98,11 +98,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -113,7 +113,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -123,7 +123,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -157,7 +157,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -177,7 +177,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -187,7 +187,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -208,7 +208,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/packagetype-cli/pom.xml
b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
index d78df65..523a7b8 100644
--- a/modules/enterprise/server/plugins/packagetype-cli/pom.xml
+++ b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
@@ -52,12 +52,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -68,11 +68,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -83,7 +83,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir
in ${deployment.file}...</echo>
@@ -94,7 +94,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -127,7 +127,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -147,7 +147,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -157,7 +157,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -178,7 +178,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
index 39da337..601d777 100644
--- a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
@@ -40,12 +40,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -56,11 +56,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -71,7 +71,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -81,7 +81,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
index 6ce8667..141eaef 100644
--- a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
@@ -53,7 +53,7 @@
<id>add-war</id>
<phase>verify</phase>
<configuration>
- <tasks>
+ <target>
<property
name="classes.dir"
location="${rhq.deploymentDir}/WEB-INF/classes"
/>
@@ -62,7 +62,7 @@
destfile="${basedir}/target/${project.artifactId}-${project.version}.jar"
basedir="${basedir}/../app/target"
includes="*.war" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -94,11 +94,11 @@
<id>deploy</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<copy
file="${basedir}/target/${project.build.finalName}.jar"
toDir="${rhq.deploymentDir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -109,11 +109,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/url/pom.xml
b/modules/enterprise/server/plugins/url/pom.xml
index 26e21c6..56877dd 100644
--- a/modules/enterprise/server/plugins/url/pom.xml
+++ b/modules/enterprise/server/plugins/url/pom.xml
@@ -87,12 +87,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -103,11 +103,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -118,7 +118,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -128,7 +128,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -163,7 +163,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -183,7 +183,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -193,7 +193,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -214,7 +214,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
index 4890974..4d68e6e 100644
--- a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
+++ b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
@@ -23,7 +23,7 @@
<execution>
<phase>integration-test</phase>
<configuration>
- <tasks>
+ <target>
<property name="test.classpath"
refid="maven.test.classpath" />
<echo>Validating plugins...</echo>
<java
classname="org.rhq.enterprise.server.plugin.pc.ServerPluginValidatorUtil"
failonerror="true" fork="true">
@@ -59,7 +59,7 @@
<jvmarg line="-Xdebug
-Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y" />
-->
</java>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/plugins/yum/pom.xml
b/modules/enterprise/server/plugins/yum/pom.xml
index f9cd80a..4d91ffd 100644
--- a/modules/enterprise/server/plugins/yum/pom.xml
+++ b/modules/enterprise/server/plugins/yum/pom.xml
@@ -72,12 +72,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -88,11 +88,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -103,7 +103,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -113,7 +113,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -148,7 +148,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -168,7 +168,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -178,7 +178,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -199,7 +199,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/safe-invoker/pom.xml
b/modules/enterprise/server/safe-invoker/pom.xml
index 2607be4..1a515f3 100644
--- a/modules/enterprise/server/safe-invoker/pom.xml
+++ b/modules/enterprise/server/safe-invoker/pom.xml
@@ -62,12 +62,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${rhq.deploymentName}" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -78,11 +78,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${rhq.deploymentName}" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -117,7 +117,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -137,7 +137,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -147,7 +147,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -168,7 +168,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/xml-schemas/pom.xml
b/modules/enterprise/server/xml-schemas/pom.xml
index e9cb460..d14f05d 100644
--- a/modules/enterprise/server/xml-schemas/pom.xml
+++ b/modules/enterprise/server/xml-schemas/pom.xml
@@ -97,7 +97,7 @@
<id>Copy the schemas in one place, including
rhq-configuration.xsd schema so we can reuse it</id>
<phase>initialize</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${basedir}/target/classes"
/>
<copy todir="${basedir}/target/classes">
<fileset
dir="${basedir}/src/main/resources">
@@ -107,7 +107,7 @@
<include
name="rhq-configuration.xsd" />
</fileset>
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -117,9 +117,9 @@
<id>purge duplicated JAXB-generated configuration schema
classes</id>
<phase>process-sources</phase>
<configuration>
- <tasks>
+ <target>
<delete
dir="${basedir}/target/generated-sources/xjc/org/rhq/core" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -160,12 +160,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -176,11 +176,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -214,7 +214,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -234,7 +234,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -244,7 +244,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -265,7 +265,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/helpers/bundleGen/pom.xml b/modules/helpers/bundleGen/pom.xml
index a1c2d5b..6476dc0 100644
--- a/modules/helpers/bundleGen/pom.xml
+++ b/modules/helpers/bundleGen/pom.xml
@@ -95,7 +95,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -115,7 +115,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -125,7 +125,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -146,7 +146,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/helpers/perftest-support/pom.xml
b/modules/helpers/perftest-support/pom.xml
index f34103c..55e7c37 100644
--- a/modules/helpers/perftest-support/pom.xml
+++ b/modules/helpers/perftest-support/pom.xml
@@ -137,7 +137,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -157,7 +157,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -167,7 +167,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -188,7 +188,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/helpers/pluginGen/pom.xml b/modules/helpers/pluginGen/pom.xml
index 6394863..299550d 100644
--- a/modules/helpers/pluginGen/pom.xml
+++ b/modules/helpers/pluginGen/pom.xml
@@ -116,7 +116,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -136,7 +136,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -146,7 +146,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -167,7 +167,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/helpers/rtfilter/pom.xml b/modules/helpers/rtfilter/pom.xml
index e94372a..821df29 100644
--- a/modules/helpers/rtfilter/pom.xml
+++ b/modules/helpers/rtfilter/pom.xml
@@ -104,12 +104,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -120,11 +120,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -159,7 +159,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -179,7 +179,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -189,7 +189,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -210,7 +210,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/integration-tests/apache-plugin-test/pom.xml
b/modules/integration-tests/apache-plugin-test/pom.xml
index 10f3766..7219146 100644
--- a/modules/integration-tests/apache-plugin-test/pom.xml
+++ b/modules/integration-tests/apache-plugin-test/pom.xml
@@ -130,7 +130,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
@@ -241,7 +241,7 @@
<chmod perm="ugo+rx">
<fileset dir="target/itest/httpd/bin"
/>
</chmod>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/integration-tests/jndi-access/jndi-access-test/pom.xml
b/modules/integration-tests/jndi-access/jndi-access-test/pom.xml
index efa765d..4351b11 100644
--- a/modules/integration-tests/jndi-access/jndi-access-test/pom.xml
+++ b/modules/integration-tests/jndi-access/jndi-access-test/pom.xml
@@ -275,7 +275,7 @@
<id>Extract JMS classes from RAR needed for JMS
tests</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<unzip src="src/test/resources/jms-ra.rar"
dest="target">
<patternset>
@@ -288,7 +288,7 @@
<include name="org/**" />
</patternset>
</unzip>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/integration-tests/mod_cluster-plugin-test/pom.xml
b/modules/integration-tests/mod_cluster-plugin-test/pom.xml
index a51f3b1..63fb98d 100644
--- a/modules/integration-tests/mod_cluster-plugin-test/pom.xml
+++ b/modules/integration-tests/mod_cluster-plugin-test/pom.xml
@@ -282,7 +282,7 @@
<execution>
<phase>process-test-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/testsetup" />
@@ -320,7 +320,7 @@
</fileset>
</move>
<delete
dir="target/testsetup/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/jopr/dist/agent/pom.xml b/modules/jopr/dist/agent/pom.xml
index fa46fc7..9fab897 100644
--- a/modules/jopr/dist/agent/pom.xml
+++ b/modules/jopr/dist/agent/pom.xml
@@ -53,7 +53,7 @@
<id>build-dist</id>
<phase>generate-resources</phase>
<configuration>
- <tasks>
+ <target>
<property name="jopr.trunk.dir"
location="../../.." />
<property name="rhq.agent.dist.zipfile"
location="${settings.localRepository}/org/rhq/rhq-enterprise-agent/${rhq.version}/rhq-enterprise-agent-${rhq.version}.zip"
/>
<property name="rhq.connectors.dist.zipfile"
location="${settings.localRepository}/org/rhq/rhq-enterprise-agent/${rhq.version}/rhq-product_connectors-${rhq.version}.zip"
/>
@@ -75,7 +75,7 @@
<copy todir="${jopr.agent.dist.dir}">
<fileset dir="${jopr.trunk.dir}"
includes="LICENSE*" />
</copy>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/jopr/dist/server/pom.xml b/modules/jopr/dist/server/pom.xml
index 9ec8f35..0e95346 100644
--- a/modules/jopr/dist/server/pom.xml
+++ b/modules/jopr/dist/server/pom.xml
@@ -158,7 +158,7 @@
<id>build-dist</id>
<phase>generate-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>settings.localRepository=${settings.localRepository}</echo>
<echo>project.build.outputDirectory=${project.build.outputDirectory}</echo>
<ant antfile="src/main/scripts/dist.build.xml"
target="run">
@@ -177,7 +177,7 @@
<property name="rhq.ds.password"
value="${rhq.ds.password}" />
<property name="rhq.ds.type-mapping"
value="${rhq.ds.type-mapping}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/JBossOSGi/pom.xml b/modules/plugins/JBossOSGi/pom.xml
index 1033830..0abd4b2 100644
--- a/modules/plugins/JBossOSGi/pom.xml
+++ b/modules/plugins/JBossOSGi/pom.xml
@@ -90,13 +90,13 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir
dir="${rhq.deploymentDir}"/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -107,7 +107,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
@@ -121,7 +121,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -132,12 +132,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Deleting
${deployment.file}...</echo>
<delete
file="${deployment.file}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -171,7 +171,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -191,7 +191,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -201,7 +201,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -222,7 +222,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/aliases/pom.xml b/modules/plugins/aliases/pom.xml
index 24cbe04..17cd506 100644
--- a/modules/plugins/aliases/pom.xml
+++ b/modules/plugins/aliases/pom.xml
@@ -66,7 +66,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -137,7 +137,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -203,12 +203,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -219,7 +219,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -227,7 +227,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -238,11 +238,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -277,7 +277,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -297,7 +297,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -307,7 +307,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -328,7 +328,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/ant-bundle/pom.xml b/modules/plugins/ant-bundle/pom.xml
index a7bb554..35bad6b 100644
--- a/modules/plugins/ant-bundle/pom.xml
+++ b/modules/plugins/ant-bundle/pom.xml
@@ -104,7 +104,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property
name="settings.localRepository" location="${user.home}/.m2/repository"
/>
<mkdir dir="target/itest" />
@@ -135,7 +135,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -205,12 +205,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -221,7 +221,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -231,7 +231,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -242,11 +242,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -281,7 +281,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -301,7 +301,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -311,7 +311,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -332,7 +332,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/apache/pom.xml b/modules/plugins/apache/pom.xml
index ca40f59..92b0521 100644
--- a/modules/plugins/apache/pom.xml
+++ b/modules/plugins/apache/pom.xml
@@ -125,7 +125,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -200,7 +200,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -264,12 +264,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -280,7 +280,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -288,7 +288,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -299,11 +299,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -338,7 +338,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -358,7 +358,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -368,7 +368,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -389,7 +389,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 92aa5c2..b770b07 100644
--- a/modules/plugins/augeas/pom.xml
+++ b/modules/plugins/augeas/pom.xml
@@ -133,12 +133,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -149,7 +149,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -157,7 +157,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -168,11 +168,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -230,7 +230,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -250,7 +250,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -260,7 +260,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -281,7 +281,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/byteman/pom.xml b/modules/plugins/byteman/pom.xml
index 13140d1..c6fbfed 100644
--- a/modules/plugins/byteman/pom.xml
+++ b/modules/plugins/byteman/pom.xml
@@ -76,7 +76,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -107,7 +107,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -174,12 +174,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -190,7 +190,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -198,7 +198,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -209,11 +209,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -247,7 +247,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -267,7 +267,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -277,7 +277,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -298,7 +298,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/cobbler/pom.xml b/modules/plugins/cobbler/pom.xml
index 2d7604e..840b4b6 100644
--- a/modules/plugins/cobbler/pom.xml
+++ b/modules/plugins/cobbler/pom.xml
@@ -71,7 +71,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -142,7 +142,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -208,12 +208,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -224,7 +224,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -232,7 +232,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -243,11 +243,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -302,7 +302,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -322,7 +322,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -332,7 +332,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -353,7 +353,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/cron/pom.xml b/modules/plugins/cron/pom.xml
index f1022b4..fa4f7d3 100644
--- a/modules/plugins/cron/pom.xml
+++ b/modules/plugins/cron/pom.xml
@@ -60,7 +60,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -131,7 +131,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -197,12 +197,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -213,7 +213,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -221,7 +221,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -232,11 +232,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -270,7 +270,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -290,7 +290,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -300,7 +300,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -321,7 +321,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/database/pom.xml b/modules/plugins/database/pom.xml
index 27c86f7..d4da519 100644
--- a/modules/plugins/database/pom.xml
+++ b/modules/plugins/database/pom.xml
@@ -41,12 +41,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -57,7 +57,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -65,7 +65,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -76,11 +76,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -114,7 +114,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -134,7 +134,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -144,7 +144,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -165,7 +165,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/filetemplate-bundle/pom.xml
b/modules/plugins/filetemplate-bundle/pom.xml
index d7c92c7..8c0a155 100644
--- a/modules/plugins/filetemplate-bundle/pom.xml
+++ b/modules/plugins/filetemplate-bundle/pom.xml
@@ -85,7 +85,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -116,7 +116,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -183,12 +183,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -199,7 +199,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -207,7 +207,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,11 +218,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -256,7 +256,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -276,7 +276,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -286,7 +286,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -307,7 +307,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/grub/pom.xml b/modules/plugins/grub/pom.xml
index 94dc1d4..5c56712 100644
--- a/modules/plugins/grub/pom.xml
+++ b/modules/plugins/grub/pom.xml
@@ -60,7 +60,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -128,7 +128,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -194,12 +194,12 @@
<id>deploy</id>
<!--<phase>compile</phase>-->
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -210,7 +210,7 @@
<id>deploy-jar-meta-inf</id>
<!--<phase>package</phase>-->
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -218,7 +218,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -229,11 +229,11 @@
<id>undeploy</id>
<!--<phase>clean</phase>-->
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -267,7 +267,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -287,7 +287,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -297,7 +297,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -318,7 +318,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/hadoop/pom.xml b/modules/plugins/hadoop/pom.xml
index e393e1a..7aae62d 100644
--- a/modules/plugins/hadoop/pom.xml
+++ b/modules/plugins/hadoop/pom.xml
@@ -50,12 +50,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -66,7 +66,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -76,7 +76,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -87,11 +87,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -126,7 +126,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -146,7 +146,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -156,7 +156,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -177,7 +177,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/hardware/pom.xml b/modules/plugins/hardware/pom.xml
index a922967..5b17f47 100644
--- a/modules/plugins/hardware/pom.xml
+++ b/modules/plugins/hardware/pom.xml
@@ -92,7 +92,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -112,7 +112,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -122,7 +122,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -143,7 +143,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/hibernate/pom.xml b/modules/plugins/hibernate/pom.xml
index 5e62e6b..e7a1349 100644
--- a/modules/plugins/hibernate/pom.xml
+++ b/modules/plugins/hibernate/pom.xml
@@ -75,7 +75,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -109,7 +109,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -176,12 +176,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -192,7 +192,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -200,7 +200,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -211,11 +211,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -249,7 +249,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -269,7 +269,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -279,7 +279,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -300,7 +300,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/hosts/pom.xml b/modules/plugins/hosts/pom.xml
index 46417ee..4794d78 100644
--- a/modules/plugins/hosts/pom.xml
+++ b/modules/plugins/hosts/pom.xml
@@ -67,7 +67,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -138,7 +138,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -204,12 +204,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -220,7 +220,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -228,7 +228,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -239,11 +239,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -277,7 +277,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -297,7 +297,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -307,7 +307,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -328,7 +328,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/hudson/pom.xml b/modules/plugins/hudson/pom.xml
index 47747e5..e50de4e 100644
--- a/modules/plugins/hudson/pom.xml
+++ b/modules/plugins/hudson/pom.xml
@@ -97,7 +97,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -117,7 +117,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -127,7 +127,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -148,7 +148,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/iis/pom.xml b/modules/plugins/iis/pom.xml
index 62fa324..60c3f2c 100644
--- a/modules/plugins/iis/pom.xml
+++ b/modules/plugins/iis/pom.xml
@@ -34,7 +34,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -65,7 +65,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -132,12 +132,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -148,7 +148,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -156,7 +156,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -167,11 +167,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -205,7 +205,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -225,7 +225,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -235,7 +235,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -256,7 +256,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/iptables/pom.xml b/modules/plugins/iptables/pom.xml
index afcd92f..d6eeff3 100644
--- a/modules/plugins/iptables/pom.xml
+++ b/modules/plugins/iptables/pom.xml
@@ -48,7 +48,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...
</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
@@ -80,7 +80,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -149,12 +149,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -165,7 +165,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -173,7 +173,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -184,11 +184,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/irc/pom.xml b/modules/plugins/irc/pom.xml
index 65a7d8f..0750d4b 100644
--- a/modules/plugins/irc/pom.xml
+++ b/modules/plugins/irc/pom.xml
@@ -73,12 +73,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -89,7 +89,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -99,7 +99,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -110,11 +110,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -149,7 +149,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -169,7 +169,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -179,7 +179,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -200,7 +200,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jboss-as-5/pom.xml b/modules/plugins/jboss-as-5/pom.xml
index f23bc01..8ca5f8a 100644
--- a/modules/plugins/jboss-as-5/pom.xml
+++ b/modules/plugins/jboss-as-5/pom.xml
@@ -279,7 +279,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository"/>
@@ -316,7 +316,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -599,13 +599,13 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -616,7 +616,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
@@ -630,7 +630,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -641,12 +641,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -681,7 +681,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura"/>
<mkdir dir="target/cobertura/backup"/>
@@ -705,7 +705,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -715,7 +715,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties"/>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura"/>
@@ -738,7 +738,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 425d85b..f630059 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -624,12 +624,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -640,7 +640,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
@@ -652,7 +652,7 @@
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -663,11 +663,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jboss-as/pom.xml b/modules/plugins/jboss-as/pom.xml
index aaeca54..866838e 100644
--- a/modules/plugins/jboss-as/pom.xml
+++ b/modules/plugins/jboss-as/pom.xml
@@ -203,7 +203,7 @@
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -236,7 +236,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -302,12 +302,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -318,7 +318,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -326,7 +326,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -337,11 +337,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -375,7 +375,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -395,7 +395,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -405,7 +405,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -426,7 +426,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jboss-cache-v3/pom.xml
b/modules/plugins/jboss-cache-v3/pom.xml
index 7f88567..1519908 100644
--- a/modules/plugins/jboss-cache-v3/pom.xml
+++ b/modules/plugins/jboss-cache-v3/pom.xml
@@ -322,7 +322,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin
dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -355,7 +355,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -441,12 +441,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -457,7 +457,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -465,7 +465,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -476,11 +476,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -514,7 +514,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -534,7 +534,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -544,7 +544,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -565,7 +565,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jboss-cache/pom.xml b/modules/plugins/jboss-cache/pom.xml
index f266552..1079417 100644
--- a/modules/plugins/jboss-cache/pom.xml
+++ b/modules/plugins/jboss-cache/pom.xml
@@ -65,7 +65,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -99,7 +99,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -166,12 +166,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -182,7 +182,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -190,7 +190,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -201,11 +201,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -239,7 +239,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -259,7 +259,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -269,7 +269,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -290,7 +290,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jdbctrace/pom.xml b/modules/plugins/jdbctrace/pom.xml
index 9f1e210..4d6b14a 100644
--- a/modules/plugins/jdbctrace/pom.xml
+++ b/modules/plugins/jdbctrace/pom.xml
@@ -41,14 +41,14 @@
<id>Package helper jar</id>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<echo>Preparing the internal byteman helper jar to be
installed in byteman classpath</echo>
<mkdir dir="${project.build.outputDirectory}/helper"
/>
<jar
destfile="${project.build.outputDirectory}/helper/rhq-jdbctrace-plugin-helper.jar">
<fileset dir="${project.build.outputDirectory}"
includes="**/org/rhq/plugins/jdbctrace/helper/*.class"/>
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -106,7 +106,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -137,7 +137,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -204,12 +204,12 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -220,7 +220,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -228,7 +228,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -239,11 +239,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -277,7 +277,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -297,7 +297,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -307,7 +307,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -328,7 +328,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jira/pom.xml b/modules/plugins/jira/pom.xml
index b97bc8a..4839ea0 100644
--- a/modules/plugins/jira/pom.xml
+++ b/modules/plugins/jira/pom.xml
@@ -165,7 +165,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -196,7 +196,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -250,12 +250,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -266,7 +266,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
@@ -276,7 +276,7 @@
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -287,11 +287,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -325,7 +325,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -345,7 +345,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -355,7 +355,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -376,7 +376,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/jmx/pom.xml b/modules/plugins/jmx/pom.xml
index bba3095..c38a4d0 100644
--- a/modules/plugins/jmx/pom.xml
+++ b/modules/plugins/jmx/pom.xml
@@ -141,7 +141,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -172,7 +172,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -205,12 +205,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -221,7 +221,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -229,7 +229,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -240,11 +240,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -279,7 +279,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -299,7 +299,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -309,7 +309,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -330,7 +330,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/kickstart/pom.xml b/modules/plugins/kickstart/pom.xml
index d92b2ba..8ee8062 100644
--- a/modules/plugins/kickstart/pom.xml
+++ b/modules/plugins/kickstart/pom.xml
@@ -53,12 +53,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -68,7 +68,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -78,7 +78,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -88,11 +88,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -124,7 +124,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -144,7 +144,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -154,7 +154,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -175,7 +175,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/lsof/pom.xml b/modules/plugins/lsof/pom.xml
index 3c03009..d3d6b24 100644
--- a/modules/plugins/lsof/pom.xml
+++ b/modules/plugins/lsof/pom.xml
@@ -76,7 +76,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -107,7 +107,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -174,12 +174,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" update="true" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -190,7 +190,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -198,7 +198,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -209,11 +209,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -247,7 +247,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -267,7 +267,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -277,7 +277,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -298,7 +298,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/mod-cluster/pom.xml b/modules/plugins/mod-cluster/pom.xml
index dbb1e1c..11ef595 100644
--- a/modules/plugins/mod-cluster/pom.xml
+++ b/modules/plugins/mod-cluster/pom.xml
@@ -87,12 +87,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -103,7 +103,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -111,7 +111,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -122,11 +122,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -191,12 +191,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -207,7 +207,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -215,7 +215,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -226,11 +226,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/mysql/pom.xml b/modules/plugins/mysql/pom.xml
index 9c4572f..fb018ca 100644
--- a/modules/plugins/mysql/pom.xml
+++ b/modules/plugins/mysql/pom.xml
@@ -79,7 +79,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -111,7 +111,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -178,12 +178,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -194,7 +194,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -202,7 +202,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -213,11 +213,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -251,7 +251,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -271,7 +271,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -281,7 +281,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -302,7 +302,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/netservices/pom.xml b/modules/plugins/netservices/pom.xml
index dc68504..748cc07 100644
--- a/modules/plugins/netservices/pom.xml
+++ b/modules/plugins/netservices/pom.xml
@@ -89,7 +89,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -117,7 +117,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -183,12 +183,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -199,7 +199,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -207,7 +207,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,11 +218,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -256,7 +256,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -276,7 +276,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -286,7 +286,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -307,7 +307,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/nss/pom.xml b/modules/plugins/nss/pom.xml
index ce34157..e5e9534 100644
--- a/modules/plugins/nss/pom.xml
+++ b/modules/plugins/nss/pom.xml
@@ -38,12 +38,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -53,7 +53,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -65,7 +65,7 @@
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -75,11 +75,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -111,7 +111,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -131,7 +131,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -141,7 +141,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -162,7 +162,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/onewire/pom.xml b/modules/plugins/onewire/pom.xml
index b991c55..3595d8d 100644
--- a/modules/plugins/onewire/pom.xml
+++ b/modules/plugins/onewire/pom.xml
@@ -92,12 +92,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -108,7 +108,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -116,7 +116,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -127,11 +127,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -165,7 +165,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -185,7 +185,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -195,7 +195,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -216,7 +216,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/oracle/pom.xml b/modules/plugins/oracle/pom.xml
index 4245f28..60fdb03 100644
--- a/modules/plugins/oracle/pom.xml
+++ b/modules/plugins/oracle/pom.xml
@@ -92,12 +92,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -108,7 +108,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -118,7 +118,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -129,11 +129,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -219,7 +219,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -239,7 +239,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -249,7 +249,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -270,7 +270,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/pattern-generator/pom.xml
b/modules/plugins/pattern-generator/pom.xml
index 9549c47..28d63d4 100644
--- a/modules/plugins/pattern-generator/pom.xml
+++ b/modules/plugins/pattern-generator/pom.xml
@@ -50,12 +50,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -66,7 +66,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -76,7 +76,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -87,11 +87,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/platform/pom.xml b/modules/plugins/platform/pom.xml
index 57ce747..b098b14 100644
--- a/modules/plugins/platform/pom.xml
+++ b/modules/plugins/platform/pom.xml
@@ -37,7 +37,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -65,7 +65,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -131,12 +131,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -147,7 +147,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -155,7 +155,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -166,11 +166,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -204,7 +204,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -224,7 +224,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -234,7 +234,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -255,7 +255,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/postfix/pom.xml b/modules/plugins/postfix/pom.xml
index f58ad01..a40b63d 100644
--- a/modules/plugins/postfix/pom.xml
+++ b/modules/plugins/postfix/pom.xml
@@ -65,7 +65,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -136,7 +136,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -202,12 +202,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,7 +218,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -226,7 +226,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -237,11 +237,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -275,7 +275,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -295,7 +295,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -305,7 +305,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -326,7 +326,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/postgres/pom.xml b/modules/plugins/postgres/pom.xml
index 605e377..46c873e 100644
--- a/modules/plugins/postgres/pom.xml
+++ b/modules/plugins/postgres/pom.xml
@@ -78,7 +78,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -110,7 +110,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -177,12 +177,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -193,7 +193,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -201,7 +201,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -212,11 +212,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -250,7 +250,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -270,7 +270,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -280,7 +280,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -301,7 +301,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/raw-config-test/pom.xml
b/modules/plugins/raw-config-test/pom.xml
index 5a4abc6..5b023ba 100644
--- a/modules/plugins/raw-config-test/pom.xml
+++ b/modules/plugins/raw-config-test/pom.xml
@@ -148,12 +148,12 @@
<id>deploy</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/rhq-agent/pom.xml b/modules/plugins/rhq-agent/pom.xml
index 863acf0..46b0171 100644
--- a/modules/plugins/rhq-agent/pom.xml
+++ b/modules/plugins/rhq-agent/pom.xml
@@ -52,7 +52,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -85,7 +85,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -144,12 +144,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -160,7 +160,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -168,7 +168,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -179,11 +179,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -217,7 +217,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -237,7 +237,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -247,7 +247,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -268,7 +268,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/rhq-server/pom.xml b/modules/plugins/rhq-server/pom.xml
index 076e534..c3af4c6 100644
--- a/modules/plugins/rhq-server/pom.xml
+++ b/modules/plugins/rhq-server/pom.xml
@@ -77,7 +77,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -110,7 +110,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -175,12 +175,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -191,7 +191,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -199,7 +199,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -210,11 +210,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -248,7 +248,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -268,7 +268,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -278,7 +278,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -299,7 +299,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/samba/pom.xml b/modules/plugins/samba/pom.xml
index eae465a..0f7bd3d 100644
--- a/modules/plugins/samba/pom.xml
+++ b/modules/plugins/samba/pom.xml
@@ -65,7 +65,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -136,7 +136,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -202,12 +202,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -218,7 +218,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -226,7 +226,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -237,11 +237,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -275,7 +275,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -295,7 +295,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -305,7 +305,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -326,7 +326,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/script/pom.xml b/modules/plugins/script/pom.xml
index a9044b2..9a1370b 100644
--- a/modules/plugins/script/pom.xml
+++ b/modules/plugins/script/pom.xml
@@ -37,7 +37,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -65,7 +65,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -131,12 +131,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -147,7 +147,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -155,7 +155,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -166,11 +166,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -203,7 +203,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -223,7 +223,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -233,7 +233,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -254,7 +254,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/script2/pom.xml b/modules/plugins/script2/pom.xml
index 1202bd6..0c0bee5 100644
--- a/modules/plugins/script2/pom.xml
+++ b/modules/plugins/script2/pom.xml
@@ -104,12 +104,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -120,7 +120,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -130,7 +130,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -141,11 +141,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -180,7 +180,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -200,7 +200,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -210,7 +210,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -231,7 +231,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/services/pom.xml b/modules/plugins/services/pom.xml
index 256c63b..a484f18 100644
--- a/modules/plugins/services/pom.xml
+++ b/modules/plugins/services/pom.xml
@@ -46,7 +46,7 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir
dir="${project.build.outputDirectory}/lib"/>
<copy
todir="${project.build.outputDirectory}/lib">
<fileset
dir="/usr/share/java/dbus-java">
@@ -61,7 +61,7 @@
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -72,7 +72,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -82,7 +82,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -93,11 +93,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -131,7 +131,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
@@ -151,7 +151,7 @@
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -161,7 +161,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -182,7 +182,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete
file="target/classes/cobertura.properties"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/snmptrapd/pom.xml b/modules/plugins/snmptrapd/pom.xml
index 830338a..4f60a52 100644
--- a/modules/plugins/snmptrapd/pom.xml
+++ b/modules/plugins/snmptrapd/pom.xml
@@ -88,12 +88,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -104,7 +104,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -112,7 +112,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -123,11 +123,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -161,7 +161,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -181,7 +181,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -191,7 +191,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -212,7 +212,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/sshd/pom.xml b/modules/plugins/sshd/pom.xml
index c04bf17..c3db44f 100644
--- a/modules/plugins/sshd/pom.xml
+++ b/modules/plugins/sshd/pom.xml
@@ -61,7 +61,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -128,7 +128,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -194,12 +194,12 @@
<id>deploy</id>
<!--<phase>compile</phase>-->
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -210,7 +210,7 @@
<id>deploy-jar-meta-inf</id>
<!--<phase>package</phase>-->
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -218,7 +218,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -229,11 +229,11 @@
<id>undeploy</id>
<!--<phase>clean</phase>-->
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -267,7 +267,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -287,7 +287,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -297,7 +297,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -318,7 +318,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/sudoers/pom.xml b/modules/plugins/sudoers/pom.xml
index 549b70a..4aed11b 100644
--- a/modules/plugins/sudoers/pom.xml
+++ b/modules/plugins/sudoers/pom.xml
@@ -54,7 +54,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement
location="${settings.localRepository}/ant-contrib/ant-contrib/${ant.contrib.version}/ant-contrib-${ant.contrib.version}.jar"
/>
@@ -126,7 +126,7 @@
</then>
</if>
<delete
dir="target/itest/lib/augeas-native-${augeas.zip.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -192,12 +192,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -208,7 +208,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -216,7 +216,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -227,11 +227,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -265,7 +265,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -285,7 +285,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -295,7 +295,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -316,7 +316,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/tomcat/pom.xml b/modules/plugins/tomcat/pom.xml
index 891869b..ca0576f 100644
--- a/modules/plugins/tomcat/pom.xml
+++ b/modules/plugins/tomcat/pom.xml
@@ -60,7 +60,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -92,7 +92,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -158,12 +158,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -174,7 +174,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -182,7 +182,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -193,11 +193,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -231,7 +231,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -251,7 +251,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -261,7 +261,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -282,7 +282,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/twitter/pom.xml b/modules/plugins/twitter/pom.xml
index f94068b..daf4755 100644
--- a/modules/plugins/twitter/pom.xml
+++ b/modules/plugins/twitter/pom.xml
@@ -48,12 +48,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}"
/>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating
${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -64,7 +64,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -74,7 +74,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -85,11 +85,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting
${deployment.file}...</echo>
<delete file="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -147,7 +147,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -167,7 +167,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -177,7 +177,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -198,7 +198,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/validate-all-plugins/pom.xml
b/modules/plugins/validate-all-plugins/pom.xml
index 2cad837..cff4b8b 100644
--- a/modules/plugins/validate-all-plugins/pom.xml
+++ b/modules/plugins/validate-all-plugins/pom.xml
@@ -23,7 +23,7 @@
<execution>
<phase>integration-test</phase>
<configuration>
- <tasks>
+ <target>
<property name="test.classpath"
refid="maven.test.classpath" />
<echo>Validating plugins...</echo>
<java
classname="org.rhq.core.pc.plugin.PluginValidator" failonerror="true"
fork="true">
@@ -65,7 +65,7 @@
<jvmarg line="-Xdebug
-Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y" />
-->
</java>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/plugins/virt/pom.xml b/modules/plugins/virt/pom.xml
index 9baf60d..e9fbb43 100644
--- a/modules/plugins/virt/pom.xml
+++ b/modules/plugins/virt/pom.xml
@@ -134,7 +134,7 @@
<execution>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<echo>Setting up plugin dependencies for
${project.artifactId}-${project.version}.jar...</echo>
<property name="settings.localRepository"
location="${user.home}/.m2/repository" />
<mkdir dir="target/itest" />
@@ -165,7 +165,7 @@
</fileset>
</move>
<delete
dir="target/itest/lib/hyperic-sigar-${sigar.version}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -219,12 +219,12 @@
<id>deploy</id>
<phase>compile</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="${rhq.deploymentDir}" />
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating ${deployment.file}...</echo>
<jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -235,7 +235,7 @@
<id>deploy-jar-meta-inf</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Updating META-INF dir in
${deployment.file}...</echo>
<unjar
src="${project.build.directory}/${project.build.finalName}.jar"
dest="${project.build.outputDirectory}">
@@ -243,7 +243,7 @@
</unjar>
<jar destfile="${deployment.file}"
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
update="true">
</jar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -254,11 +254,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.file"
location="${rhq.deploymentDir}/${project.build.finalName}.jar" />
<echo>*** Deleting ${deployment.file}...</echo>
<delete file="${deployment.file}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -293,7 +293,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -313,7 +313,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -323,7 +323,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -344,7 +344,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/test-utils/pom.xml b/modules/test-utils/pom.xml
index 9c3f1d7..ba3e023 100644
--- a/modules/test-utils/pom.xml
+++ b/modules/test-utils/pom.xml
@@ -127,7 +127,7 @@
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -147,7 +147,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -157,7 +157,7 @@
<id>cobertura-report</id>
<phase>post-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -178,7 +178,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/pom.xml b/pom.xml
index 6dd1430..3ae18ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -975,7 +975,7 @@
</goals>
<phase>generate-sources</phase>
<configuration>
- <tasks>
+ <target>
<mkdir dir="target" />
<tstamp>
@@ -989,7 +989,7 @@
<arg value="-n1"/>
</exec>
<echo file="target/build.properties"
append="true">buildNumber = ${buildNumber}${line.separator}</echo>
- </tasks>
+ </target>
</configuration>
</execution>
@@ -1000,10 +1000,10 @@
<goal>run</goal>
</goals>
<configuration>
- <tasks>
+ <target>
<echo level="debug">buildTime =
${buildTime}</echo>
<echo level="debug">buildNumber =
${buildNumber}</echo>
- </tasks>
+ </target>
</configuration>
</execution>
@@ -1012,11 +1012,11 @@
<phase>site</phase>
<inherited>false</inherited>
<configuration>
- <tasks>
+ <target>
<property name="apidocs.dir"
value="target/apidocs" />
<copy dir="modules/core/domain/target/site/apidocs"
todir="${apidocs.dir}/domain"/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -1193,9 +1193,9 @@
<phase>validate</phase>
<inherited>false</inherited>
<configuration>
- <tasks>
+ <target>
<echo>. !!!!!!! dev profile is active
!!!!!!!</echo>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
commit ea70331b162b55210268a7ffe79653d7c2d100c9
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 12:49:30 2012 -0400
eradicate all remaining usages of v1.1 of the antrun plugin
diff --git a/etc/apt/pom.xml b/etc/apt/pom.xml
index c36dc64..cbb8ae3 100644
--- a/etc/apt/pom.xml
+++ b/etc/apt/pom.xml
@@ -144,7 +144,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/etc/classloaders-test/plugin1/pom.xml
b/etc/classloaders-test/plugin1/pom.xml
index 405b9e7..b23d084 100644
--- a/etc/classloaders-test/plugin1/pom.xml
+++ b/etc/classloaders-test/plugin1/pom.xml
@@ -164,7 +164,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/etc/classloaders-test/plugin2/pom.xml
b/etc/classloaders-test/plugin2/pom.xml
index 8a79746..593d2ce 100644
--- a/etc/classloaders-test/plugin2/pom.xml
+++ b/etc/classloaders-test/plugin2/pom.xml
@@ -164,7 +164,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/etc/samples/perspectives/sample-perspective/perspective/pom.xml
b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
index d29d240..c72c419 100644
--- a/etc/samples/perspectives/sample-perspective/perspective/pom.xml
+++ b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
@@ -75,7 +75,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
@@ -117,7 +116,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/etc/samples/skeleton-plugin/pom.xml b/etc/samples/skeleton-plugin/pom.xml
index 668497a..f45b37e 100644
--- a/etc/samples/skeleton-plugin/pom.xml
+++ b/etc/samples/skeleton-plugin/pom.xml
@@ -165,7 +165,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/common/drift/pom.xml b/modules/common/drift/pom.xml
index 8f79012..8268ccf 100644
--- a/modules/common/drift/pom.xml
+++ b/modules/common/drift/pom.xml
@@ -43,7 +43,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/core/client-api/pom.xml b/modules/core/client-api/pom.xml
index 3452c98..bd022fb 100644
--- a/modules/core/client-api/pom.xml
+++ b/modules/core/client-api/pom.xml
@@ -139,7 +139,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/core/comm-api/pom.xml b/modules/core/comm-api/pom.xml
index 7449f9d..b71665b 100644
--- a/modules/core/comm-api/pom.xml
+++ b/modules/core/comm-api/pom.xml
@@ -34,7 +34,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index 127b0e6..ebe159a 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -325,7 +325,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/core/gui/pom.xml b/modules/core/gui/pom.xml
index 2af1cdb..0ed21ed 100644
--- a/modules/core/gui/pom.xml
+++ b/modules/core/gui/pom.xml
@@ -156,7 +156,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/core/util/pom.xml b/modules/core/util/pom.xml
index e0c51af..2dd2ef6 100644
--- a/modules/core/util/pom.xml
+++ b/modules/core/util/pom.xml
@@ -91,7 +91,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/agentupdate/pom.xml
b/modules/enterprise/agentupdate/pom.xml
index 12c9449..de2ef8d 100644
--- a/modules/enterprise/agentupdate/pom.xml
+++ b/modules/enterprise/agentupdate/pom.xml
@@ -157,7 +157,6 @@ rhq-agent.latest.build-number=${buildNumber}
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/enterprise/binding/pom.xml b/modules/enterprise/binding/pom.xml
index 7ca5ea1..7383d3a 100644
--- a/modules/enterprise/binding/pom.xml
+++ b/modules/enterprise/binding/pom.xml
@@ -232,7 +232,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/comm/pom.xml b/modules/enterprise/comm/pom.xml
index 833e7d2..2c6133e 100644
--- a/modules/enterprise/comm/pom.xml
+++ b/modules/enterprise/comm/pom.xml
@@ -180,7 +180,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/gui/content_http-war/pom.xml
b/modules/enterprise/gui/content_http-war/pom.xml
index a299477..5f86321 100644
--- a/modules/enterprise/gui/content_http-war/pom.xml
+++ b/modules/enterprise/gui/content_http-war/pom.xml
@@ -214,7 +214,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/gui/webdav-war/pom.xml
b/modules/enterprise/gui/webdav-war/pom.xml
index ac519a9..b85eeef 100644
--- a/modules/enterprise/gui/webdav-war/pom.xml
+++ b/modules/enterprise/gui/webdav-war/pom.xml
@@ -207,7 +207,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/client-api/pom.xml
b/modules/enterprise/server/client-api/pom.xml
index 257e016..9a2f24f 100644
--- a/modules/enterprise/server/client-api/pom.xml
+++ b/modules/enterprise/server/client-api/pom.xml
@@ -65,7 +65,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/container-lib/pom.xml
b/modules/enterprise/server/container-lib/pom.xml
index 99a3073..197341b 100644
--- a/modules/enterprise/server/container-lib/pom.xml
+++ b/modules/enterprise/server/container-lib/pom.xml
@@ -63,7 +63,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/container/pom.xml
b/modules/enterprise/server/container/pom.xml
index 0ce9d26..2f0dcbd 100644
--- a/modules/enterprise/server/container/pom.xml
+++ b/modules/enterprise/server/container/pom.xml
@@ -302,7 +302,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index c32c8d1..ef539f6 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -839,7 +839,6 @@ Build-OS-Version=${os.version}
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-cli/pom.xml
b/modules/enterprise/server/plugins/alert-cli/pom.xml
index 9d2b9e2..ad59517 100644
--- a/modules/enterprise/server/plugins/alert-cli/pom.xml
+++ b/modules/enterprise/server/plugins/alert-cli/pom.xml
@@ -52,7 +52,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-email/pom.xml
b/modules/enterprise/server/plugins/alert-email/pom.xml
index e299e5b..419c20a 100644
--- a/modules/enterprise/server/plugins/alert-email/pom.xml
+++ b/modules/enterprise/server/plugins/alert-email/pom.xml
@@ -58,7 +58,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-log4j/pom.xml
b/modules/enterprise/server/plugins/alert-log4j/pom.xml
index 906ab2b..9884b3d 100644
--- a/modules/enterprise/server/plugins/alert-log4j/pom.xml
+++ b/modules/enterprise/server/plugins/alert-log4j/pom.xml
@@ -45,7 +45,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
index cd07626..9a5ea88 100644
--- a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
+++ b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
@@ -45,7 +45,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-operations/pom.xml
b/modules/enterprise/server/plugins/alert-operations/pom.xml
index 6c4e434..c28cee4 100644
--- a/modules/enterprise/server/plugins/alert-operations/pom.xml
+++ b/modules/enterprise/server/plugins/alert-operations/pom.xml
@@ -120,7 +120,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml
b/modules/enterprise/server/plugins/alert-roles/pom.xml
index 195710e..63375ca 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -72,7 +72,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml
b/modules/enterprise/server/plugins/alert-subject/pom.xml
index 2aa0c0a..f1d7420 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -46,7 +46,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/disk/pom.xml
b/modules/enterprise/server/plugins/disk/pom.xml
index dcc23df..9252abd 100644
--- a/modules/enterprise/server/plugins/disk/pom.xml
+++ b/modules/enterprise/server/plugins/disk/pom.xml
@@ -72,7 +72,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/drift-rhq/pom.xml
b/modules/enterprise/server/plugins/drift-rhq/pom.xml
index f59df6d..e06625c 100644
--- a/modules/enterprise/server/plugins/drift-rhq/pom.xml
+++ b/modules/enterprise/server/plugins/drift-rhq/pom.xml
@@ -86,7 +86,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/groovy-script/pom.xml
b/modules/enterprise/server/plugins/groovy-script/pom.xml
index 082efa0..0e26344 100644
--- a/modules/enterprise/server/plugins/groovy-script/pom.xml
+++ b/modules/enterprise/server/plugins/groovy-script/pom.xml
@@ -149,7 +149,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/jboss-software/pom.xml
b/modules/enterprise/server/plugins/jboss-software/pom.xml
index aad2fac..91920bf 100644
--- a/modules/enterprise/server/plugins/jboss-software/pom.xml
+++ b/modules/enterprise/server/plugins/jboss-software/pom.xml
@@ -76,7 +76,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/packagetype-cli/pom.xml
b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
index 230dd56..d78df65 100644
--- a/modules/enterprise/server/plugins/packagetype-cli/pom.xml
+++ b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
@@ -46,7 +46,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
index d4536b6..39da337 100644
--- a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
@@ -34,7 +34,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
index 51d3e6c..6ce8667 100644
--- a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
@@ -47,7 +47,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
@@ -89,7 +88,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/url/pom.xml
b/modules/enterprise/server/plugins/url/pom.xml
index 39b0945..26e21c6 100644
--- a/modules/enterprise/server/plugins/url/pom.xml
+++ b/modules/enterprise/server/plugins/url/pom.xml
@@ -81,7 +81,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/plugins/yum/pom.xml
b/modules/enterprise/server/plugins/yum/pom.xml
index 52b7390..f9cd80a 100644
--- a/modules/enterprise/server/plugins/yum/pom.xml
+++ b/modules/enterprise/server/plugins/yum/pom.xml
@@ -66,7 +66,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/safe-invoker/pom.xml
b/modules/enterprise/server/safe-invoker/pom.xml
index 2e9d5b9..2607be4 100644
--- a/modules/enterprise/server/safe-invoker/pom.xml
+++ b/modules/enterprise/server/safe-invoker/pom.xml
@@ -56,7 +56,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/sars/agent-sar/pom.xml
b/modules/enterprise/server/sars/agent-sar/pom.xml
index 2c7d4e4..e2ae626 100644
--- a/modules/enterprise/server/sars/agent-sar/pom.xml
+++ b/modules/enterprise/server/sars/agent-sar/pom.xml
@@ -155,7 +155,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/enterprise/server/xml-schemas/pom.xml
b/modules/enterprise/server/xml-schemas/pom.xml
index a0ac998..e9cb460 100644
--- a/modules/enterprise/server/xml-schemas/pom.xml
+++ b/modules/enterprise/server/xml-schemas/pom.xml
@@ -154,7 +154,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/helpers/rtfilter/pom.xml b/modules/helpers/rtfilter/pom.xml
index 62442ea..e94372a 100644
--- a/modules/helpers/rtfilter/pom.xml
+++ b/modules/helpers/rtfilter/pom.xml
@@ -98,7 +98,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/jopr/dist/agent/pom.xml b/modules/jopr/dist/agent/pom.xml
index 5a3cd70..fa46fc7 100644
--- a/modules/jopr/dist/agent/pom.xml
+++ b/modules/jopr/dist/agent/pom.xml
@@ -47,7 +47,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/aliases/pom.xml b/modules/plugins/aliases/pom.xml
index 8407065..24cbe04 100644
--- a/modules/plugins/aliases/pom.xml
+++ b/modules/plugins/aliases/pom.xml
@@ -197,7 +197,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/cron/pom.xml b/modules/plugins/cron/pom.xml
index ba16523..f1022b4 100644
--- a/modules/plugins/cron/pom.xml
+++ b/modules/plugins/cron/pom.xml
@@ -191,7 +191,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/database/pom.xml b/modules/plugins/database/pom.xml
index 87a8a37..27c86f7 100644
--- a/modules/plugins/database/pom.xml
+++ b/modules/plugins/database/pom.xml
@@ -35,7 +35,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/grub/pom.xml b/modules/plugins/grub/pom.xml
index 8d94bd2..94dc1d4 100644
--- a/modules/plugins/grub/pom.xml
+++ b/modules/plugins/grub/pom.xml
@@ -188,7 +188,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/hadoop/pom.xml b/modules/plugins/hadoop/pom.xml
index 99fd26f..e393e1a 100644
--- a/modules/plugins/hadoop/pom.xml
+++ b/modules/plugins/hadoop/pom.xml
@@ -44,7 +44,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/hosts/pom.xml b/modules/plugins/hosts/pom.xml
index 17d766f..46417ee 100644
--- a/modules/plugins/hosts/pom.xml
+++ b/modules/plugins/hosts/pom.xml
@@ -198,7 +198,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/iis/pom.xml b/modules/plugins/iis/pom.xml
index 03ab909..62fa324 100644
--- a/modules/plugins/iis/pom.xml
+++ b/modules/plugins/iis/pom.xml
@@ -126,7 +126,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/iptables/pom.xml b/modules/plugins/iptables/pom.xml
index 9a9c1c4..afcd92f 100644
--- a/modules/plugins/iptables/pom.xml
+++ b/modules/plugins/iptables/pom.xml
@@ -143,7 +143,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/jboss-as/pom.xml b/modules/plugins/jboss-as/pom.xml
index b095b92..aaeca54 100644
--- a/modules/plugins/jboss-as/pom.xml
+++ b/modules/plugins/jboss-as/pom.xml
@@ -296,7 +296,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/jboss-cache/pom.xml b/modules/plugins/jboss-cache/pom.xml
index 4c8588c..f266552 100644
--- a/modules/plugins/jboss-cache/pom.xml
+++ b/modules/plugins/jboss-cache/pom.xml
@@ -160,7 +160,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/kickstart/pom.xml b/modules/plugins/kickstart/pom.xml
index b724cb1..d92b2ba 100644
--- a/modules/plugins/kickstart/pom.xml
+++ b/modules/plugins/kickstart/pom.xml
@@ -48,7 +48,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/plugins/mod-cluster/pom.xml b/modules/plugins/mod-cluster/pom.xml
index 6fb87ee..dbb1e1c 100644
--- a/modules/plugins/mod-cluster/pom.xml
+++ b/modules/plugins/mod-cluster/pom.xml
@@ -186,7 +186,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/plugins/nss/pom.xml b/modules/plugins/nss/pom.xml
index 583c9cb..ce34157 100644
--- a/modules/plugins/nss/pom.xml
+++ b/modules/plugins/nss/pom.xml
@@ -33,7 +33,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/plugins/onewire/pom.xml b/modules/plugins/onewire/pom.xml
index 8c2628b..b991c55 100644
--- a/modules/plugins/onewire/pom.xml
+++ b/modules/plugins/onewire/pom.xml
@@ -86,7 +86,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/pattern-generator/pom.xml
b/modules/plugins/pattern-generator/pom.xml
index e8576bb..9549c47 100644
--- a/modules/plugins/pattern-generator/pom.xml
+++ b/modules/plugins/pattern-generator/pom.xml
@@ -44,7 +44,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/platform/pom.xml b/modules/plugins/platform/pom.xml
index c631b00..57ce747 100644
--- a/modules/plugins/platform/pom.xml
+++ b/modules/plugins/platform/pom.xml
@@ -125,7 +125,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/postfix/pom.xml b/modules/plugins/postfix/pom.xml
index 741ead3..f58ad01 100644
--- a/modules/plugins/postfix/pom.xml
+++ b/modules/plugins/postfix/pom.xml
@@ -196,7 +196,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/rhq-agent/pom.xml b/modules/plugins/rhq-agent/pom.xml
index c152355..863acf0 100644
--- a/modules/plugins/rhq-agent/pom.xml
+++ b/modules/plugins/rhq-agent/pom.xml
@@ -138,7 +138,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/samba/pom.xml b/modules/plugins/samba/pom.xml
index 1234a55..eae465a 100644
--- a/modules/plugins/samba/pom.xml
+++ b/modules/plugins/samba/pom.xml
@@ -196,7 +196,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/script/pom.xml b/modules/plugins/script/pom.xml
index 75b856b..a9044b2 100644
--- a/modules/plugins/script/pom.xml
+++ b/modules/plugins/script/pom.xml
@@ -125,7 +125,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/services/pom.xml b/modules/plugins/services/pom.xml
index 9c62d09..256c63b 100644
--- a/modules/plugins/services/pom.xml
+++ b/modules/plugins/services/pom.xml
@@ -41,7 +41,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
diff --git a/modules/plugins/sshd/pom.xml b/modules/plugins/sshd/pom.xml
index 6d64760..c04bf17 100644
--- a/modules/plugins/sshd/pom.xml
+++ b/modules/plugins/sshd/pom.xml
@@ -188,7 +188,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/sudoers/pom.xml b/modules/plugins/sudoers/pom.xml
index bdd8f11..549b70a 100644
--- a/modules/plugins/sudoers/pom.xml
+++ b/modules/plugins/sudoers/pom.xml
@@ -186,7 +186,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
diff --git a/modules/plugins/tomcat/pom.xml b/modules/plugins/tomcat/pom.xml
index 9b30ee3..891869b 100644
--- a/modules/plugins/tomcat/pom.xml
+++ b/modules/plugins/tomcat/pom.xml
@@ -152,7 +152,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
commit f708e6d36d0b586cc80baee72debb3773be931a0
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 12:23:18 2012 -0400
fix "Failed to create assembly: Error creating assembly archive rhq-client: You
must set at least one file." build error
diff --git a/modules/enterprise/remoting/cli/pom.xml
b/modules/enterprise/remoting/cli/pom.xml
index b5a7461..ae77f1e 100644
--- a/modules/enterprise/remoting/cli/pom.xml
+++ b/modules/enterprise/remoting/cli/pom.xml
@@ -272,7 +272,6 @@
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
<id>deploy</id>
commit f6a50016f8ac02096bb90cd50d7b8ccbcacc9d27
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 23 18:07:05 2012 +0200
BZ 788487 - Fix issues with manual add. Also prevent some operations to be run, as we
can's start processes on machines without agents.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index 568505c..af53314 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -452,6 +452,7 @@ public abstract class BaseProcessDiscovery implements
ResourceDiscoveryComponent
String description = buildDefaultResourceDescription(hostPort, productType);
pluginConfig.put(new PropertySimple("manuallyAdded", true));
+ pluginConfig.put(new
PropertySimple("productType",productType.name()));
DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(context.getResourceType(), key, name,
version, description, pluginConfig, null);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 3aaa542..836393e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -126,12 +126,15 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
private void validateServerAttributes() throws InvalidPluginConfigurationException {
// Validate the base dir (e.g. /opt/jboss-as-7.1.1.Final/standalone).
File runtimeBaseDir;
- File baseDir;
+ File baseDir=null;
try {
String runtimeBaseDirString = readAttribute(getEnvironmentAddress(),
getBaseDirAttributeName());
// Canonicalize both paths before comparing them!
runtimeBaseDir = new File(runtimeBaseDirString).getCanonicalFile();
- baseDir = serverPluginConfig.getBaseDir().getCanonicalFile();
+ File baseDirTmp = serverPluginConfig.getBaseDir();
+ if (baseDirTmp != null) { // may be null for manually added servers
+ baseDir = baseDirTmp.getCanonicalFile();
+ }
} catch (Exception e) {
runtimeBaseDir = null;
baseDir = null;
@@ -209,6 +212,12 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
* @throws Exception If anything goes wrong
*/
protected OperationResult restartServer(Configuration parameters) throws Exception {
+
+ OperationResult operationResult = new OperationResult();
+ if (isManuallyAddedServer(operationResult, "Restarting")) {
+ return operationResult;
+ }
+
List<String> errors = validateStartScriptPluginConfigProps();
if (!errors.isEmpty()) {
OperationResult result = new OperationResult();
@@ -256,6 +265,9 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
*/
protected OperationResult startServer() {
OperationResult operationResult = new OperationResult();
+ if (isManuallyAddedServer(operationResult, "Starting")) {
+ return operationResult;
+ }
List<String> errors = validateStartScriptPluginConfigProps();
if (!errors.isEmpty()) {
@@ -319,6 +331,14 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
return operationResult;
}
+ private boolean isManuallyAddedServer(OperationResult operationResult, String
operation) {
+ if (pluginConfiguration.get("manuallyAdded")!=null) {
+ operationResult.setErrorMessage(operation + " is not enabled for
manually added servers");
+ return true;
+ }
+ return false;
+ }
+
private void setErrorMessage(OperationResult operationResult, List<String>
errors) {
StringBuilder buffer = new StringBuilder("This Resource's connection
properties contain errors: ");
for (int i = 0, errorsSize = errors.size(); i < errorsSize; i++) {
commit 425bc3425a9cda9743cf0435b90def1748127be1
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Wed May 23 14:52:27 2012 +0200
Complete localization for Czech language
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index c1db8e5..1260cee 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -69,7 +69,7 @@
should each have two corresponding message bundle properties files under
src/main/resources/org/rhq/enterprise/gui/coregui/client/. For example, the
"ja" locale has
Messages_ja.properties and MessageConstants_ja.properties. -->
- <gwt.locale>en,de,ja,pt,zh,ru</gwt.locale>
+ <gwt.locale>en,de,ja,pt,zh,ru,cs</gwt.locale>
<!-- The locale that GWT should fallback to if the user specified an
unsupported locale via the 'locale' query
string parameter. -->
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 1f20fb7..548b8fa 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1,6 +1,6 @@
# suppress inspection "UnusedProperty" for whole file
#
-# RHQ GUI i18n Messages - Locale: DE
+# RHQ GUI i18n Messages - Locale: CS
#
# This file should be UTF-8 encoded.
#
@@ -83,7 +83,7 @@ common_label_week = týden
common_label_yesterday = včera
common_msg_areYouSure = Jste si jistí?
common_msg_asyncTimeout = {0}. Stalo se to, protože serveru trvalo příliš dlouho k
vyřízení požadavku. Prosím, vemte na vědomí, že server může stále vyřizovat Váš požadavek.
Můžete zkontrolovat logy serveru, zda nenajdete něco neobvyklého.
-common_msg_changeAutoDetected = Change auto-detected???
+common_msg_changeAutoDetected = Změnit automaticky detekované
common_msg_deleteConfirm = Jste si jistí, že chcete smazat # vybraných {0}?
common_msg_emphasizedNotePrefix = POZNÁMKA:
common_msg_loading = Nahrávám...
@@ -110,7 +110,7 @@ common_title_add_graph_to_view = Přidat graf do monitorovacího
pohledu
common_title_add_portlet = Přidat portlet
common_title_address = Adresa
common_title_alerts = Výstrahy
-common_title_alerts_range = Alert Range ???
+common_title_alerts_range = Rozsah výstrahy
common_title_ancestry = Původ
common_title_availability = Dostupnost
common_title_available_resources = Dostupné zdroje
@@ -272,7 +272,7 @@ common_unit_minute = minuta
common_unit_minutes = minut
common_unit_months = měsíců
common_unit_seconds = sekund
-common_unit_times = časy???
+common_unit_times = krát
common_unit_weeks = týdny
common_unit_years = roky
common_val_for = pro
@@ -287,7 +287,7 @@ common_val_none = Žádný
common_val_nth = {0}.
common_val_yes = Ano
common_val_yes_lower = ano
-dataSource_ContentRepoTree_error_load = Chyba pri načítání repozitářů
+dataSource_ContentRepoTree_error_load = Chyba při načítání repozitářů
dataSource_ContentRepoTree_field_parentId = ID rodiče
dataSource_bundle_loadFailed = Nepodařilo se načíst data balíku
dataSource_configurationHistory_clickToSeeError = Klikněte 2x abyste viděli chybovou
zprávu...
@@ -331,7 +331,7 @@ dataSource_recentOperations_field_resource = Zdroj
dataSource_recentOperations_field_status = Status
dataSource_resourceErrors_clickStatusIcon = Klikněte na ikonku pro více detailů
dataSource_resourceErrors_deleteFailure = Nepodařilo se smazat chyby zdroje
-dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.\nÚspěšně bylo smazáno [{0}] chybových hlášení zdroje.
+dataSource_resourceErrors_deleteSuccess = Úspěšně bylo smazáno [{0}] chybových hlášení
zdroje.
dataSource_resourceErrors_error_fetchFailure = Nepodařilo se nalézt chyby zdroje pro
zdroj w id [{0}].
dataSource_resourceErrors_field_errorType = Typ chyby
dataSource_resourceErrors_field_summary = Shrnutí
@@ -360,7 +360,7 @@ dataSource_schedules_disableSuccessful_full_resource = Byl zakázán
sběr [{0}]
dataSource_schedules_enableFailure_group = Nepodařilo se povolit sběr [{0}] měření pro
skupinu zdrojů s ID [{1}]. Měření: [{2}]
dataSource_schedules_enableFailure_resource = Nepodařilo se povolit sběr [{0}] měření pro
zdroj s ID [{1}]. Měření: [{2}]
dataSource_schedules_enableSuccessful_concise = Byl povolen sběr [{0}] měření
-dataSource_schedules_enableSuccessful_full_group = Byl povolen sběr [{0}] měření pro
sklupinu zdrojů s ID [{1}]. Měření: [{2}]
+dataSource_schedules_enableSuccessful_full_group = Byl povolen sběr [{0}] měření pro
skupinu zdrojů s ID [{1}]. Měření: [{2}]
dataSource_schedules_enableSuccessful_full_resource = Byl povolen sběr [{0}] měření pro
zdroj s ID [{1}]. Měření: [{2}]
dataSource_schedules_field_resourceGroupId = ID skupiny
dataSource_schedules_loadFailed = Nepodařilo se načíst rozvrhy metrik
@@ -433,7 +433,7 @@ view_adminConfig_downloads = Staženo
view_adminConfig_driftDefTemplates = Šablony pro definice driftu
view_adminConfig_metricTemplates = Šablony pro sběr metrik
view_adminConfig_serverPlugins = Zásuvné moduly serveru
-view_adminConfig_systemSettings = System Settings\nSystémová nastavení
+view_adminConfig_systemSettings = Systémová nastavení
view_adminContent_contentSources = Zdroje obsahů
view_adminRoles_assignedGroups = Přiřazené skupiny zdrojů
view_adminRoles_assignedSubjects = Přiřazené subjekty
@@ -461,8 +461,8 @@ view_adminRoles_permissions_permDesc_manageInventory = má všechna
práva zdroj
view_adminRoles_permissions_permDesc_manageRepositories = může vytvářet, měnit, mazat
repozitáře jakýchkoli uživatelů (každý může vytvářet své repozitáře), může asociovat
zdroje obsahů s repozitáři
view_adminRoles_permissions_permDesc_manageSecurity = může vytvářet, měnit, mazat
uživatele a role - implikuje všechna ostatní povolení
view_adminRoles_permissions_permDesc_manageSettings = může modifikovat {0} serverovou
konfiguraci a provozovat jakékoli operace související se serverem
-view_adminRoles_permissions_permDesc_viewUsers = může zobrazovat ostatní uživatele s
výjímkou jejich přiřazených rolí
-view_adminRoles_permissions_permReadDesc_configure = zobrazí konfiguraci zdorje a
historii konfigurace zdroje
+view_adminRoles_permissions_permDesc_viewUsers = může zobrazovat ostatní uživatele s
výjimkou jejich přiřazených rolí
+view_adminRoles_permissions_permReadDesc_configure = zobrazí konfiguraci zdroje a
historii konfigurace zdroje
view_adminRoles_permissions_permReadDesc_control = (VÝCHOZÍ) zobrazí dostupné operace a
historii spouštění operací
view_adminRoles_permissions_permReadDesc_createChildResources = (VÝCHOZÍ) zobrazí
historii potomků zdroje
view_adminRoles_permissions_permReadDesc_deleteChildResources = (VÝCHOZÍ) zobrazí
historii mazání zdroje
@@ -481,7 +481,7 @@ view_adminRoles_permissions_permWriteDesc_manageAlerts = vytvořit,
měnit a maz
view_adminRoles_permissions_permWriteDesc_manageContent = přihlásit se k odběru obsahu,
instalovat a odinstalovat balíky
view_adminRoles_permissions_permWriteDesc_manageDrift = vytvořit, změnit a smazat
definici driftu
view_adminRoles_permissions_permWriteDesc_manageEvents = mazat události
-view_adminRoles_permissions_permWriteDesc_manageMeasurements = měnit rozvrhy smběru
metrik
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = měnit rozvrhy sběru
metrik
view_adminRoles_permissions_perm_configure = Konfigurovat
view_adminRoles_permissions_perm_control = Ovládání
view_adminRoles_permissions_perm_createChildResources = Vytvářet potomky zdrojů
@@ -497,7 +497,7 @@ view_adminRoles_permissions_perm_manageMeasurements = Spravovat
měření
view_adminRoles_permissions_perm_manageRepositories = Spravovat repozitáře
view_adminRoles_permissions_perm_manageSecurity = Spravovat bezpečnost
view_adminRoles_permissions_perm_manageSettings = Spravovat nastavení
-view_adminRoles_permissions_perm_viewUsers = Zobratit uživatelé
+view_adminRoles_permissions_perm_viewUsers = Zobrazit uživatelé
view_adminRoles_permissions_read = Číst:
view_adminRoles_permissions_readAccessImplied = Přístup pro čtení pro {0} je výchozí a
nemůže být zakázán.
view_adminRoles_permissions_resourcePermissions = Oprávnění zdroje
@@ -533,7 +533,7 @@ view_admin_configuration = Konfigurace
view_admin_content = Obsah
view_admin_downloads_agentDownload = Stáhnout agenta
view_admin_downloads_agent_buildNumber = Sestavení agenta
-view_admin_downloads_agent_help = ???<p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+##view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
view_admin_downloads_agent_link_label = Odkaz
view_admin_downloads_agent_link_value = Stáhnout agenta {0} ({1})
view_admin_downloads_agent_loadError = Nelze získat informace o verzi agenta
@@ -549,37 +549,37 @@ view_admin_downloads_cliAlertScripts_loadError = Nelze získat
informace o dostu
view_admin_downloads_cliAlertScripts_none = Žádné CLI výstrahové skripty nejsou dostupné
pro stažení
view_admin_downloads_cliDownload = Stáhnout klienta pro příkazovou řádku
view_admin_downloads_cli_buildNumber = CLI číslo sestavení
-##view_admin_downloads_cli_help = ???<p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
+##view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
view_admin_downloads_cli_link_label = Odkaz
view_admin_downloads_cli_link_value = Stáhnout CLI {0} ({1})
view_admin_downloads_cli_loadError = Nelze získat informace o verzi CLI
view_admin_downloads_cli_md5 = CLI MD5
view_admin_downloads_cli_version = CLI verze
view_admin_downloads_connectorsDownload = Stažení konektorů
-##view_admin_downloads_connectors_help = ???Connectors are software that is needed in
order for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
+##view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
view_admin_downloads_connectors_loadError = Nelze získat informace o konektorech
view_admin_downloads_connectors_none = Žádné konektory nejsou dostupné pro stažení
-##view_admin_landing = ???From this section, the {0} global settings can be administered.
This includes configuring security, setting up plugins, and managing {0} Servers and
Agents.
+##view_admin_landing = From this section, the {0} global settings can be administered.
This includes configuring security, setting up plugins, and managing {0} Servers and
Agents.
view_admin_measTemplates_updateExisting_title = Změnit existující rozvrhy
-##view_admin_measTemplates_updateExisting_tooltip = ???Check this box to update the
collection schedules for the selected metrics on all existing resources of this type. If
this is not checked, the template schedules will only be applied to new resources of this
type that are added to inventory in the future.
+##view_admin_measTemplates_updateExisting_tooltip = Check this box to update the
collection schedules for the selected metrics on all existing resources of this type. If
this is not checked, the template schedules will only be applied to new resources of this
type that are added to inventory in the future.
view_admin_plugins_agent = Agent
view_admin_plugins_agentDeleteConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do agenta budou
smazány:<br/>\n{0}<br/>\nJste si jisti, že je chcete smazat?
view_admin_plugins_agentDisableConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do agenta budou
zneplatněny:<br/>\n{0}<br/>\nJste si jisti, že je chcete zneplatnit?
view_admin_plugins_deletedAgentPlugins = Smazány zásuvné moduly agenta: {0}
-view_admin_plugins_deletedAgentPluginsFailure = Nepodažilo se smazat zásuvné moduly
agenta.
+view_admin_plugins_deletedAgentPluginsFailure = Nepodařilo se smazat zásuvné moduly
agenta.
view_admin_plugins_deployed = Nasazeno?
view_admin_plugins_disabledAgentPlugins = Zneplatněné zásuvné moduly agenta: {0}
-view_admin_plugins_disabledAgentPluginsFailure = Nepodažilo se zneplatnit zásuvné moduly
agenta.
+view_admin_plugins_disabledAgentPluginsFailure = Nepodařilo se zneplatnit zásuvné moduly
agenta.
view_admin_plugins_disabledServerPlugins = Zneplatněné zásuvné moduly serveru: {0}
-view_admin_plugins_disabledServerPluginsFailure = Nepodažilo se zneplatnit zásuvné moduly
serveru.
+view_admin_plugins_disabledServerPluginsFailure = Nepodařilo se zneplatnit zásuvné moduly
serveru.
view_admin_plugins_enabledAgentPlugins = Povolené zásuvné moduly agenta: {0}
-view_admin_plugins_enabledAgentPluginsFailure = Nepodažilo se povolit zásuvné moduly
agenta.
+view_admin_plugins_enabledAgentPluginsFailure = Nepodařilo se povolit zásuvné moduly
agenta.
view_admin_plugins_enabledServerPlugins = Povolené zásuvné moduly serveru: {0}
-view_admin_plugins_enabledServerPluginsFailure = Nepodažilo se povolit zásuvné moduly
serveru.
+view_admin_plugins_enabledServerPluginsFailure = Nepodařilo se povolit zásuvné moduly
serveru.
view_admin_plugins_hideDeleted = Skrýt smazané
view_admin_plugins_hideUndeployed = Skrýt nenasazené
view_admin_plugins_loadFailure = Nepodařilo se načíst data zásuvných modulů
-##view_admin_plugins_purgedAgentPlugins = ???Preparing to purge agent plugins {0}. This
may take a few minutes since all type definitions from the plugins must first be purged
from the system. The plugins will still be visible on this page until they have been
purged. Please note that you must not re-install the plugin while the purge is running,
otherwise failures will occur. Therefore, please wait before attempting to re-install the
plugin into the system until this purge is complete.
+##view_admin_plugins_purgedAgentPlugins = Preparing to purge agent plugins {0}. This may
take a few minutes since all type definitions from the plugins must first be purged from
the system. The plugins will still be visible on this page until they have been purged.
Please note that you must not re-install the plugin while the purge is running, otherwise
failures will occur. Therefore, please wait before attempting to re-install the plugin
into the system until this purge is complete.
view_admin_plugins_purgedAgentPluginsFailure = Nezdařilo se smazat zásuvné moduly
agenta.
view_admin_plugins_purgedServerPlugins = Smazané zásuvné moduly serveru: {0}.
view_admin_plugins_purgedServerPluginsFailure = Nezdařilo se smazat zásuvné moduly
serveru.
@@ -612,10 +612,10 @@ view_admin_plugins_undeployedServerPlugins = Sesazené zásuvné moduly
serveru:
view_admin_plugins_undeployedServerPluginsFailure = Nepodařilo se sesadit zásuvné moduly
serveru.
view_admin_plugins_upload = Nahrát zásuvný modul
view_admin_security = Bezpečnost
-view_admin_systemSettings_ActiveDriftServerPlugin_desc = Serverový zásusvný modul pro
detekci driftu starající se také o persistenci entit souvisejících s drift problematikou.
+view_admin_systemSettings_ActiveDriftServerPlugin_desc = Serverový zásuvný modul pro
detekci driftu starající se také o persistenci entit souvisejících s drift problematikou.
view_admin_systemSettings_ActiveDriftServerPlugin_name = Zapne zásuvný modul serveru pro
detekci driftu
view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = Pokud uběhne tato doba aniž by
dal o sobě agent vědět, je považován jako nedostupný (DOWN). Údaj je v minutách.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent max doba neodpovídání\n
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent max doba neodpovídání
view_admin_systemSettings_AlertPurge_desc = Jak staré musí být výstrahy v historii aby se
vymazaly z databáze. Údaj je ve dnech.
view_admin_systemSettings_AlertPurge_name = Smazat výstrahy starší než
view_admin_systemSettings_AvailabilityPurge_desc = Jak staré musí být položky o
dostupnosti v historii aby se vymazaly z databáze. Údaj je ve dnech.
@@ -663,7 +663,7 @@ view_admin_systemSettings_LDAPProtocol_name = SSL
view_admin_systemSettings_LDAPUrl_desc = URL k LDAP serveru
view_admin_systemSettings_LDAPUrl_name = LDAP URL
view_admin_systemSettings_RtDataPurge_desc = Jak staré musí být časy odezvy, aby se
vymazaly z databáze. Údaj je ve dnech.
-view_admin_systemSettings_RtDataPurge_name = Smazat doby odevzy starší než
+view_admin_systemSettings_RtDataPurge_name = Smazat doby odezvy starší než
view_admin_systemSettings_TraitPurge_desc = Jak staré musí být časy, aby se vymazaly z
databáze. Údaj je ve dnech.
view_admin_systemSettings_TraitPurge_name = Smazat vlastnosti měření starší než
view_admin_systemSettings_cannotLoadServerDetails = Nepodařilo se načíst detaily ze
serveru
@@ -740,767 +740,767 @@
view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = Kolikrá
view_alert_common_tab_dampening_duration_occurrences_label = Výskyty
view_alert_common_tab_dampening_duration_occurrences_label_tooltip = Výstraha je vyvolána
jednou za každých X případů, kdy byla podmínka splněna v daném časovém okně.
view_alert_common_tab_dampening_duration_period_label = Časové období
-view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
-view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
-view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
-view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
-view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
-view_alert_common_tab_general = General Properties
-view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
-view_alert_common_tab_notifications = Notifications
-view_alert_common_tab_notifications_message = Message
-view_alert_common_tab_notifications_sender = Sender
-view_alert_common_tab_notifications_status = Status
-view_alert_common_tab_recovery = Recovery
-view_alert_definition_condition_editor_availabilityDuration = Availability Duration
-view_alert_definition_condition_editor_availabilityDuration_tooltip = Specify the
availability state change and the duration that state must persist in order to trigger the
condition. The duration is in minutes and should be long enough, several minutes, to give
the agent time to detect another availability state change that may correct the problem.
-view_alert_definition_condition_editor_availabilityDuration_tooltip_duration = The number
of minutes the resource must be at the given availability before the condition is met.
-view_alert_definition_condition_editor_availability_tooltip = Specify the availability
state change that will trigger the condition.
-view_alert_definition_condition_editor_availability_value = Availability
-view_alert_definition_condition_editor_common_avg = Average
+view_alert_common_tab_dampening_duration_period_label_tooltip = Časová prodleva během
které bude testováno, zda daný počet výskytů podmínky byl splněn
+view_alert_common_tab_dampening_partial_evalatuions_label = Ohodnocení
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = Celkové množství
pokusů kolikrát bude podmínka testována, aby se zjistilo zda dané množství výskytů se
vyhodnotí na true
+view_alert_common_tab_dampening_partial_occurrences_label = Výskyty
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = Množství kolikrát
musí být podmínka splněna během posledních N ohodnocení než se vyvolá výstraha.
+view_alert_common_tab_general = Obecné vlastnosti
+view_alert_common_tab_invalid_condition_category = Neplatná kategorie podmínky - prosím
nahlaste to jako bug: {0}
+view_alert_common_tab_invalid_dampening_category = Neplatná kategorie tlumení - prosím
nahlaste to jako bug: {0}
+view_alert_common_tab_invalid_time_units = Neplatná časová jednotka - prosím nahlaste to
jako bug: {0}
+view_alert_common_tab_notifications = Upozornění
+view_alert_common_tab_notifications_message = Zpráva
+view_alert_common_tab_notifications_sender = Odesílatel
+view_alert_common_tab_notifications_status = Stav
+view_alert_common_tab_recovery = Obnova
+view_alert_definition_condition_editor_availabilityDuration = Doba dostupnosti
+##view_alert_definition_condition_editor_availabilityDuration_tooltip = Specify the
availability state change and the duration that state must persist in order to trigger the
condition. The duration is in minutes and should be long enough, several minutes, to give
the agent time to detect another availability state change that may correct the problem.
+view_alert_definition_condition_editor_availabilityDuration_tooltip_duration = Počet
minut po kterých musí být zdroj v daném stavu dostupnosti, aby byla splněna podmínka
+view_alert_definition_condition_editor_availability_tooltip = Specifikujte stav
dostupnosti, který poté splní podmínku.
+view_alert_definition_condition_editor_availability_value = Dostupnost
+view_alert_definition_condition_editor_common_avg = Průměr
view_alert_definition_condition_editor_common_max = Maximum
view_alert_definition_condition_editor_common_min = Minimum
-view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
-view_alert_definition_condition_editor_drift_configname_regex = Drift Definition Name
-view_alert_definition_condition_editor_drift_configname_regex_tooltip = If specified,
this is the drift definition name that was responsible for the drift that was detected.
This can optionally be a regular expression if you wish to match multiple drift definition
names.
-view_alert_definition_condition_editor_drift_pathname_regex = Pathname Regular
Expression
-view_alert_definition_condition_editor_drift_pathname_regex_tooltip = If specified, this
is a regular expression that must match the pathnames of those files that drifted.
-view_alert_definition_condition_editor_drift_tooltip = This condition is triggered when
drift has been detected.
-view_alert_definition_condition_editor_event_regex = Regular Expression
-view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
-view_alert_definition_condition_editor_event_severity = Event Severity
-view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
-view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
-view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
-view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
+view_alert_definition_condition_editor_delete_confirm = Chcete opravdu odstranit vybrané
podmínky výstrah?
+view_alert_definition_condition_editor_drift_configname_regex = Jméno definice driftu
+view_alert_definition_condition_editor_drift_configname_regex_tooltip = Pokud je zadáno
je toto považováno jako jméno definice driftu, který je odpovědný za detekovaný drift.
Může být také použit regulární výraz pokud si přejete napasovat více jmen definic driftů.
+view_alert_definition_condition_editor_drift_pathname_regex = Cesta (reg. exp.)
+view_alert_definition_condition_editor_drift_pathname_regex_tooltip = Pokud je zadáno,
určuje cestu k souboru, jenž je hlídán vůči driftům. Regulární výraz může být použit.
+view_alert_definition_condition_editor_drift_tooltip = Tato podmínka je splněna, byl-li
detekován drift.
+view_alert_definition_condition_editor_event_regex = Regulární výraz
+view_alert_definition_condition_editor_event_regex_tooltip = Pokud je zadáno, musí tento
regulární výraz pasovat na zprávu obdržené události, aby byla podmínka splněna.
+view_alert_definition_condition_editor_event_severity = Závažnost události
+view_alert_definition_condition_editor_event_tooltip = Určuje závažnost události s jakou
musí být zpráva nahlášena, aby byla podmínka splněna. Regulární výraz může být použit.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline procenta
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = Hodnota
sbíraných měření spustí tuto podmínku, pokud se po aplikaci zadaného komparátoru splní
celková podmínka.
+view_alert_definition_condition_editor_metric_baseline_tooltip = Hodnota baseline, která
musí být porušena, aby byla splněna podmínka.
view_alert_definition_condition_editor_metric_baseline_value = Baseline
-view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
-view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
-view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
-view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
-view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
-view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
-view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
-view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
-view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
-view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
-view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
-view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
-view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
-view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
-view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
-view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
-view_alert_definition_condition_editor_metric_nometrics = When using the ALL conjunction,
you cannot use the same metric in multiple conditions and this alert uses all available
metrics in currently existing conditions.
-view_alert_definition_condition_editor_metric_range_comparator = Comparator
-view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive = Inside,
exclusive
-view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive = Inside,
inclusive
-view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive =
Outside, exclusive
-view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive =
Outside, inclusive
-view_alert_definition_condition_editor_metric_range_comparator_tooltip = Determines if a
metric value should trigger this condition when inside the range or outside of it. If
inclusive, the value is considered to be in the range if its value equals a low or high
threshold value. If exclusive, the value is not considered in the range if it equals the
low or high value.
-view_alert_definition_condition_editor_metric_range_hivalue = High Value
-view_alert_definition_condition_editor_metric_range_hivalue_tooltip = The high threshold
value of the range.
-view_alert_definition_condition_editor_metric_range_lovalue = Low Value
-view_alert_definition_condition_editor_metric_range_lovalue_tooltip = The low threshold
value of the range.
-view_alert_definition_condition_editor_metric_range_tooltip = Compares a metric value to
a given low-high value range.
-view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
-view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
-view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
-view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
-view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
-view_alert_definition_condition_editor_metric_threshold_name = Metric
-view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
-view_alert_definition_condition_editor_metric_threshold_value = Metric Value
-view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
-view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_trait_change_value = Trait
-view_alert_definition_condition_editor_metricswarning = You cannot have multiple
conditions that use the same metric when using the ALL conjunction. This alert definition
has multiple conditions that use the metric [{0}].
-view_alert_definition_condition_editor_operation_status = Operation Status
-view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
-view_alert_definition_condition_editor_operator_availability_durationDown = Stays Down
-view_alert_definition_condition_editor_operator_availability_durationNotUp = Stays Not
Up
-view_alert_definition_condition_editor_operator_availability_goesDisabled = Goes
disabled
-view_alert_definition_condition_editor_operator_availability_goesDown = Goes down
-view_alert_definition_condition_editor_operator_availability_goesNotUp = Goes not up
-view_alert_definition_condition_editor_operator_availability_goesUnknown = Goes unknown
-view_alert_definition_condition_editor_operator_availability_goesUp = Goes up
-view_alert_definition_condition_editor_option_availability = Availability Change
-view_alert_definition_condition_editor_option_drift = Drift Detection
-view_alert_definition_condition_editor_option_event = Event Detection
-view_alert_definition_condition_editor_option_label = Condition Type
-view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
-view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
-view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
-view_alert_definition_condition_editor_option_metric_range = Measurement Value Range
-view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
-view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
-view_alert_definition_condition_editor_option_operation = Operation Execution
-view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
-view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
-view_alert_definition_for_group = View Group Definition
-view_alert_definition_for_type = View Template
-view_alert_definition_notification_cliScript_editor_anotherUser = Another User
-view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
-view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
-view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
-view_alert_definition_notification_cliScript_editor_repository = Repository
-view_alert_definition_notification_cliScript_editor_script = Script
-view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
-view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
-view_alert_definition_notification_cliScript_editor_thisUser = Myself
-view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
-view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
-view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
-view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
-view_alert_definition_notification_editor_field_configuration = Configuration
-view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
-view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
-view_alert_definition_notification_editor_field_sender = Sender
-view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
-view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
-view_alert_definition_notification_editor_none_available = No alert senders available
-view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
-view_alert_definition_notification_editor_sender = Notification Sender
-view_alert_definition_notification_editor_title_add = Add Notification
-view_alert_definition_notification_editor_title_edit = Edit Notification
-view_alert_definition_notification_operation_editor_common_operation = Operation
-view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
-view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
-view_alert_definition_notification_operation_editor_mode_this = This Resource
-view_alert_definition_notification_operation_editor_mode_title = Resource Selection Mode
-view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
-view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
-view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
-view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
-view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
-view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
-view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
-view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
-view_alert_definition_notification_operation_editor_specific_pick_button = Pick
-view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
-view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
-view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
-view_alert_definition_notification_operation_editor_specific_resource = Resource
-view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
-view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
-view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
-view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
-view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
-view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
-view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
-view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
-view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
-view_alert_definition_recovery_editor_none_available = None
-view_alert_definition_recovery_editor_recovery_alert = Recover Alert
-view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
-view_alert_definitions_create_failure = Alert definition creation failed
-view_alert_definitions_create_success = Alert definition successfully created
-view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
-view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
-view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
-view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
-view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
-view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
-view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
-view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
-view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
-view_alert_definitions_loadFailed = Failed to fetch alert definition data
-view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
-view_alert_definitions_table_title_group = Group Alert Definitions
-view_alert_definitions_table_title_resource = Resource Alert Definitions
-view_alert_definitions_update_failure = Alert definition update failed
-view_alert_definitions_update_success = Alert definition successfully updated
-view_alert_details_field_ack_at = Acknowledged at
-view_alert_details_field_ack_by = Acknowledged by
-view_alert_details_field_recovery_info = Recovery Info
-view_alert_details_loadFailed = Failed to fetch alert details
-view_alerts_ack_confirm = Acknowledge the selected alert(s)?
-view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
-view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
-view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
-view_alerts_ack_success = Successfully acknowledged {0} alerts
-view_alerts_delete_confirm = Delete the selected alert(s)?
-view_alerts_delete_confirm_all = Delete all alerts from this source?
-view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
-view_alerts_delete_failure_all = Failed to delete all alerts from this source
-view_alerts_delete_success = Successfully deleted {0} alerts
-view_alerts_field_ack_status = Status
-view_alerts_field_ack_status_ack = Ack ({0})
-view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
-view_alerts_field_ack_status_noAck = No Ack
-view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
-view_alerts_field_ack_subject = Acknowledge Subject
-view_alerts_field_ack_time = Acknowledge Time
-view_alerts_field_condition_text = Condition Text
-view_alerts_field_condition_text_many = Multiple Conditions
-view_alerts_field_condition_text_none = No Conditions
-view_alerts_field_condition_value = Condition Value
-view_alerts_field_enabled = Enabled
-view_alerts_field_modified_time = Modified Time
-view_alerts_field_parent = Parent
-view_alerts_field_priority = Priority
-view_alerts_field_protected = Protected
-view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
-view_alerts_loadFailed = Failed to fetch alerts data
-view_alerts_table_filter_priority = Priority Filter
-view_alerts_table_title_group = Group Alert History
-view_alerts_table_title_resource = Resource Alert History
-view_autoDiscoveryQ_committed = Committed
-view_autoDiscoveryQ_confirmSelect = Also select the platform children?
-view_autoDiscoveryQ_confirmSelectAll = Also select the children of each platform?
-view_autoDiscoveryQ_deleted = Deleted
-view_autoDiscoveryQ_deselectAll = Deselect All
-view_autoDiscoveryQ_field_discoveryTime = Discovery Time
-view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
-view_autoDiscoveryQ_field_parentId = Parent ID
-view_autoDiscoveryQ_ignore = Ignore
-view_autoDiscoveryQ_ignoreFailure = Failed to ignore Resources
-view_autoDiscoveryQ_ignoreInProgress = Ignoring the selected Resources...
-view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
Resources.
-view_autoDiscoveryQ_ignored = Ignored
-view_autoDiscoveryQ_importFailure = Failed to import Resources
-view_autoDiscoveryQ_importInProgress = Importing the selected Resources...
-view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
Resources.
-view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
-view_autoDiscoveryQ_newAndIgnored = New and Ignored
-view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
-view_autoDiscoveryQ_selectAll = Select All
-view_autoDiscoveryQ_showStatus = Show
-view_autoDiscoveryQ_title = Autodiscovery Queue
-view_autoDiscoveryQ_unignore = Unignore
-view_autoDiscoveryQ_unignoreFailure = Failed to unignore Resources
-view_autoDiscoveryQ_unignoreInProgress = Unignoring the selected Resources...
-view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
Resources.
-view_autoDiscoveryQ_uninventoried = Uninventoried
-view_bundleVersion_loadFailure = Failed to load bundle version data
-view_bundle_bundle = Bundle
-view_bundle_bundleDeployment = Bundle Deployment
-view_bundle_bundleDeployments = Bundle Deployments
-view_bundle_bundleDestinations = Bundle Destinations
-view_bundle_bundleFiles = Bundle Files
-view_bundle_bundleType = Bundle Type
-view_bundle_bundleVersion = Bundle Version
-view_bundle_bundleVersions = Bundle Versions
-view_bundle_bundles = Bundles
-view_bundle_createWizard_bundleDistro = Bundle Distribution
-view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
-view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
-view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
-view_bundle_createWizard_createFailure = Failed to create the bundle
-view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
-view_bundle_createWizard_enterRecipe = Please supply a valid recipe
-view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
-view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
-view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
-view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
-view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
-view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
-view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
-view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
-view_bundle_createWizard_recipeOption = Recipe
-view_bundle_createWizard_title = Create Bundle
-view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
-view_bundle_createWizard_uploadOption = Upload
-view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Procentuální
změna
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip =
Sbíraná doba volání spustí tuto podmínku pokud se její hodnota liší alespoň o tolik
procent.
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Sbíraná doba
volání spustí tuto podmínku pokud se její hodnota liší alespoň o právě o tolik (v abs.
číslech). Musíte také specifikovat vůči čemu porovnávat (minimum, maximum nebo průměrná
doba volání).
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Komparátor
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes = Změny
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Roste
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks = Klesá
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = Jak má
být sbíraná doba odezvy porovnávána s limitem doby volání
+view_alert_definition_condition_editor_metric_calltime_common_limit = Limit doby volání
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = Limit doby
volání, který pak bude použit k porovnávání s danou hodnotou
+view_alert_definition_condition_editor_metric_calltime_common_name = Metrika doby volání
+view_alert_definition_condition_editor_metric_calltime_common_regex = Regulární výraz
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = Pokud je
zadáno, tento regulární výraz se musí napasovat na cíl volání, aby byla splněna podmínka
+##view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Hodnota doby
volání
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = Prahová
hodnota, která spustí podmínku, pokud se použije zvolený komparátor
+view_alert_definition_condition_editor_metric_change_tooltip = Určí metriku jejíž hodnoty
se musí změnit, aby byla podmínka splněna
+view_alert_definition_condition_editor_metric_common_definition_not_found = Nepodařilo se
nalézt definici měření - něco je špatně
+view_alert_definition_condition_editor_metric_nometrics = Pokud je použita logická spojka
ALL (všechny), nemůžete použít stejné metriky ve více podmínkách a tato výstraha používá
všechny dostupné metriky ve všech existujících podmínkách.
+view_alert_definition_condition_editor_metric_range_comparator = Komparátor
+view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive = Uvnitř,
vyjma
+view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive = Uvnitř,
včetně
+view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive = Vně,
vyjma
+view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive = Vně,
včetně
+##view_alert_definition_condition_editor_metric_range_comparator_tooltip = Determines if
a metric value should trigger this condition when inside the range or outside of it. If
inclusive, the value is considered to be in the range if its value equals a low or high
threshold value. If exclusive, the value is not considered in the range if it equals the
low or high value.
+view_alert_definition_condition_editor_metric_range_hivalue = Vysoká hodnota
+view_alert_definition_condition_editor_metric_range_hivalue_tooltip = Vysoká prahová
hodnota toho intervalu
+view_alert_definition_condition_editor_metric_range_lovalue = Nízká hodnota
+view_alert_definition_condition_editor_metric_range_lovalue_tooltip = Nízká prahová
hodnota toho intervalu
+view_alert_definition_condition_editor_metric_range_tooltip = Porovná naměřenou hodnotu s
intervalem omezeným Nízkou a Vysokou hodnotou
+view_alert_definition_condition_editor_metric_threshold_comparator = Komparátor
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Je rovno
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Větší než
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Menší než
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = Jak má být
měřená hodnota porovnávána s danou prahovou hodnotou
+view_alert_definition_condition_editor_metric_threshold_name = Měření (metrika)
+##view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_value = Měřená hodnota
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = Prahová hodnota,
jenž se použije k porovnání s vybraným komparátorem
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Určete tu vlastnost,
jejíž hodnoty se musí změnit, aby byla splněna podmínka
+view_alert_definition_condition_editor_metric_trait_change_value = Vlastnost
+view_alert_definition_condition_editor_metricswarning = Pokud je použita logická spojka
ALL (všechny), nemůžete použít stejné metriky ve více podmínkách. Výstraha používá metriky
[{0}].
+view_alert_definition_condition_editor_operation_status = Stav operace
+view_alert_definition_condition_editor_operation_tooltip = Určí výsledek, jenž musí
nastat, když je daná operace spuštěna, aby byla podmínka splněna.
+view_alert_definition_condition_editor_operator_availability_durationDown = Stále neběží
+view_alert_definition_condition_editor_operator_availability_durationNotUp = Stále (not)
běží
+view_alert_definition_condition_editor_operator_availability_goesDisabled = Stane se
zneplatněným
+view_alert_definition_condition_editor_operator_availability_goesDown = Spadne
+view_alert_definition_condition_editor_operator_availability_goesNotUp = Nenaběhne
+view_alert_definition_condition_editor_operator_availability_goesUnknown = Stane se
neznámým
+view_alert_definition_condition_editor_operator_availability_goesUp = Naběhne
+view_alert_definition_condition_editor_option_availability = Změna stavu
+view_alert_definition_condition_editor_option_drift = Detekce driftu
+view_alert_definition_condition_editor_option_event = Detekce událostí
+view_alert_definition_condition_editor_option_label = Typ podmínky
+view_alert_definition_condition_editor_option_metric_baseline = Prahová baseline
+view_alert_definition_condition_editor_option_metric_calltime_change = Změna hodnoty doby
volání
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Práhová hodnota
doby volání
+view_alert_definition_condition_editor_option_metric_change = Změna měřené hodnoty
+view_alert_definition_condition_editor_option_metric_range = Rozsah měřené hodnoty
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_trait_change = Změna hodnoty
vlastnosti
+view_alert_definition_condition_editor_option_operation = Spuštění operace
+view_alert_definition_condition_editor_option_resource_configuration = Změna konfigurace
zdroje
+view_alert_definition_condition_editor_resource_configuration_tooltip = Podmínka je
splněna, když se změní konfigurace zdroje.
+view_alert_definition_for_group = Zobrazit definici skupiny
+view_alert_definition_for_type = Zobrazit šablonu
+view_alert_definition_notification_cliScript_editor_anotherUser = Jiný uživatel
+view_alert_definition_notification_cliScript_editor_existingScript = Existující skript
+view_alert_definition_notification_cliScript_editor_loadFailed = Nepodařilo se načíst
editor pro CLI notifikaci.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Verze
+view_alert_definition_notification_cliScript_editor_repository = Repozitář
+view_alert_definition_notification_cliScript_editor_script = Skript
+view_alert_definition_notification_cliScript_editor_selectRepo = Vyberte repozitář, kde
by měl skript být
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Vyberte prvně
repozitář.
+view_alert_definition_notification_cliScript_editor_thisUser = Já
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Nahrát nový skript
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Ověřit
+view_alert_definition_notification_cliScript_editor_whichUser = Spustit skript jako
uživatel
+view_alert_definition_notification_editor_delete_confirm = Jste si jisti, že chcete
smazat vybraná upozornění?
+view_alert_definition_notification_editor_field_configuration = Konfigurace
+view_alert_definition_notification_editor_field_configuration_loadFailed = Nepodařilo se
získat náhled na konfiguraci upozornění
+view_alert_definition_notification_editor_field_configuration_not_loaded = Neznámý
+view_alert_definition_notification_editor_field_sender = Odesílatel
+view_alert_definition_notification_editor_loadFailed = Nelze získat odesílatele výstrah
+view_alert_definition_notification_editor_loadFailed_single = Nelze získat definici
konfigurace odesílatele výstrah
+view_alert_definition_notification_editor_none_available = Žádní odesílatele výstrah
nejsou k dispozici
+view_alert_definition_notification_editor_saveFailed = Nepodařilo se uložit konfiguraci
upozornění
+view_alert_definition_notification_editor_sender = Odesílatel upozornění
+view_alert_definition_notification_editor_title_add = Přidat upozornění
+view_alert_definition_notification_editor_title_edit = Editovat upozornění
+view_alert_definition_notification_operation_editor_common_operation = Operace
+view_alert_definition_notification_operation_editor_mode_relative = Relativní zdroj
+view_alert_definition_notification_operation_editor_mode_specific = Specifický zdroj
+view_alert_definition_notification_operation_editor_mode_this = Tento zdroj
+view_alert_definition_notification_operation_editor_mode_title = Mód výběru zdroje
+view_alert_definition_notification_operation_editor_mode_unknown = NEZNÁMÁ VOLBA - TOHLE
JE BUG
+view_alert_definition_notification_operation_editor_operations_loadFailed = Nepodařilo se
načíst seznam dostupných operací
+view_alert_definition_notification_operation_editor_operations_no_parameters = Tato
operace nebere žádné parametry
+view_alert_definition_notification_operation_editor_relative_ancestor = Spustit hledací
formulář
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
Nepodařilo se získat potomka typu
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Typ
kořenového potomka
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Vyberte
typ nejvyšší úrovně hierarchie, v jehož podstromu se pak bude aplikovat Filtrovat čím
+view_alert_definition_notification_operation_editor_relative_descendant = Filtrovat čím
+##view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip
= A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Nelze získat typ potomků
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = Typ
zdroje v němž hledat pomocí vyhledávacího formuláře
+view_alert_definition_notification_operation_editor_specific_pick_button = Vybrat
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Prosím
vyberte zdroj
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Prosím vyberte zdroj, který má jednu nebo více operací
+view_alert_definition_notification_operation_editor_specific_pick_text = Vyberte
zdroj...
+view_alert_definition_notification_operation_editor_specific_resource = Zdroj
+view_alert_definition_notification_role_editor_loadFailed = Nelze určit současné role
+view_alert_definition_notification_role_editor_restoreFailed = Nelze použít současné
uživatelské role
+view_alert_definition_notification_role_editor_saveFailed = Nelze uložit vybrané role
+view_alert_definition_notification_user_editor_loadFailed = Nelze určit současné
uživatelské role
+view_alert_definition_notification_user_editor_restoreFailed = Nelze použít současné
uživatele
+view_alert_definition_notification_user_editor_saveFailed = Nelze uložit současné
uživatele
+view_alert_definition_recovery_editor_disable_when_fired = Zneplatnit, když je splněno
+##view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = Nelze zobrazit menu pro obnovu
+view_alert_definition_recovery_editor_none_available = Žádné
+view_alert_definition_recovery_editor_recovery_alert = Obnova výstrahy
+##view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that
will be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here
if you are not defining a recovery alert.
+view_alert_definitions_create_failure = Definice výstrahy se nepodařila vytvořit
+view_alert_definitions_create_success = Definice výstrahy se úspěšně vytvořila
+view_alert_definitions_delete_confirm = Smazat vybrané definice výstrah?
+view_alert_definitions_delete_failure = Nepodařilo se smazat vybrané definice výstrah
+view_alert_definitions_delete_success = Úspěšně smazáno {0} definic výstrah
+view_alert_definitions_disable_confirm = Zneplatnit vybrané definice výstrah?
+view_alert_definitions_disable_failure = Nepodařilo se zneplatnit vybrané definice
výstrah
+view_alert_definitions_disable_success = Úspěšně zneplatněno {0} definic výstrah
+view_alert_definitions_enable_confirm = Povolit vybrané definice výstrah?
+view_alert_definitions_enable_failure = Nepodařilo se povolit vybrané definice výstrah
+view_alert_definitions_enable_success = Úspěšně povoleno {0} definic výstrah
+view_alert_definitions_loadFailed = Nepodařilo se získat definice výstrah
+view_alert_definitions_loadFailed_single = Nepodařilo se získat definici výstrahy s id
{0}
+view_alert_definitions_table_title_group = Skupinové definice výstrah
+view_alert_definitions_table_title_resource = Definice výstrah pro zdroj
+view_alert_definitions_update_failure = Nepodařilo se změnit definici výstrahy
+view_alert_definitions_update_success = Úspěšně změněna definice výstrahy
+view_alert_details_field_ack_at = Potvrzeno v
+view_alert_details_field_ack_by = Potvrzeno kým
+view_alert_details_field_recovery_info = Informace o obnově
+view_alert_details_loadFailed = Nepodařilo se načíst výstrahy
+view_alerts_ack_confirm = Potvrdit vybrané výstrahy?
+view_alerts_ack_confirm_all = Potvrdit všechny výstrahy tohoto zdroje?
+view_alerts_ack_failure = Nepodařilo se potvrdit výstrahy s id: {0}
+view_alerts_ack_failure_all = Nepodařilo se potvrdit všechny výstrahy tohoto zdroje
+view_alerts_ack_success = Úspěšně potvrzeno {0} výstrah
+view_alerts_delete_confirm = Smazat vybrané výstrahy?
+view_alerts_delete_confirm_all = Smazat všechny výstrahy tohoto zdroje?
+view_alerts_delete_failure = Nepodařilo se smazat výstrahy s id: {0}
+view_alerts_delete_failure_all = Nepodařilo se smazat všechny výstrahy tohoto zdroje
+view_alerts_delete_success = Úspěšně smazáno {0} výstrah
+view_alerts_field_ack_status = Stav
+view_alerts_field_ack_status_ack = Potvrzení ({0})
+view_alerts_field_ack_status_ackHover = Potvrzeno kým {0} v {1}
+view_alerts_field_ack_status_noAck = Nepotvrzeno
+view_alerts_field_ack_status_noAckHover = Ještě nebylo potvrzeno
+view_alerts_field_ack_subject = Subjekt potvrzení
+view_alerts_field_ack_time = Čas potvrzení
+view_alerts_field_condition_text = Text podmínky
+view_alerts_field_condition_text_many = Násobné podmínky
+view_alerts_field_condition_text_none = Žádné podmínky
+view_alerts_field_condition_value = Hodnota podmínky
+view_alerts_field_enabled = Povoleno
+view_alerts_field_modified_time = Čas modifikace
+view_alerts_field_parent = Rodič
+view_alerts_field_priority = Priorita
+view_alerts_field_protected = Chráněno
+##view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
+view_alerts_loadFailed = Nepodařilo se načíst data výstrah
+view_alerts_table_filter_priority = Prioritní filtr
+view_alerts_table_title_group = Historie výstrah skupiny
+view_alerts_table_title_resource = Historie výstrah zdroje
+view_autoDiscoveryQ_committed = Inventarizovaný
+view_autoDiscoveryQ_confirmSelect = Vybrat také potomky platformy?
+view_autoDiscoveryQ_confirmSelectAll = Vybrat také potomky pro všechny platformy?
+view_autoDiscoveryQ_deleted = Smazáno
+view_autoDiscoveryQ_deselectAll = Odvybrat všechny
+view_autoDiscoveryQ_field_discoveryTime = Čas objevení
+view_autoDiscoveryQ_field_inventoryStatus = Stav inventarizace
+view_autoDiscoveryQ_field_parentId = ID rodiče
+view_autoDiscoveryQ_ignore = Ignorovaný
+view_autoDiscoveryQ_ignoreFailure = Nepodařilo se ignorovat zdroje
+view_autoDiscoveryQ_ignoreInProgress = Ignorování vybraných zdrojů právě probíhá...
+view_autoDiscoveryQ_ignoreSuccessful = Vybrané zdroje byly úspěšně ignorovány.
+view_autoDiscoveryQ_ignored = Ignorovat
+view_autoDiscoveryQ_importFailure = Nepodařilo se importovat zdroje
+view_autoDiscoveryQ_importInProgress = Import vybraných zdrojů právě probíhá...
+view_autoDiscoveryQ_importSuccessful = Úspěšně jste importovali vybrané zdroje
+view_autoDiscoveryQ_loadFailure = Nepodařilo se načíst objevené zdroje
+view_autoDiscoveryQ_newAndIgnored = Nový a ignorovaný
+view_autoDiscoveryQ_noperm = (Nemáte oprávnění zobrazit frontu automaticky objevených
zdrojů)
+view_autoDiscoveryQ_selectAll = Vybrat vše
+view_autoDiscoveryQ_showStatus = Zobrazit
+view_autoDiscoveryQ_title = Fronta automatického objevení
+view_autoDiscoveryQ_unignore = Odignorovat
+view_autoDiscoveryQ_unignoreFailure = Nepodařilo se odignorovat zdroje
+view_autoDiscoveryQ_unignoreInProgress = Odignorování vybraných zdrojů právě probíhá...
+view_autoDiscoveryQ_unignoreSuccessful = Vybrané zdroje byly úspěšně odignorovány.
+view_autoDiscoveryQ_uninventoried = Odinventarizovaný
+view_bundleVersion_loadFailure = Nepodařilo se načíst data verzí balíků
+view_bundle_bundle = Balík
+view_bundle_bundleDeployment = Nasazení balíku
+view_bundle_bundleDeployments = Nasazování balíků
+view_bundle_bundleDestinations = Cíle balíku
+view_bundle_bundleFiles = Soubory balíku
+view_bundle_bundleType = Typ balíku
+view_bundle_bundleVersion = Verze balíku
+view_bundle_bundleVersions = Verze balíku
+view_bundle_bundles = Balíky
+view_bundle_createWizard_bundleDistro = Distribuce balíku
+view_bundle_createWizard_cancelFailure = Nepodařilo se zrušit vytváření balíku [{0}],
verze = [{1}] - balík může stále existovat v databázi
+view_bundle_createWizard_cancelSuccessful = Zrušeno vytváření balíku [{0}], verze =
[{1}]
+view_bundle_createWizard_clickToUploadRecipe = Klikněte pro nahrání souboru s receptem
+view_bundle_createWizard_createFailure = Nepodařilo se vytvořit balík
+view_bundle_createWizard_createSuccessful = Vytvořili jste balík nazvaný [{0}] s verzí
[{1}]
+view_bundle_createWizard_enterRecipe = Prosím vložte validní recept
+view_bundle_createWizard_enterUrl = Prosím vložte validní URL, odkud může být stažen
soubor s distribucí balíku
+view_bundle_createWizard_failedToUploadDistroFile = Nepodařilo se nahrát distribuční
soubor balíku
+view_bundle_createWizard_failedToUploadFile = Nepodařilo se nahrát soubor balíku
+view_bundle_createWizard_loadBundleFileFailure = Nepodařilo se získat soubor s
informacemi o balíku ze serveru
+view_bundle_createWizard_noAdditionalFilesNeeded = Žádné dodatečné soubory nejsou potřeba
pro tento balík
+view_bundle_createWizard_noBundleTypesAvail = Žádné typy balíků nejsou k dispozici
+view_bundle_createWizard_noBundleTypesSupported = Nejsou podporovány žádné typy balíků -
musíte nasadit validní zásuvný modul, který podporuje nasazování balíků
+view_bundle_createWizard_provideBundleDistro = Poskytnout distribuci balíku
+view_bundle_createWizard_recipeOption = Recept
+view_bundle_createWizard_title = Vytvořit balík
+view_bundle_createWizard_uploadInProgress = Upload probíhá... Pro velké soubory to může
trvat několik minut
+view_bundle_createWizard_uploadOption = Nahrát
+view_bundle_createWizard_uploadStepName = Nahrát soubory balíku
view_bundle_createWizard_urlOption = URL
-view_bundle_createWizard_windowTitle = Bundle Creation Wizard
-view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
-view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted. However, this will not
remove any content from remote machines.
-view_bundle_deploy = Deploy
-view_bundle_deployDir = Deploy Directory
-view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
-view_bundle_deployWizard_deploying = Deploying...
-view_bundle_deployWizard_deploymentCreated = Created Deployment...
-view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
-view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
-view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
-view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
-view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
-view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
-view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
-view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
-view_bundle_deployWizard_error_11 = Failed to find defined deployments.
-view_bundle_deployWizard_error_12 = Failed to find defined bundles.
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
-view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
-view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
-view_bundle_deployWizard_error_5 = Failed to Create Deployment!
-view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
-view_bundle_deployWizard_error_7 = Failed to get deployment name.
-view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
-view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
-view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
-view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
-view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
-view_bundle_deployWizard_getDestStep = New Destination
-view_bundle_deployWizard_getDest_deployDir = Deployment Directory
-view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will be
deployed. This directory will be the same for all deployments on all resources but it is
relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
-view_bundle_deployWizard_getDest_desc = Destination Description
-view_bundle_deployWizard_getDest_destBaseDirName = Base Location
-view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
-view_bundle_deployWizard_getDest_name = Destination Name
-view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
-view_bundle_deployWizard_getInfoStep = Provide Deployment Information
-view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
-view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
-view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
-view_bundle_deployWizard_getOptionsStep = Deploy Options
-view_bundle_deployWizard_getOptions_deployLater = Deploy Later
-view_bundle_deployWizard_getOptions_deployNow = Deploy Now
-view_bundle_deployWizard_getOptions_deployTime = Deployment Time
-view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
-view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
-view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
-view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
-view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
-view_bundle_deployWizard_selectVersion_select = Select Version from List:
-view_bundle_deployWizard_title = Bundle Deployment Wizard
-view_bundle_deploy_action = Action
-view_bundle_deploy_backButton = Back to Destination
-view_bundle_deploy_clickForError = Click the icon for the error message
-view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment? This only deletes it from the database; all bundle content that was deployed
on remote machines will remain.
-view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
-view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
-view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Resource
-view_bundle_deploy_installDetails = Install Details
-view_bundle_deploy_loadBundleFailure = Failed to find bundle
-view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
-view_bundle_deploy_loadFailure = Failed to load bundle deployment
-view_bundle_deploy_name = Deployment Name
-view_bundle_deploy_selectARow = Select a row to show installation details
-view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
-view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
-view_bundle_deploy_time = Deployment Time
-view_bundle_deployed = Deployed
-view_bundle_deployments = Deployments
-view_bundle_dest_backToBundle = Back to Bundle
-view_bundle_dest_baseDirName = Base Location
-view_bundle_dest_created = Created
-view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
-view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
-view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
-view_bundle_dest_deployDir = Deploy Directory
-view_bundle_dest_group = Group
-view_bundle_dest_lastDeployedVersion = Last Deployed Version
-view_bundle_dest_lastDeploymentDate = Last Deployment Date
-view_bundle_dest_lastDeploymentStatus = Last Deployment Status
-view_bundle_dest_loadFailure = Failed to load bundle destinations
-view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
-view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
-view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
-view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
-view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
-view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
-view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
-view_bundle_destinations = Destinations
-view_bundle_fileListView_fileSize = File Size
-view_bundle_fileListView_loadFailure = Failed to load bundle file data
+view_bundle_createWizard_windowTitle = Průvodce pro vytváření balíků
+view_bundle_createWizard_youMustChooseOne = Musíte zvolit jednu možnost, abyste mohli
vytvořit nový balík!
+view_bundle_deleteConfirm = Jste si jisti, že chcete smazat tento balík? Všechny verze,
cíle a nasazení pro tento balík budou také smazány. Nicméně už nasazený obsah nebude ze
vzdálených stanic smazán.
+view_bundle_deploy = Nasadit
+view_bundle_deployDir = Nasadit adresář
+view_bundle_deployWizard_deployStep = Nasadit balík na cílové stanice
+view_bundle_deployWizard_deploying = Nasazování...
+view_bundle_deployWizard_deploymentCreated = Vytvořit nasazení...
+view_bundle_deployWizard_deploymentCreatedDetail = Vytvořili jste nasazení [{0}] s
popisem [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = Vytvořili jste nasazení [{0}]
+view_bundle_deployWizard_deploymentScheduled = Nasazení balíku bylo naplánováno!
+view_bundle_deployWizard_deploymentScheduledDetail = Vytvořili jste nasazení [{0}] s
cílovou skupinou [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = Naplánovali jste nasazení
balíku
+view_bundle_deployWizard_destinationCreatedDetail = Vytvořili jste cíl [{0}] s popisem
[{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = Vytvořili jste cíl [{0}]
+view_bundle_deployWizard_error_1 = Nepodařilo se smazat nové nasazení
+view_bundle_deployWizard_error_10 = Nepodařilo se vytvořit cíl, možná už existuje.
+view_bundle_deployWizard_error_11 = Nepodařilo se nalézt definovaná nasazení.
+view_bundle_deployWizard_error_12 = Nepodařilo se nalézt balíky.
+view_bundle_deployWizard_error_2 = Nepodařilo se smazat nový cíl.
+view_bundle_deployWizard_error_3 = Nepodařilo se naplánovat nasazení!
+view_bundle_deployWizard_error_4 = Nepodařilo se naplánovat nasazení: {0}
+view_bundle_deployWizard_error_5 = Nepodařilo se vytvořit nasazení!
+view_bundle_deployWizard_error_6 = Nepodařilo se vytvořit nasazení: {0}
+view_bundle_deployWizard_error_7 = Nepodařilo se získat jméno nasazení.
+view_bundle_deployWizard_error_8 = Musíte vybrat platnou skupinu zdrojů z výběru
+view_bundle_deployWizard_error_9 = Nepodařilo se smazat nový cíl na následující stránce
+view_bundle_deployWizard_error_noBundleConfig = Nepodařilo se získat informace o cílovém
balíku. Je skupina, kterou jste vybrali, platnou kompatibilní skupinou, která může být
cílem nasazování balíků?
+view_bundle_deployWizard_getConfigSkip = Pro tuto verzi balíku není žádná konfigurace
potřeba.
+view_bundle_deployWizard_getConfigStep = Nastavit konfiguraci nasazení
+view_bundle_deployWizard_getDestStep = Nový cíl
+view_bundle_deployWizard_getDest_deployDir = Adresář nasazení
+##view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will
be deployed. This directory will be the same for all deployments on all resources but it
is relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
+view_bundle_deployWizard_getDest_desc = Popis cíle
+view_bundle_deployWizard_getDest_destBaseDirName = Bázová lokace
+##view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
+view_bundle_deployWizard_getDest_name = Jméno cíle
+view_bundle_deployWizard_getDest_name_help = Jméno cíle identifikuje konkrétní skupinu
zdrojů a cílový adresář těch zdrojů pro konkrétní balík.
+view_bundle_deployWizard_getInfoStep = Poskytnout informace o nasazení
+view_bundle_deployWizard_getInfo_clean = Čisté nasazení? (odstraní předchozí na cílové
platformě)
+view_bundle_deployWizard_getInfo_deploymentDesc = Popis nasazení
+view_bundle_deployWizard_getInfo_deploymentName = Jméno nasazení
+view_bundle_deployWizard_getOptionsStep = Volby nasazení
+view_bundle_deployWizard_getOptions_deployLater = Nasadit později
+view_bundle_deployWizard_getOptions_deployNow = Nasadit teď
+view_bundle_deployWizard_getOptions_deployTime = Čas nasazení
+view_bundle_deployWizard_selectBundleStep = Vybrat balík pro nasazení
+view_bundle_deployWizard_selectBundle_single = Vyberte jeden nějaký balík pro nasazení.
+view_bundle_deployWizard_selectVersionStep = Vybrat verzi balíku k nasazení
+view_bundle_deployWizard_selectVersion_latest = Poslední verze [{0}]
+view_bundle_deployWizard_selectVersion_live = Aktuální verze [{0}]
+view_bundle_deployWizard_selectVersion_select = Vybrat verzi ze seznamu:
+view_bundle_deployWizard_title = Průvodce nasazování balíků
+view_bundle_deploy_action = Akce
+view_bundle_deploy_backButton = Zpět na cíl
+view_bundle_deploy_clickForError = Klikněte na ikonu pro zobrazení chybové zprávy
+view_bundle_deploy_deleteConfirm = Jste si jisti, že chcete smazat toto nasazení balíku?
Smaže to jen z databáze. Už nasazené balíky zůstanou nasazeny.
+view_bundle_deploy_deleteFailure = Nepodařilo se smazat nasazení balíku [{0}]
+view_bundle_deploy_deleteSuccessful = Úspěšně jste smazali nasazení balíku [{0}]
+view_bundle_deploy_deployedBy = Nasadil
+view_bundle_deploy_deploymentPlatforms = Zdroj pro nasazení
+view_bundle_deploy_installDetails = Instalační detaily
+view_bundle_deploy_loadBundleFailure = Nepodařilo se nalézt balík
+view_bundle_deploy_loadDeployFailure = Nepodařilo se načíst nasazení balíků
+view_bundle_deploy_loadFailure = Nepodařilo se nalézt nasazení balíku
+view_bundle_deploy_name = Jméno nasazení
+view_bundle_deploy_selectARow = Vyberte řádek pro zobrazení instalačních detailů
+view_bundle_deploy_tagUpdateFailure = Nepodařilo se změnit tagy pro nasazení balíku
+view_bundle_deploy_tagUpdateSuccessful = Úspěšně jste změnili tagy pro nasazení balíku
+view_bundle_deploy_time = Čas nasazení
+view_bundle_deployed = Nasazeno
+view_bundle_deployments = Nasazení
+view_bundle_dest_backToBundle = Zpět na balík
+view_bundle_dest_baseDirName = Bázová lokace
+view_bundle_dest_created = Vytvořeno
+##view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle
destination? This only deletes it from the database; all bundle content that was deployed
to this destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Nepodařilo se smazat cíl balíku [{0}]
+view_bundle_dest_deleteSuccessful = Úspěšně jste smazali cíl balíku [{0}]
+view_bundle_dest_deployDir = Nasadit adresář
+view_bundle_dest_group = Skupina
+view_bundle_dest_lastDeployedVersion = Posledně nasazená verze
+view_bundle_dest_lastDeploymentDate = Datum posledního nasazení
+view_bundle_dest_lastDeploymentStatus = Stav posledního nasazení
+view_bundle_dest_loadFailure = Nepodařilo se načíst cíle balíku
+view_bundle_dest_loadFailureVersionInfo = Nepodařilo se načíst informace o verzi
nasazeného balíku
+view_bundle_dest_purgeConfirm = Tato volba vyčistí obsah všech cílových adresářů
vzdálených strojů. Jste si jisti, že to chcete provést?
+view_bundle_dest_purgeFailure = Nepodařilo se vyčistit cíl balíku [{0}] z jednoho nebo
více vzdálených strojů.
+view_bundle_dest_purgeSuccessful = Úspěšně jste vyčistili cíl balíku [{0}] u všech
vzdálených strojů.
+view_bundle_dest_revertConfirm = Tato volba vrátí stav všech vzdálených strojů na
předchozí nasazení. Jste si jisti, že to chcete provést?
+view_bundle_dest_tagUpdateFailure = Nepodařilo se změnit tagy cíle balíku
+view_bundle_dest_tagUpdateSuccessful = Úspěšně jste změnili tagy cíle balíku
+view_bundle_destinations = Cíle
+view_bundle_fileListView_fileSize = Velikost souboru
+view_bundle_fileListView_loadFailure = Nepodařilo se načíst data balíků
view_bundle_fileListView_md5 = MD5
view_bundle_fileListView_sha256 = SHA256
-view_bundle_files = Files
-view_bundle_latestVersion = Latest Version
-view_bundle_list_backToAll = Back to All Bundles
-view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
This will delete all of their versions, destinations and deployments from the database.
However, this will not remove any content from remote machines.
-view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
-view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
-view_bundle_list_deletesFailure = Failed to delete the bundles
-view_bundle_list_deletesSuccessful = You successfully deleted the bundles
-view_bundle_list_destinationsCount = Destinations Count
-view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
-view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
-view_bundle_list_error3 = Failed to load bundle
-view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
-view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
-view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
-view_bundle_list_tagUpdateFailure = Failed to update bundle tags
-view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
-view_bundle_list_versionsCount = Versions Count
-view_bundle_purge = Purge
-view_bundle_recipe = Recipe
-view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
-view_bundle_revert = Revert
-view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
-view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
-view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
-view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
-view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
-view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
-view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
-view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
-view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
-view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
-view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
-view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT To]
{1}
-view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
-view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
-view_bundle_revertWizard_revertStep_reverting = Reverting...
-view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
-view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
-view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
-view_bundle_revertWizard_title = Bundle Revert
-view_bundle_revertWizard_windowTitle = Bundle Revert Wizard
-view_bundle_tree_loadFailure = Failed to load bundle data
-view_bundle_version_backToBundle = Back to Bundle
-view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
-view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
-view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
This will not remove any content from remote machines.
-view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
-view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
-view_bundle_version_loadFailure = Failed to load bundle version
-view_bundle_versions = Versions
-view_configCompare_comparingConfigs = Comparing Configurations
-view_configCompare_configCompare = Configuration Comparison
-view_configEdit_addItem = Add Item to List
-view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
-view_configEdit_confirm_2 = Are you sure you want to delete this row?
-view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
-view_configEdit_editRow = Edit Row
-view_configEdit_enterPropName = Enter the name of the property to be added.
-view_configEdit_error_1 = Configuration is not supported by this Resource.
-view_configEdit_error_2 = Connection settings are not supported by this Resource.
-view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already
used in the set.
-view_configEdit_files = Files
-view_configEdit_hideAll = Hide All
-view_configEdit_jumpToSection = Jump to Section
-view_configEdit_msg_1 = Added property [{0}] to the set.
-view_configEdit_msg_2 = Removed properties from the set.
-view_configEdit_msg_3 = [{0} {1}] deleted from list.
-view_configEdit_msg_4 = Item added to list.
-view_configEdit_properties = Properties
-view_configEdit_tooltip_1 = Delete the selected items from the list.
-view_configEdit_tooltip_2 = Add an item to the list.
-view_configEdit_viewRow = View Row
-view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
-view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
-view_configurationDetails_error_updateFailure = Failed to update configuration.
-view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
-view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
-view_configurationDetails_noConfigurationFetched = No configuration was retrieved. This
means that either the plugin failed to load the configuration or that configuration
collection is merely switched off in the connection settings.
-view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
-view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
-view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
-view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
-view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
-view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
-view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
-view_configurationHistoryList_rollback = Rollback
-view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
-view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
-view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
-view_configurationHistoryList_table_statusFailure = This configuration update failed
-view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
-view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
-view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
-view_configurationHistoryList_title = Configuration History
-view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
-view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
-view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings update
initiated.
-view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings update
initiated for Resource [{0}].
-view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
-view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
-view_core_loggedOut = Logged out
-view_core_noRecentAlerts = There are no recent alerts to report
-view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts
report
-view_core_serverUnreachable = The server is unreachable and may be down
-view_core_uncaught = Globally uncaught exception
-view_dashboardManager_deleteFail = Failed to delete dashboard.
-view_dashboardManager_deleted = Successfully deleted dashboard {0}
-view_dashboardManager_error = Failed to save dashboard to server
-view_dashboardManager_saved = Saved dashboard {0} to server
-view_dashboardManager_success = Saved dashboard
-view_dashboard_favorites_error1 = Failed to load favorite Resources.
-view_dashboardsManager_error1 = Failed to add new dashboard
-view_dashboardsManager_message_title_details = <h1>Welcome to
{0}</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>
-view_dashboards_confirm1 = Are you sure you want to delete
-view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
-view_dashboards_portlets_refresh_multiple_min = {0} minutes
-view_dashboards_portlets_refresh_none = No Refresh
-view_dashboards_portlets_refresh_one_min = 1 minute
-view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
+view_bundle_files = Soubory
+view_bundle_latestVersion = Poslední verze
+view_bundle_list_backToAll = Zpět na všechy balíky
+##view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
This will delete all of their versions, destinations and deployments from the database.
However, this will not remove any content from remote machines.
+view_bundle_list_deleteFailure = Nepodařilo se smazat balík [{0}]
+view_bundle_list_deleteSuccessful = Úspěšně jste smazali balík [{0}]
+view_bundle_list_deletesFailure = Nepodařilo se smazat balíky
+view_bundle_list_deletesSuccessful = Úspěšně jste smazali balíky
+view_bundle_list_destinationsCount = Počet cílů
+view_bundle_list_error1 = Nepodařilo se načíst balík k nasazení [{0}]
+view_bundle_list_error2 = Nepodařilo se získat 1 balík k nasazení [{0}]
+view_bundle_list_error3 = Nepodařilo se získat balík
+view_bundle_list_loadFailure = Nepodařilo se získat balík k nasazení [{0}]
+view_bundle_list_loadWithLatestFailure = Nepodařilo se získat balík s poslední verzí
+view_bundle_list_singleLoadFailure = Nepodařilo se získat 1 balík k nasazení [{0}]
+view_bundle_list_tagUpdateFailure = Nepodařilo se změnit tagy balíku
+view_bundle_list_tagUpdateSuccessful = Úspěšně jste změnili tagy balíku
+view_bundle_list_versionsCount = Čítač verzí
+view_bundle_purge = Vyčistit
+view_bundle_recipe = Recept
+view_bundle_resDeployDS_loadFailure = Nepodařilo se načíst nasazení
+view_bundle_revert = Vrátit
+view_bundle_revertWizard_confirmStep_confirmation = Navracuji aktuální nasazení do
předchozího nasazení. Klikněte na Další pro pokračování...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Nepodařilo se nalézt
aktuální nasazení; nemohu vrátit
+view_bundle_revertWizard_confirmStep_liveDeployment = Aktuální nasazení
+view_bundle_revertWizard_confirmStep_name = Potvrzení zvrácených nasazení
+view_bundle_revertWizard_confirmStep_noLiveDeployment = Žádná aktuální nasazení nebyla
nalezeny v cíli [{0}]
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = Žádná aktuální nasazení
nebyla nalezeny v cíli
+##view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}]
cannot be reverted because there is no prior deployment for the destination [{1}]
+##view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Předchozí nasazení
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Čisté nasazení? (smažete předchozí
nasazení v cílových adresářích)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Nepodařilo se získat jméno
nasazení
+view_bundle_revertWizard_getInfoStep_name = Poskytnutí informací o vrácení
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Popis vrácení nasazení
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [VRÁTIT Z] {0} [VRÁTIT Na]
{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName = Jméno vráceného nasazení
+view_bundle_revertWizard_revertStep_name = Nasadit balík na cílové platformy
+view_bundle_revertWizard_revertStep_reverting = Vracím...
+view_bundle_revertWizard_revertStep_scheduled = Úspěšně jste naplánovali navrácení
nasazení!
+view_bundle_revertWizard_revertStep_scheduledDetails = Úspěšně jste naplánovali navrácení
nasazení [{0}] pro skupinu zdrojů [{1}]!
+view_bundle_revertWizard_revertStep_scheduledFailure = Nepodařilo se naplánovat vrácení
nasazení!
+view_bundle_revertWizard_title = Vrácení balíku
+view_bundle_revertWizard_windowTitle = Průvodce vrácení balíku
+view_bundle_tree_loadFailure = Nepodařilo se načíst data balíku
+view_bundle_version_backToBundle = Zpět na balík
+view_bundle_version_bundleVersionTagUpdateFailure = Nepodařilo se změnit tagy pro verzi
balíku
+view_bundle_version_bundleVersionTagUpdateSuccessful = Úspěšně jste změnili tagy pro
verzi balíku
+view_bundle_version_deleteConfirm = Jste si jisti, že chcete smazat tuto verzi balíku?
Nesmaže to již nasazený obsah na strojích.
+view_bundle_version_deleteFailure = Nepodařilo se smazat verzi balíku [{0}]
+view_bundle_version_deleteSuccessful = Úspěšně jste smazali verzi balíku [{0}]
+view_bundle_version_loadFailure = Nepodařilo s načíst verzi balíku
+view_bundle_versions = Verze
+view_configCompare_comparingConfigs = Porovnat konfigurace
+view_configCompare_configCompare = Porovnání konfigurace
+view_configEdit_addItem = Přidat položku do seznamu
+view_configEdit_confirm_1 = Jste si jisti, že chcete smazat vybrané vlastnosti z
množiny?
+view_configEdit_confirm_2 = Jste si jisti, že chcete smazat tento řádek?
+view_configEdit_confirm_3 = Jste si jisti, že chcete smazat [{0}] vybrané [{1}]?
+view_configEdit_editRow = Editovat řádek
+view_configEdit_enterPropName = Vložte platné jméno vlastnosti, která má být přidána.
+view_configEdit_error_1 = Konfigurace pro tento zdroj není podporována.
+view_configEdit_error_2 = Nastavení připojení pro tento zdroj není podporováno.
+view_configEdit_error_3 = Nelze přidat vlastnost nazvanou [{0}]. Jméno té vlastnosti se
už používá.
+view_configEdit_files = Soubory
+view_configEdit_hideAll = Skrýt vše
+view_configEdit_jumpToSection = Přejít na sekci
+view_configEdit_msg_1 = Přidána vlastnost [{0}]
+view_configEdit_msg_2 = Vlastnost odebrána z množiny.
+view_configEdit_msg_3 = [{0} {1}] smazáno ze seznamu.
+view_configEdit_msg_4 = Položka přidána do seznamu.
+view_configEdit_properties = Vlastnosti
+view_configEdit_tooltip_1 = Smazat vybrané položky ze seznamu.
+view_configEdit_tooltip_2 = Přidat položku do seznamu.
+view_configEdit_viewRow = Zobrazit řádek
+view_configurationDetails_allPropertiesValid = Všechny vlastnosti konfigurace mají platné
hodnoty, takže konfigurace bude uložena.
+view_configurationDetails_configNotUpdatedDueToNoChange = Konfigurace nebyla změněna,
protože nová konfigurace je ekvivalentní té stávající.
+view_configurationDetails_error_updateFailure = Nepodařilo se změnit konfiguraci.
+view_configurationDetails_messageConcise = Konfigurace změněna - současná verze je {0}.
+view_configurationDetails_messageDetailed = Konfigurace změněna na verzi {0} pro zdroj
[{1}].
+##view_configurationDetails_noConfigurationFetched = No configuration was retrieved. This
means that either the plugin failed to load the configuration or that configuration
collection is merely switched off in the connection settings.
+view_configurationDetails_noPermission = Nemáte dostatečná oprávnění k editaci
konfigurace tohoto zdroje.
+##view_configurationDetails_somePropertiesInvalid = The following configuration
properties have invalid values: {0}. The values must be corrected before the configuration
can be saved.
+view_configurationHistoryDetails_error_loadFailure = Nepodařilo se načíst historii
konfigurace.
+view_configurationHistoryList_cannotDeleteCurrent = Jedna z vybraných položek historie
reprezentuje současnou konfiguraci - nelze odstranit.
+view_configurationHistoryList_cannotDeleteGroupItems = Jedna z vybraných položek historie
je součástí konfigurace skupiny - musíte nejprve vyčistit historii rodičovské skupiny.
+view_configurationHistoryList_delete_failure = Nepodařilo se smazat historii konfigurace
+view_configurationHistoryList_delete_success = Úspěšně jste smazal vybrané položky
konfigurace.
+view_configurationHistoryList_rollback = Zvrátit (rollback)
+view_configurationHistoryList_rollback_failure = Nepodařilo se zvrátit konfiguraci.
Původní konfigurace stále platí.
+view_configurationHistoryList_rollback_success = Úspěšně jste zvrátili konfiguraci na
vybranou.
+view_configurationHistoryList_table_clickStatusIcon = Klikněte na stavovou ikonu pro
detaily
+view_configurationHistoryList_table_statusFailure = Změna konfigurace selhala
+view_configurationHistoryList_table_statusInprogress = Změna konfigurace stále probíhá
+view_configurationHistoryList_table_statusNochange = Žádné změny nebyly provedeny v
konfiguraci
+view_configurationHistoryList_table_statusSuccess = Změna konfigurace byla úspěšná
+view_configurationHistoryList_title = Historie konfigurace
+view_connectionSettingsDetails_allPropertiesValid = Všechna pole nastavení mají platné
hodnoty, proto bude nastavení uloženo.
+view_connectionSettingsDetails_error_updateFailure = Nepodařilo se změnit nastavení
připojení.
+view_connectionSettingsDetails_messageConcise_updateSuccess = Nastavení připojení bylo
zadáno.
+view_connectionSettingsDetails_messageDetailed_updateSuccess = Nastavení připojení bylo
úspěšné pro zdroj [{0}].
+view_connectionSettingsDetails_noPermission = Nemáte dostatečná oprávnění ke změně
nastavení připojení zdroje.
+view_connectionSettingsDetails_somePropertiesInvalid = Následující položky měly neplatné
hodnoty: {0}. Tyto hodnoty musíte opravit, aby šlo nastavení uložit.
+view_core_loggedOut = Odhlášeno
+view_core_noRecentAlerts = Nejsou žádné nedávné výstrahy k hlášení
+view_core_recentAlerts = Je [{0}] nedávných výstrah - klikněte pro přechod na hlášení
+view_core_serverUnreachable = Server je nedosažitelný, možná spadl
+view_core_uncaught = Globálné nezachycená výjimka
+view_dashboardManager_deleteFail = Nepodařilo se smazat dashboard.
+view_dashboardManager_deleted = Úspěšně jste smazali dashboard {0}
+view_dashboardManager_error = Nepodařilo se uložit dashboard
+view_dashboardManager_saved = Dashboard {0} byl uložen na server
+view_dashboardManager_success = Dashboard uložen
+view_dashboard_favorites_error1 = Nepodařilo se načíst oblíbené zdroje.
+view_dashboardsManager_error1 = Nepodařilo se přidat nový dashboard
+view_dashboardsManager_message_title_details = <h1>Vítejte v
{0}</h1>\n<p>RHQ projekt je abstraktní a modulárně založená platforma pro
management, která poskytuje systémy pro řízení a správu mnoha produktů a jiných platforem
napříč množinou klíčových vlastností. Celý projekt je navržen do do vrstvených modulů,
které poskytují flexibilní architekturu pro nasazení. Poskytuje centrální uživatelské
rozhraní pro audit a správu historických informací napříč celým podnikem. Architektura
Server/Agenti poskytuje vzdálenou správu a zásuvné moduly implementují všechny specifické
požadavky pro jednotlivé spravované produkty.</p>\n <p>Tento výchozí dashboard
(palubní deska) může být editován kliknutím na tlačítko (editační mód) nahoře.</p>
+view_dashboards_confirm1 = Jste si jisti, že to chcete smazat
+view_dashboards_portlets_refresh_fail1 = Nepodařilo se změnit interval auto aktualizace
pro portlety
+view_dashboards_portlets_refresh_fail2 = Nepodařilo se zneplatnit obnovování pro
portlety
+view_dashboards_portlets_refresh_multiple_min = {0} minut
+view_dashboards_portlets_refresh_none = Bez obnovy
+view_dashboards_portlets_refresh_one_min = 1 minuta
+view_dashboards_portlets_refresh_success1 = Obnovovací interval pro portlety, které se
umí sami obnovovat
+view_dashboards_portlets_refresh_success2 = Zastavuji obnovování pro portlety, které se
umí sami obnovovat
view_dashboards_title = Dashboard
-view_drift_button_detectNow = Detect Now
-view_drift_button_pinToDef = Pin to Definition
-view_drift_button_pinToDef_confirm = Pinning will set this snapshot as snapshot 0 for the
definition. All other existing snapshots will be removed from the definition. The
definition will be be marked as pinned and subsequent drift will always be reported
against the pinned snapshot. Pin this snapshot to the definition?
-view_drift_button_pinToTemplate = Pin to Template
-view_drift_button_pinToTemplate_confirm = After pinning, this snapshot will be set to the
initial snapshot for all definitions created using the template. If pinned to an existing
template then the template''s existing definitions will be pinned to the new
initial snapshot and their existing snapshots will be removed. Continue to template
selection?
-view_drift_carousel_sizeFilterLabel = Snapshot Display Max
-view_drift_carousel_startFilterLabel = Snapshot Start
-view_drift_category_fileAdded = File Added
-view_drift_category_fileChanged = File Changed
-view_drift_category_fileNew = Newly Detected
-view_drift_category_fileRemoved = File Removed
-view_drift_confirm_deleteAllDefs = Delete all drift detection definitions?
-view_drift_confirm_deleteDefs = Delete the selected drift detection definition(s)?
-view_drift_confirm_deleteTemplate = Warning! Deleting this template will also cause all
attached drift definitions to be deleted as well. Those attached definitions along with
all of their snapshots will be permanently removed from the system. Detached definitions
will not be removed. Are you sure you want to continue?
-view_drift_failure_deleteDefs = Failed to delete some or all drift detection
definitions.
-view_drift_failure_deleteTemplates = Failed to delete some or all of the drift templates
-view_drift_failure_detectNow = Failed to submit drift detection run request
-view_drift_failure_load = Failed to fetch drift instances
-view_drift_failure_pinToDef = Failed to pin snapshot to definition
-view_drift_success_defUpdated = Drift detection definition updated and will affect the
next detection run as applicable.
-view_drift_success_delete = Successfully deleted {0} drift instances
-view_drift_success_deleteDefs = Successfully deleted {0} drift detection definitions
-view_drift_success_deleteTemplate = Successfully deleted {0} drift templates
-view_drift_success_detectNow = Successfully submitted drift detection run request
-view_drift_success_pinToDef = Successfully pinned snapshot {0} to drift definition.
-view_drift_success_templateUpdated = Drift template updated and changes pushed to
attached definitions.
-view_drift_table_attached = Attached?
-view_drift_table_baseDir = Base Directory
-view_drift_table_driftHandlingMode = Drift Handling
-view_drift_table_driftHandlingMode_normal = normal
-view_drift_table_driftHandlingMode_plannedChanges = planned changes
-view_drift_table_hover_defNotPinned = The drift definition is not pinned Click to view
the initial snapshot.
-view_drift_table_hover_defPinned = The drift definition is pinned to its initial
snapshot. Click to view the initial snapshot.
-view_drift_table_hover_edit = Click to view or edit the drift definition or template
properties.
-view_drift_table_hover_outOfCompliance_drift = There is drift
-view_drift_table_hover_outOfCompliance_noBaseDir = The base directory does not exist
-view_drift_table_hover_templateNotPinned = The drift template is not pinned to a
snapshot.
-view_drift_table_hover_templatePinned = The drift template is pinned to a snapshot.
Click to view the pinned snapshot.
-view_drift_table_newFile = New File
-view_drift_table_oldFile = Old File
-view_drift_table_pinned = Pinned?
-view_drift_table_resourceDef = Resource Drift Detection Definition
-view_drift_table_resourceHistory = Resource Drift History
-view_drift_table_snapshot = Snapshot
-view_drift_table_snapshotTime = Snapshot Time
-view_drift_table_template = Template
-view_drift_table_title_initialSnapshot = Initial Snapshot for Definition [{0}] : Pinned =
[{1}]
-view_drift_table_title_snapshot = Snapshot [{0}] for Definition [{1}]
-view_drift_table_title_templateSnapshot = Pinned Snapshot for Template [{0}]
-view_drift_wizard_addDef_failure = Failed to add new drift detection definition [{0}]
-view_drift_wizard_addDef_infoStepHelp = Each drift detection definition describes a set
of files for which drift monitoring will be performed. The definition can be enabled and
disabled, defines the detection run interval, and specifies a base directory and optional
file filters. For each resource type offering drift detection there will be one or more
predefined templates to use as a starting definition, which can then be edited.
-view_drift_wizard_addDef_infoStepName = Select the Template for the new Drift Detection
Definition
-view_drift_wizard_addDef_success = Successfully added new drift detection definition
[{0}]. Agent(s) will be updated.
-view_drift_wizard_addDef_templatePrompt = Drift Definition Templates
-view_drift_wizard_addDef_title = Add Drift Detection Definition for Resource of Type
[{0}]
-view_drift_wizard_addDef_windowTitle = Add Drift Detection Definition Wizard
-view_drift_wizard_addTemplate_failure = Failed to add new drift template [{0}]
-view_drift_wizard_addTemplate_infoStepHelp = Each drift template is derived from an
existing template. This provides a quick way to build new templates that are similar to
existing templates, or originate with plugin defined templates. Like a drift definition,
the template describes a set of files for which drift monitoring will be performed.
Depending on the situation a definition derived from the template may or may not be
allowed to alter the file set, or change other settings. Template names must be unique
within a resource type.
-view_drift_wizard_addTemplate_infoStepName = Select the Starting Template
-view_drift_wizard_addTemplate_success = Successfully added new drift template [{0}].
-view_drift_wizard_addTemplate_title = Add Drift Definition Template for Type [{0}]
-view_drift_wizard_addTemplate_windowTitle = Add Drift Definition Template Wizard
-view_drift_wizard_pinTemplate_confirmNotPinned = Once pinned each current and future
drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue pinning
the template to the snapshot?
-view_drift_wizard_pinTemplate_confirmPinned = Warning! This template is already pinned.
The template can be re-pinned to this new snapshot. Once re-pinned each current and
future drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue
re-pinning the template with this new snapshot?
-view_drift_wizard_pinTemplate_duplicate_name_error = Template name must be unique
-view_drift_wizard_pinTemplate_failure = Failed to pin snapshot to drift template [{0}]
-view_drift_wizard_pinTemplate_infoStepExistingTemplate = Pin to ExistingTemplate
-view_drift_wizard_pinTemplate_infoStepHelp = Once pinned each current and future drift
definition for that template will have its initial snapshot set to the template''s
pinned snapshot. And the definition itself will be marked as pinned. This is used to
detect drift from an expected file set. Note that existing definitions for this template
will be reset to the new initial snapshot, and all exsiting snapshots will be removed.
-view_drift_wizard_pinTemplate_infoStepName = Select the Template to be Pinned
-view_drift_wizard_pinTemplate_infoStepNewTemplate = Pin to New Template (derived from the
snapshot''s Drift Definition)
-view_drift_wizard_pinTemplate_infoStepRadioHelp = The snapshot can be pinned to a new or
existing drift template. The ''New Template" option allows the user to
promote a trusted definition and snapshot, at the resource level, to the type level. The
new template can then be applied to members of the type. The new template is initially a
copy of the snapshot''s drift definition but can then be edited in the next step.
The name should be changed and must be a unique drift template name for the type. The
"Existing Template" option allows the user to pin, or re-pin, an existing
template with the selected snapshot. To be valid, the existing template must monitor the
same directories as the snapshot''s definition. The selection box displays only
valid existing templates. If there are no valid existing templates this option can not be
selected.
-view_drift_wizard_pinTemplate_infoStepRadioTitle = Template Selection
-view_drift_wizard_pinTemplate_infoStepSelectBlocked = There are no existing templates
that monitor the same directories as the snapshot''s definition. Select the
"New Template" option to continue.
-view_drift_wizard_pinTemplate_infoStepSelectTitle = Existing Templates
-view_drift_wizard_pinTemplate_success = Successfully pinned the drift template [{0}].
-view_drift_wizard_pinTemplate_title = Pin Snapshot [{0}] of Definition [{1}] to a Drift
Template for type [{2}]
-view_drift_wizard_pinTemplate_windowTitle = Pin Drift Definition Template Wizard
-view_dynagroup_children = DynaGroup Children
-view_dynagroup_compatible = Compatible
-view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
-view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
-view_dynagroup_definitionLoadFailure = Failed to load group definitions
-view_dynagroup_definitions = DynaGroup Definitions
-view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
-view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
-view_dynagroup_editing = Editing [{0}]
-view_dynagroup_exprBuilder_addExpression = Add Expression
-view_dynagroup_exprBuilder_comparisonType = Comparison Type
-view_dynagroup_exprBuilder_comparisonType_contains = contains
-view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
-view_dynagroup_exprBuilder_comparisonType_equals = equals
-view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
-view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
-view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
-view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
-view_dynagroup_exprBuilder_expression = Expression
-view_dynagroup_exprBuilder_expressionType = Expression Type
-view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
-view_dynagroup_exprBuilder_expressionType_resource = Resource
-view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
-view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
-view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
-view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
-view_dynagroup_exprBuilder_expressionType_trait = Trait
-view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
-view_dynagroup_exprBuilder_groupBy = Group by
-view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
-view_dynagroup_exprBuilder_noPlugins = --No plugins--
-view_dynagroup_exprBuilder_noProperties = --No properties--
-view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
-view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
-view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
-view_dynagroup_exprBuilder_propertyName = Property Name
-view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
-view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
-view_dynagroup_exprBuilder_resource = Resource
-view_dynagroup_exprBuilder_resourceType = Resource Type
-view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
-view_dynagroup_exprBuilder_resource_child = Child
-view_dynagroup_exprBuilder_resource_grandparent = Grandparent
-view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
-view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
-view_dynagroup_exprBuilder_resource_parent = Parent
-view_dynagroup_exprBuilder_resource_resource = Resource
-view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
-view_dynagroup_exprBuilder_savedExpression = Saved Expression
-view_dynagroup_exprBuilder_title = Expression Builder
-view_dynagroup_exprBuilder_unset = Unset
-view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
-view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
-view_dynagroup_expression = Expression
-view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
-view_dynagroup_expressionSet = Expression Set
-view_dynagroup_lastCalculationTime = Last Calculation Time
-view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
-view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
-view_dynagroup_mixed = Mixed
-view_dynagroup_newGroupDefinition = New Group Definition
-view_dynagroup_nextCalculationTime = Next Calculation Time
-view_dynagroup_permDenied = You do not have permission to view group definitions
-view_dynagroup_recalcFailure = Failed to recalculate this group definition
-view_dynagroup_recalcFailureSelection = Failed to recalculate the selected group
definitions
-view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
-view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
-view_dynagroup_recalculate = Recalculate
-view_dynagroup_recalculationInterval = Recalculation Interval (min)
-view_dynagroup_recursive = Recursive
-view_dynagroup_saveAndRecalculate = Save & Recalculate
-view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
-view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
-view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
-view_dynagroup_template_customExpression = Custom Expression...
-view_dynagroup_template_downedResources = All resources currently down
+view_drift_button_detectNow = Detekovat nyní
+view_drift_button_pinToDef = Připnout k definici
+##view_drift_button_pinToDef_confirm = Pinning will set this snapshot as snapshot 0 for
the definition. All other existing snapshots will be removed from the definition. The
definition will be be marked as pinned and subsequent drift will always be reported
against the pinned snapshot. Pin this snapshot to the definition?
+view_drift_button_pinToTemplate = Připnout k šabloně
+##view_drift_button_pinToTemplate_confirm = After pinning, this snapshot will be set to
the initial snapshot for all definitions created using the template. If pinned to an
existing template then the template''s existing definitions will be pinned to the
new initial snapshot and their existing snapshots will be removed. Continue to template
selection?
+view_drift_carousel_sizeFilterLabel = Maximum zobrazených snímků (snapshosts)
+view_drift_carousel_startFilterLabel = Udělat snímek (snapshot)
+view_drift_category_fileAdded = Soubor přidán
+view_drift_category_fileChanged = Soubor změněn
+view_drift_category_fileNew = Nově detekován
+view_drift_category_fileRemoved = Sobor odstraněn
+view_drift_confirm_deleteAllDefs = Smazat všechny definice driftů?
+view_drift_confirm_deleteDefs = Smazat vybrané definice driftů?
+##view_drift_confirm_deleteTemplate = Warning! Deleting this template will also cause all
attached drift definitions to be deleted as well. Those attached definitions along with
all of their snapshots will be permanently removed from the system. Detached definitions
will not be removed. Are you sure you want to continue?
+view_drift_failure_deleteDefs = Nepodařilo se smazat některé definice driftů.
+view_drift_failure_deleteTemplates = Nepodařilo se smazat některé šablony driftů
+view_drift_failure_detectNow = Nepodařilo se vložit požadavek na detekci driftu
+view_drift_failure_load = Nepodařilo se získat instance driftu
+view_drift_failure_pinToDef = Nepodařilo se připnout snímek k definici
+##view_drift_success_defUpdated = Drift detection definition updated and will affect the
next detection run as applicable.
+view_drift_success_delete = Úspěšně smazáno {0} instancí driftu
+view_drift_success_deleteDefs = Úspěšně smazáno {0} definicí driftu
+view_drift_success_deleteTemplate = Úspěšně smazáno {0} šablon driftu
+view_drift_success_detectNow = Úspěšně změněno
+view_drift_success_pinToDef = Úspěšně připnut snímek {0} k definici driftu.
+view_drift_success_templateUpdated = Šablona driftu byla změněna
+view_drift_table_attached = Přiojeno?
+view_drift_table_baseDir = Bázový adresář
+view_drift_table_driftHandlingMode = Práce s driftem
+view_drift_table_driftHandlingMode_normal = normální
+view_drift_table_driftHandlingMode_plannedChanges = plánované změny
+##view_drift_table_hover_defNotPinned = The drift definition is not pinned Click to view
the initial snapshot.
+##view_drift_table_hover_defPinned = The drift definition is pinned to its initial
snapshot. Click to view the initial snapshot.
+##view_drift_table_hover_edit = Click to view or edit the drift definition or template
properties.
+##view_drift_table_hover_outOfCompliance_drift = There is drift
+view_drift_table_hover_outOfCompliance_noBaseDir = Bázový adresář neexistuje
+view_drift_table_hover_templateNotPinned = Šablona driftu není připnuta k žádnému snímku
+view_drift_table_hover_templatePinned = Šablona driftu je připnuta k nějakému snímku.
Klikněte pro zobrazení detailů.
+view_drift_table_newFile = Nový soubor
+view_drift_table_oldFile = Starý soubor
+view_drift_table_pinned = Připnuto?
+view_drift_table_resourceDef = Definice detekce driftu zdroje
+view_drift_table_resourceHistory = Historie driftů zdroje
+view_drift_table_snapshot = Snímek
+view_drift_table_snapshotTime = Čas snímku
+view_drift_table_template = Šablona
+view_drift_table_title_initialSnapshot = Původní šablona pro definici [{0}] : Připnuta =
[{1}]
+view_drift_table_title_snapshot = Snímek [{0}] pro definici [{1}]
+view_drift_table_title_templateSnapshot = Připnutý snímek pro šablonu [{0}]
+##view_drift_wizard_addDef_failure = Failed to add new drift detection definition [{0}]
+##view_drift_wizard_addDef_infoStepHelp = Each drift detection definition describes a set
of files for which drift monitoring will be performed. The definition can be enabled and
disabled, defines the detection run interval, and specifies a base directory and optional
file filters. For each resource type offering drift detection there will be one or more
predefined templates to use as a starting definition, which can then be edited.
+##view_drift_wizard_addDef_infoStepName = Select the Template for the new Drift Detection
Definition
+##view_drift_wizard_addDef_success = Successfully added new drift detection definition
[{0}]. Agent(s) will be updated.
+##view_drift_wizard_addDef_templatePrompt = Drift Definition Templates
+##view_drift_wizard_addDef_title = Add Drift Detection Definition for Resource of Type
[{0}]
+##view_drift_wizard_addDef_windowTitle = Add Drift Detection Definition Wizard
+##view_drift_wizard_addTemplate_failure = Failed to add new drift template [{0}]
+##view_drift_wizard_addTemplate_infoStepHelp = Each drift template is derived from an
existing template. This provides a quick way to build new templates that are similar to
existing templates, or originate with plugin defined templates. Like a drift definition,
the template describes a set of files for which drift monitoring will be performed.
Depending on the situation a definition derived from the template may or may not be
allowed to alter the file set, or change other settings. Template names must be unique
within a resource type.
+##view_drift_wizard_addTemplate_infoStepName = Select the Starting Template
+##view_drift_wizard_addTemplate_success = Successfully added new drift template [{0}].
+##view_drift_wizard_addTemplate_title = Add Drift Definition Template for Type [{0}]
+##view_drift_wizard_addTemplate_windowTitle = Add Drift Definition Template Wizard
+##view_drift_wizard_pinTemplate_confirmNotPinned = Once pinned each current and future
drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue pinning
the template to the snapshot?
+##view_drift_wizard_pinTemplate_confirmPinned = Warning! This template is already pinned.
The template can be re-pinned to this new snapshot. Once re-pinned each current and
future drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue
re-pinning the template with this new snapshot?
+##view_drift_wizard_pinTemplate_duplicate_name_error = Template name must be unique
+##view_drift_wizard_pinTemplate_failure = Failed to pin snapshot to drift template [{0}]
+##view_drift_wizard_pinTemplate_infoStepExistingTemplate = Pin to ExistingTemplate
+##view_drift_wizard_pinTemplate_infoStepHelp = Once pinned each current and future drift
definition for that template will have its initial snapshot set to the template''s
pinned snapshot. And the definition itself will be marked as pinned. This is used to
detect drift from an expected file set. Note that existing definitions for this template
will be reset to the new initial snapshot, and all exsiting snapshots will be removed.
+##view_drift_wizard_pinTemplate_infoStepName = Select the Template to be Pinned
+##view_drift_wizard_pinTemplate_infoStepNewTemplate = Pin to New Template (derived from
the snapshot''s Drift Definition)
+##view_drift_wizard_pinTemplate_infoStepRadioHelp = The snapshot can be pinned to a new
or existing drift template. The ''New Template" option allows the user to
promote a trusted definition and snapshot, at the resource level, to the type level. The
new template can then be applied to members of the type. The new template is initially a
copy of the snapshot''s drift definition but can then be edited in the next step.
The name should be changed and must be a unique drift template name for the type. The
"Existing Template" option allows the user to pin, or re-pin, an existing
template with the selected snapshot. To be valid, the existing template must monitor the
same directories as the snapshot''s definition. The selection box displays only
valid existing templates. If there are no valid existing templates this option can not be
selected.
+##view_drift_wizard_pinTemplate_infoStepRadioTitle = Template Selection
+##view_drift_wizard_pinTemplate_infoStepSelectBlocked = There are no existing templates
that monitor the same directories as the snapshot''s definition. Select the
"New Template" option to continue.
+##view_drift_wizard_pinTemplate_infoStepSelectTitle = Existing Templates
+##view_drift_wizard_pinTemplate_success = Successfully pinned the drift template [{0}].
+##view_drift_wizard_pinTemplate_title = Pin Snapshot [{0}] of Definition [{1}] to a Drift
Template for type [{2}]
+##view_drift_wizard_pinTemplate_windowTitle = Pin Drift Definition Template Wizard
+##view_dynagroup_children = DynaGroup Children
+view_dynagroup_compatible = Kompatibilní
+view_dynagroup_definitionAlreadyExists = Definice skupiny s tímto jménem již existuje
+view_dynagroup_definitionCreated = Úspěšně jste vytvořili definici skupiny nazvanou
[{0}]
+view_dynagroup_definitionLoadFailure = Nepodařilo se načíst definice skupin
+view_dynagroup_definitions = Definice dynamických skupin
+view_dynagroup_deleteFailureSelection = Nepodařilo se smazat vybrané definice skupin
+view_dynagroup_deleteSuccessfulSelection = Úspěšně jste smazali [{0}] definic skupin
+view_dynagroup_editing = Editace [{0}]
+view_dynagroup_exprBuilder_addExpression = Přidat výraz
+view_dynagroup_exprBuilder_comparisonType = Typ k porovnání
+view_dynagroup_exprBuilder_comparisonType_contains = obsahuje
+view_dynagroup_exprBuilder_comparisonType_endsWith = končí na
+view_dynagroup_exprBuilder_comparisonType_equals = je rovno
+view_dynagroup_exprBuilder_comparisonType_startsWith = začíná na
+view_dynagroup_exprBuilder_comparisonType_tooltip = Typ k porovnání
+view_dynagroup_exprBuilder_definingPlugin = Definující zásuvný modul
+view_dynagroup_exprBuilder_definingPlugin_tooltip = Zásuvný modul k vyhledání
+view_dynagroup_exprBuilder_expression = Výraz
+view_dynagroup_exprBuilder_expressionType = Typ výrazu
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Konfigurace zásuvného modulu
+view_dynagroup_exprBuilder_expressionType_resource = Zdroj
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Kategorie zdroje
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Konfigurace zdroje
+view_dynagroup_exprBuilder_expressionType_resourceType = Typ zdroje
+view_dynagroup_exprBuilder_expressionType_tooltip = Typ vlastnosti, na který se výraz
přepne:<br/> <b>Zdroj</b>: Atribut zdroje, jako např. jméno nebo
verze<br/> <b>Typ zdroje</b>: Vyhledat zdroje specifického
typu<br/> <b>Kategorie zdroje</b>: Vyhledat zdroje podle kategorie:
platforma, server, služba<br/> <b>Vlastnost (trait)</b>:Zdroje, které
mají hodnoty pro monitorovanou vlastnost<br/> <b>Konfigurace zásuvných
modulů</b>: Hledat podle konfigurace zásuvného modulu<br/>
<b>Konfigurace zdroje</b>: Hledat podle konfigurace spravovaného zdroje
+view_dynagroup_exprBuilder_expressionType_trait = Vlastnost (trait)
+##view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = Seskupit podle
+##view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --Žádné zásuvné moduly--
+view_dynagroup_exprBuilder_noProperties = --Žádné vlastnosti--
+view_dynagroup_exprBuilder_noResourceTypes = --Žádné typy zdrojů--
+view_dynagroup_exprBuilder_pluginLoadFailure = Nepodařilo se získat seznam zásuvných
modulů
+view_dynagroup_exprBuilder_propLoadFailure = Nepodařilo se získat seznam vlastností
+view_dynagroup_exprBuilder_propertyName = Jméno vlastnosti
+view_dynagroup_exprBuilder_propertyName_tooltip = Jméno vlastnosti pro dotaz. Je to
definováno typem výrazu, ale také typem zdroje.
+view_dynagroup_exprBuilder_resTypeLoadFailure = Nepodařilo se získat seznam typů zdrojů
pro zásuvný modul [{0}]
+view_dynagroup_exprBuilder_resource = Zdroj
+view_dynagroup_exprBuilder_resourceType = Typ zdroje
+view_dynagroup_exprBuilder_resourceType_tooltip = Typ zdroje
+view_dynagroup_exprBuilder_resource_child = Potomek (dítě)
+view_dynagroup_exprBuilder_resource_grandparent = Prarodič
+view_dynagroup_exprBuilder_resource_greatGrandparent = Pra-prarodič
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = Pra-pra-prarodič
+view_dynagroup_exprBuilder_resource_parent = Rodič
+view_dynagroup_exprBuilder_resource_resource = Zdroj
+view_dynagroup_exprBuilder_resource_tooltip = Vyberte úroveň zdroje, jenž chcete použít
ke hledání. Např. vyberte-li "rodič", vyhledáte zdroje, jejichž rodič splní
zbytek vyhledávajících kritérií.
+view_dynagroup_exprBuilder_savedExpression = Uložený výraz
+view_dynagroup_exprBuilder_title = Pomocník tvorby výrazu
+view_dynagroup_exprBuilder_unset = Nenastaveno
+##view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have
a null value in the database. This is not possible using the "=" operator
because of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip = Řetězcová hodnota výrazu pro dotaz
+view_dynagroup_expression = Výraz
+view_dynagroup_expressionBuilderIconTooltip = Pomocník tvorby výrazů...
+view_dynagroup_expressionSet = Množina výrazů
+view_dynagroup_lastCalculationTime = Čas posledního výpočtu
+view_dynagroup_loadDefinitionFailure = Nepodařilo se načíst definici skupiny [{0}]
+view_dynagroup_loadDefinitionMissing = Neexistuje definice skupiny s ID [{0}]
+view_dynagroup_mixed = Smíšená
+view_dynagroup_newGroupDefinition = Nová definice skupiny
+view_dynagroup_nextCalculationTime = Příští čas výpočtu
+view_dynagroup_permDenied = Nemáte dostatečná oprávnění k zobrazení definice skupiny
+view_dynagroup_recalcFailure = Nepodařilo se přepočítat definici skupiny
+view_dynagroup_recalcFailureSelection = Nepodařilo se přepočítat vybrané definice skupin
+view_dynagroup_recalcSuccessful = Úspěšně jste přepočítali definici skupiny
+view_dynagroup_recalcSuccessfulSelection = Úspěšně jste přepočítali [{0}] definic skupin
+view_dynagroup_recalculate = Přepočítat
+view_dynagroup_recalculationInterval = Interval přepočtu (min)
+view_dynagroup_recursive = Rekurzivní
+view_dynagroup_saveAndRecalculate = Uložit & Přepočítat
+view_dynagroup_saveFailure = Nepodařilo se uložit definici skupiny nazvanou [{0}]
+view_dynagroup_saveSuccessful = Úspěšně jste uložil definici skupiny nazvanou [{0}]
+view_dynagroup_singleSaveFailure = Stala se chyba - měla být vytvořena jen jedna
instance, místo toho bylo vytvořeno [{0}] instancí
+view_dynagroup_template_customExpression = Vlastní výraz...
+view_dynagroup_template_downedResources = Všechny zdroje, které právě neběží
view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
-view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unikátní verze
view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
-view_dynagroup_template_platforms = Platform resources in inventory
-view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
-view_groupConfigEdit_member = Member
-view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
-view_groupConfigEdit_saveReminder = You changed some settings - do not forget to save
those changes or they will be lost.\n
-view_groupConfigEdit_setAll = Set all values to:
-view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
-view_groupConfigEdit_unset = Unset
-view_groupConfigEdit_valsDiff = member values differ
-view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
-view_groupCreateWizard_createFailure = Failed to create the resource group [{0}] : {1}
-view_groupCreateWizard_createStepName = Group Settings
-view_groupCreateWizard_createStep_group_exists = Group with name [{0}] already exists
-view_groupCreateWizard_createStep_recursive = Recursive
-view_groupCreateWizard_createSuccessful_concise = You have created a new resource group
with name [{0}].
-view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
-view_groupCreateWizard_membersStepName = Select Members
-view_groupCreateWizard_title = Create Group
-view_groupCreateWizard_windowTitle = Create Group
-view_groupInventoryMembers_button_updateMembership = Update Membership...
-view_groupInventoryMembers_title_updateMembership = Update Membership
-view_group_detail_failLoad = Failed to load group for group with ID [{0}]
-view_group_detail_failLoadComp = Group with id [{0}] does not exist or is not accessible
-view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
-view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
-view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
-view_group_meas_schedules_title = Group Metric Collection Schedules
-view_group_membership_failFetch = Failed to fetch Resource Group
-view_group_membership_saveFailure = Failed to update membership of group [{0}]
-view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
-view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
-view_group_operationScheduleDetails_field_execute = Execute
-view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
-view_group_operationScheduleDetails_memberResource = Member Resource
-view_group_operationScheduleDetails_value_parallel = in parallel
-view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
-view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
-view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
-view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
-view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
-view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
-view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
-view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
-view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
-view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
-view_group_pluginConfig_members_statusDetails = Status Details
-view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
-view_group_pluginConfig_members_statusSuccess = This configuration update was successful
-view_group_pluginConfig_members_title = Group Connection Settings Member Histories
-view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
-view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
-view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_pluginConfig_table_statusDetails = Status Details
-view_group_pluginConfig_table_statusFailure = This group configuration update failed
-view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
-view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
-view_group_pluginConfig_table_title = Group Connection Settings History
-view_group_pluginConfig_table_viewMemberHistory = View Member History
-view_group_pluginConfig_table_viewSettings = View Settings
-view_group_pluginConfig_view_groupProperties = Group Properties
-view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
-view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
-view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
-view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
-view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
-view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
-view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
-view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
-view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
-view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
-view_group_resConfig_members_statusDetails = Status Details
-view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_resConfig_members_statusNochange = No changes were made to this configuration
-view_group_resConfig_members_statusSuccess = This configuration update was successful
-view_group_resConfig_members_title = Group Resource Configuration Member Histories
-view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
-view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_resConfig_table_failFetch = Failed to get group resource config history
-view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_resConfig_table_statusDetails = Status Details
-view_group_resConfig_table_statusFailure = This group configuration update failed
-view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
-view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_resConfig_table_statusSuccess = This group configuration update was
successful
-view_group_resConfig_table_title = Group Resource Configuration History
-view_group_resConfig_table_viewMemberHistory = View Member History
-view_group_resConfig_table_viewSettings = View Settings
-view_group_resConfig_view_groupProperties = Group Properties
-view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
-view_group_summary_compatible = Compatible
-view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
-view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
-view_group_summary_dynamic = Dynamic
-view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
-view_group_summary_groupDefinition = Group Definition
-view_group_summary_memberCount = Member Count
-view_group_summary_memberType = Member Type
-view_group_summary_mixed = Mixed
-view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
-view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
+view_dynagroup_template_platforms = Platformové zdroje v inventáři
+view_dynagroup_template_uniqueResourceTypes = Unikátní typy zdrojů v inventáři
+view_groupConfigEdit_member = Člen
+view_groupConfigEdit_noListProps = Nastavení pro skupinu nejsou v současnosti dostupná.
+view_groupConfigEdit_saveReminder = Změnili jste některá nastavení - nezapomeňte je
uložit, aby nebyla ztracena
+view_groupConfigEdit_setAll = Nastavit všechny hodnoty na:
+view_groupConfigEdit_tooltip_1 = Členské hodnoty se liší - klikněte na ikonu pro jejich
editaci
+view_groupConfigEdit_unset = Nezadáno
+view_groupConfigEdit_valsDiff = členské hodnoty se liší
+view_groupConfigEdit_valsDiffForProp = Členské hodnoty pro vlastnost [{0}]
+view_groupCreateWizard_createFailure = Nepodařilo se vytvořit skupinu zdrojů [{0}] : {1}
+view_groupCreateWizard_createStepName = Nastavení skupiny
+view_groupCreateWizard_createStep_group_exists = Skupina se jménem [{0}] již existuje
+view_groupCreateWizard_createStep_recursive = Rekurzivně
+view_groupCreateWizard_createSuccessful_concise = Vytvořili jste novou skupinu zdrojů se
jménem [{0}].
+view_groupCreateWizard_createSuccessful_full = Vytvořili jste novou [{0}] skupinu zdrojů
se jménem [{1}], která obsahuje [{2}] členských zdrojů
+view_groupCreateWizard_membersStepName = Vybrat členy
+view_groupCreateWizard_title = Vytvořit skupinu
+view_groupCreateWizard_windowTitle = Vytvořit skupinu
+view_groupInventoryMembers_button_updateMembership = Upravit členství...
+view_groupInventoryMembers_title_updateMembership = Upravit členství
+view_group_detail_failLoad = Nepodařilo se načíst skupinu s ID [{0}]
+view_group_detail_failLoadComp = Skupina s id [{0}] neexistuje nebo není přístupná
+view_group_detail_failRecursiveChange = Nepodařilo se změnit rekurzivní nastavení pro
skupinu [{0}]
+view_group_detail_recursiveChange = Úspěšně jste změnili rekurzivní nastavení pro skupinu
[{0}]
+view_group_inventory_activity_no_recent_metrics = Tato skupina nemá žádná nedávná měření
+view_group_meas_schedules_title = Rozvrhy sběru měření pro skupinu
+view_group_membership_failFetch = Nepodařilo se získat skupinu zdrojů
+view_group_membership_saveFailure = Nepodařilo se změnit příslušnost ke skupině [{0}]
+view_group_membership_saveSuccessful = Změnili jste příslušnost ke skupině [{0}]
+view_group_operationScheduleDetails_failedToLoadMembers = Nepodařilo se získat členské
zdroje skupiny.
+view_group_operationScheduleDetails_field_execute = Spustit
+view_group_operationScheduleDetails_field_haltOnFailure = Ukončit při chybě?
+view_group_operationScheduleDetails_memberResource = Členský zdroj
+view_group_operationScheduleDetails_value_parallel = paralelně
+view_group_operationScheduleDetails_value_sequential = v pořadí specifikovaném níže
(použijte drag and drop na členské zdroje pro změnu pořadí)
+view_group_pluginConfig_edit_currentGroupProperties = Vlastnosti aktuální skupiny
+view_group_pluginConfig_edit_invalid = Následující položky nastavení připojení mají
neplatné hodnoty a musejí být opraveny, aby mohlo být nastavení uloženo: [{0}]
+view_group_pluginConfig_edit_noperm = Nemáte potřebná oprávnění pro editaci tohoto
nastavení připojení skupiny
+view_group_pluginConfig_edit_saveFailure = Nepodařilo se zahájit aktualizaci nastavení
připojení pro [{0}] kompatibilní skupinu nazvanou [{1}]
+view_group_pluginConfig_edit_saveInitiated_concise = Aktualizace nastavení připojení
skupiny byla zahájena
+view_group_pluginConfig_edit_saveInitiated_full = Aktualizace nastavení připojení pro
skupinu byla zahájena pro [{0}] kompatibilní skupinu nazvanou [{1}]
+view_group_pluginConfig_edit_saveTooltip = Změnit nastavení připojení všem členům
skupiny
+view_group_pluginConfig_edit_valid = Všechny položky nastavení mají validní hodnoty,
proto může být nastavení uloženo.
+view_group_pluginConfig_members_fetchFailure = Nepodařilo se získat historii konfigurace
zásuvného modulu pro skupinu [{0}]
+view_group_pluginConfig_members_fetchFailureConn = Nepodařilo se získat členskou
konfiguraci připojení pro [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = Změna konfigurace právě
probíhá. Musíte počkat než se změna provede před zobrazením změněných dat.
+view_group_pluginConfig_members_statusDetails = Detaily o stavu
+view_group_pluginConfig_members_statusFailure = Změna konfigurace se nezdařila z
neznámých důvodů
+view_group_pluginConfig_members_statusInprogress = Změna konfigurace stále probíhá
+view_group_pluginConfig_members_statusNochange = Žádné změny nebyly provedeny v
konfiguraci
+view_group_pluginConfig_members_statusSuccess = Konfigurace byla změněna
+view_group_pluginConfig_members_title = Historie nastavení připojení členů skupiny
+view_group_pluginConfig_table_clickStatusIcon = Klikněte na stavovou ikonu pro více
detailů
+view_group_pluginConfig_table_deleteFailure = Nepodařilo se smazat historii konfigurace
zásuvného modulu pro skupinu
+view_group_pluginConfig_table_deleteSuccessful = Smazali jste [{0}] položek historie
+view_group_pluginConfig_table_failFetch = Nepodařilo se získat historii konfigurace
zásuvného modulu pro skupinu
+view_group_pluginConfig_table_msg1 = Zobrazit historii členů včetně stavu jejich
individuálních zdrojů
+view_group_pluginConfig_table_statusDetails = Detaily o stavu
+view_group_pluginConfig_table_statusFailure = Změna konfigurace skupiny se nezdařila
+view_group_pluginConfig_table_statusInprogress = Změna konfigurace skupiny stále probíhá
+view_group_pluginConfig_table_statusNochange = Žádné změny nebyly provedeny v konfiguraci
skupiny
+view_group_pluginConfig_table_statusSuccess = Změna konfigurace skupiny proběhla úspěšně
+view_group_pluginConfig_table_title = Historie nastavení připojení pro skupinu
+view_group_pluginConfig_table_viewMemberHistory = Zobrazit historii členů
+view_group_pluginConfig_table_viewSettings = Zobrazit nastavení
+view_group_pluginConfig_view_groupProperties = Vlastnosti skupiny
+view_group_pluginConfig_view_noperm = Nemáte potřebná oprávnění pro zobrazení nastavení
připojení
+view_group_resConfig_edit_invalid = Následující položky konfigurace mají neplatné hodnoty
a musejí být opraveny, aby mohla být konfigurace uložena: [{0}]
+view_group_resConfig_edit_loadFail = Nepodařilo se načíst konfigurace členských zdrojů
pro [{0}]
+view_group_resConfig_edit_noperm = Nemáte potřebná oprávnění pro editaci této konfigurace
skupiny
+view_group_resConfig_edit_saveFailure = Nepodařilo se zahájit aktualizaci konfigurace pro
[{0}] kompatibilní skupinu nazvanou [{1}]
+view_group_resConfig_edit_saveInitiated_concise = Aktualizace konfigurace skupiny byla
zahájena
+view_group_resConfig_edit_saveInitiated_full = Aktualizace konfigurace pro skupinu byla
zahájena pro [{0}] kompatibilní skupinu nazvanou [{1}]
+view_group_resConfig_edit_saveTooltip = Změnit konfiguraci všem členům skupiny
+view_group_resConfig_edit_valid = Všechny položky konfigurace mají validní hodnoty, proto
může být konfigurace uložena.
+view_group_resConfig_members_fetchFailure = Nepodařilo se získat historii změn v
konfiguraci pro členy skupiny [{0}]
+view_group_resConfig_members_fetchFailureConfig = Nepodařilo se získat konfiguraci pro
členské zdroje [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = Změna konfigurace skupiny
zdrojů právě probíhá. Musíte počkat dokud se změna neprovede, abyste viděli nové nastavení
skupiny.
+view_group_resConfig_members_statusDetails = Detaily o stavu
+view_group_resConfig_members_statusFailure = Změna konfigurace se nezdařila z neznámých
důvodů
+view_group_resConfig_members_statusInprogress = Změna v konfiguraci stále probíhá
+view_group_resConfig_members_statusNochange = Žádné změny v konfiguraci nebyly provedeny
+view_group_resConfig_members_statusSuccess = Konfigurace byla změněna
+view_group_resConfig_members_title = Historie členů konfigurační skupiny zdroje
+view_group_resConfig_table_clickStatusIcon = Klikněte na stavovou ikonu pro detaily
+view_group_resConfig_table_deleteFailure = Nepodařilo se smazat historii
+view_group_resConfig_table_deleteSuccessful = Smazali jste [{0}] položek historie
+view_group_resConfig_table_failFetch = Nepodařilo se získat historii konfigurace skupiny
zdrojů
+view_group_resConfig_table_msg1 = Zobrazi historii členů včetně stavu každého zdroje
+view_group_resConfig_table_statusDetails = Detaily o stavu
+view_group_resConfig_table_statusFailure = Nepodařilo se změnit konfiguraci této skupině
+view_group_resConfig_table_statusInprogress = Změna konfigurace pro tuto skupinu stále
probíhá
+view_group_resConfig_table_statusNochange = Žádné změny v konfiguraci pro tuto skupinu
+view_group_resConfig_table_statusSuccess = Konfigurace této skupiny byla změněna
+view_group_resConfig_table_title = Historie konfigurací skupiny zdrojů
+view_group_resConfig_table_viewMemberHistory = Zobrazit historii členů
+view_group_resConfig_table_viewSettings = Vlastnosti pohledu (view settings)
+view_group_resConfig_view_groupProperties = Vlastnosti skupiny
+view_group_resConfig_view_noperm = Nemáte oprávnění, abyste mohli vidět konfiguraci
zdroje
+view_group_summary_compatible = Kompatibilní
+view_group_summary_descUpdateFailure = Nepodařilo se změnit popis skupiny zdrojů s ID
[{0}]
+view_group_summary_descUpdateSuccessful = Změnili jste popis této skupině zdrojů
+view_group_summary_dynamic = Dynamické
+view_group_summary_dynamicNote = Dynamické jména skupiny a popis je spravován, a proto
není editovatelný.
+view_group_summary_groupDefinition = Definice skupiny
+view_group_summary_memberCount = Počet členů
+view_group_summary_memberType = Typ člena
+view_group_summary_mixed = Smíšené
+view_group_summary_nameUpdateFailure = Nepodařilo se změnit jméno skupiny zdrojů s ID
[{0}] - nelze změnit z [{1}] na [{2}]
+view_group_summary_nameUpdateSuccessful = Změnili jste jméno skupiny zdrojů s ID [{0}] z
[{1}] na [{2}]
view_group_summary_recursive = Rekurzivní
view_helpTop_description = Tato sekce umožňuje přístup do dokumentace, k tutoriálům,
verzi a další užitečné informace.
view_help_section_product = Produkt
@@ -1539,8 +1539,8 @@ view_inventory_resources_deleteFailed = Nepodařilo se odstranit
vybrané zdroje
view_inventory_resources_deleteSuccessful = Požadavek na smazání zdroje byl úspěšně
předán všem agentům.
view_inventory_resources_disableConfirm = Jste si jisti, že chcete zneplatnit vybrané
zdroje? Při zneplatnění jsou hlášení o dostupnosti zdroje ignorovány. Zneplatňování může
být užitečné při údržbě systému, kdy se předpokládá, že zdroje nebudou fungovat (plánovaný
restart apod.)
view_inventory_resources_disableFailed = Nepodařilo se zneplatnit vybrané zdroje.
-view_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
-view_inventory_resources_enableConfirm = Jste si jisti, že chcete povolit vybrané zdroje?
Při povolení se dostupnost nastaví na neznámou (UNKNOWN) dokud neprobehne další agentovo
hlášení o dostupnosti zdrojů. Agenti budou požádáni o tento report co nejdříve.
+vview_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
+view_inventory_resources_enableConfirm = Jste si jisti, že chcete povolit vybrané zdroje?
Při povolení se dostupnost nastaví na neznámou (UNKNOWN) dokud neproběhne další agentovo
hlášení o dostupnosti zdrojů. Agenti budou požádáni o tento report co nejdříve.
view_inventory_resources_enableFailed = Nepodařilo se povolit vybrané zdroje.
view_inventory_resources_enableSuccessful = Úspěšně jste povolili vybrané zdroje a jejich
potomky, [{0}] zdrojů.
view_inventory_resources_loadFailed = Nepodařilo se načíst složená data zdroje
@@ -1557,7 +1557,7 @@ view_inventory_summary_agent_error2 = Nepodařilo se pingnout id
zdroje spravova
view_inventory_summary_agent_error3 = Nemáte dostatečná oprávnění na zobrazení detailů o
tomto agentovi.
view_inventory_summary_agent_fullEnpoint = Plný koncový bod (Full Endpoint)
view_inventory_summary_agent_fullEnpoint_err1 = !Žádný vzdálený koncový bod není
asociován s tímto zdrojem!
-view_inventory_summary_agent_last_title = Posldně přijatá zpráva o dostupnosti
+view_inventory_summary_agent_last_title = Posledně přijatá zpráva o dostupnosti
view_inventory_summary_agent_status_title = Komunikační stav agenta
view_inventory_summary_agent_title = Agent spravující tento zdroj
view_inventory_unavailableServers = Nedostupné servery
@@ -1579,7 +1579,7 @@ view_measureRange_start = Časový rozsah - Start
view_measureTable_chartMetricValues = Vykreslit vybraná měření
view_measureTable_getLive = Získat aktuální hodnotu
view_measureTable_getLive_failure = Nepodařilo se získat hodnoty těchto měření. Ujistěte
se, že agent běží a že spravovaný zdroj také.
-view_measureTable_live_title = Živá data
+view_measureTable_live_title = Aktuální data
view_measure_nan = --žádná data nejsou k dispozici--
view_measurementOob_title = Podezřelá měření
view_menuBar_logout = Odhlásit se
@@ -1661,7 +1661,7 @@ view_portlet_help_eventcounts = Tento portlet zobrazí počet událostí
v závi
view_portlet_help_favoriteResources = Tento portlet zobrazí uživatelovy oblíbené zdroje.
view_portlet_help_graph = Tento portlet zobrazí graf měření.
view_portlet_help_inventorySummary = Tento portlet zobrazí krátké shrnutí uživatelových
měření a inventáře.
-view_portlet_help_mashup = Tento portlet zobrazí obsah získaný voláním vzdáleného HTTP
requstu (je použit HTML element iframe)
+view_portlet_help_mashup = Tento portlet zobrazí obsah získaný voláním vzdáleného HTTP
požadavku (je použit HTML element iframe)
view_portlet_help_message = Tento portlet zobrazí statickou HTML zprávu. Vlastnost
<i>zpráva (message)</i>, musí být nakonfigurována.
view_portlet_help_metrics = Tento portlet zobrazí do grafu poslední naměřená data v
závislosti na nastavených zobrazovacích kritériích.
view_portlet_help_none = Pro tento portlet není k dispozici žádná nápověda.
@@ -1716,7 +1716,7 @@ view_remoteAgentInstall_installInfo = Informace o instalaci agenta
view_remoteAgentInstall_installPath = Instalační cesta k agentovi
view_remoteAgentInstall_owner = Vlastník
view_remoteAgentInstall_promptHost = Hostitel, kde je, nebo kam bude, agent nainstalován
-##view_remoteAgentInstall_promptInstallPath = ???Where the agent is or will be installed.
If you aren''t sure where an agent is installed, enter a parent directory and
click the ''Find Agent'' button to scan that directory and below. If you
enter an empty path, common locations are searched on the host for an agent install.
+##view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
view_remoteAgentInstall_promptPassword = Přihlašovací údaje použité pro autentizaci
uživatele přes SSH
view_remoteAgentInstall_promptPort = Port na němž naslouchá SSH. Pokud není specifikováno
použije se 22
view_remoteAgentInstall_promptUser = Jméno uživatele jehož přihlašovací údaje jsou
předány hostiteli přes SSH
@@ -1726,7 +1726,7 @@ view_remoteAgentInstall_startAgent = Start Agent
view_remoteAgentInstall_startAgentResults = Agent start výsledky: [{0}]
view_remoteAgentInstall_step = Krok
view_remoteAgentInstall_stopAgent = Stop Agent
-view_remoteAgentInstall_stopAgentResults = Agent stop výsledky: [{0}]\n
+view_remoteAgentInstall_stopAgentResults = Agent stop výsledky: [{0}]
view_remoteAgentInstall_success = Instalace agenta proběhla úspěšně
view_remoteAgentInstall_updateStatus = Obnovit stav
view_reportsTop_description = Tato sekce poskytuje přístup do všech reportů.
@@ -1740,7 +1740,7 @@ view_reports_platforms = Využití platformy
view_reports_subsystems = Subsystémy
view_resourceResourceGroupList_error_fetchFailure = Nepodařilo se načíst skupiny zdrojů.
view_resourceResourceGroupList_error_updateFailure = Nepodařilo se změnit přiřazené
skupiny zdrojů.
-view_resourceResourceGroupList_message_updateSuccess = Členství ve skupině změneno pro
[{0}].
+view_resourceResourceGroupList_message_updateSuccess = Členství ve skupině změněno pro
[{0}].
view_resource_inventory_activity_changed_by = Změnil
view_resource_inventory_activity_criteria_no_recent_events = Žádné události neodpovídají
zobrazovacím kritériím.
view_resource_inventory_activity_no_recent_alerts = Žádné nedávné výstrahy
@@ -1790,7 +1790,7 @@ view_resource_monitor_calltime_loadFailed = Nelze načíst doby
volání
view_resource_monitor_calltime_lookupFailed = Nelze načíst zdroj pro dobu volání
view_resource_monitor_calltime_maximum = Maximum
view_resource_monitor_calltime_minimum = Minimum
-view_resource_monitor_calltime_title = Data dob volání\n
+view_resource_monitor_calltime_title = Data dob volání
view_resource_monitor_detailed_graph_label = Detailní graf
view_resource_monitor_graph_instructions = Najeďte myší na bod s daty v grafu
view_resource_monitor_graph_live_tooltip = Klikněte pro aktuální graf s aktuálními
hodnotami
@@ -1802,14 +1802,14 @@ view_resource_monitor_table_avg = Průměr
view_resource_monitor_table_last = Poslední
view_resource_monitor_table_max = Maximum
view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_cleanup = After addressing the issue, you will need
to delete the message below to clear the 'managed component error' icon from the
previous screen.???
+##view_resource_title_component_errors_cleanup = After addressing the issue, you will
need to delete the message below to clear the 'managed component error' icon from
the previous screen.
view_resource_title_component_errors_tooltip = Zobrazí chyby řízených komponent (managed
component). Klikněte pro detaily.
view_resource_title_tagUpdateFailed = Nepodařilo se změnit tagy zdroje
view_searchBar_defaultPattern = pojmenujte svůj vzor
view_searchBar_instructional_failSuggest = Nepodařilo se vygenerovat návrhy, podívejte se
do logu serveru kvůli možným chybám.
view_searchBar_instructional_noSuggest = Nic nenalezeno, vložte jiný vzor
view_searchBar_instructional_refresh = Nepodařilo se získat "uložená hledání",
prosím obnovte si stránku.
-view_searchBar_savedSearch_delete = Úspěšně smazáno "uložené hledání" [{0}]\n
+view_searchBar_savedSearch_delete = Úspěšně smazáno "uložené hledání" [{0}]
view_searchBar_savedSearch_failDelete = Nepodařilo se smazat "uložené hledání"
se jménem [{0}]
view_searchBar_savedSearch_failFind = Nepodařilo se nalézt "uložené hledání" se
jménem [{0}]
view_searchBar_savedSearch_failRename = Nepodařilo se přejmenovat "uložené
hledání" se jménem [{0}]
@@ -1839,8 +1839,8 @@ view_summaryOverview_header_detectedErrors = Detekované chyby
view_summaryOverview_title_errorDetailsWindow = Detaily o chybě
view_summaryOverview_tooltip_detectedErrors = Klikněte na příslušné řádky, abyste uviděli
chybu.
view_tableSection_backButton = Zpět na seznam
-view_tableSection_error_badId = Nelze zobrazit detail pro [{0}]. Neplatné 'id':
[{0}]. Prosím nahlašte tuto chybu.
-view_tableSection_error_noId = Záznam tabulky [{0}] nemá atribut 'id'. Prosím
nahlašte tuto chybu.
+view_tableSection_error_badId = Nelze zobrazit detail pro [{0}]. Neplatné 'id':
[{1}]. Prosím nahlaste tuto chybu.
+view_tableSection_error_noId = Záznam tabulky [{0}] nemá atribut 'id'. Prosím
nahlaste tuto chybu.
view_table_drawFail = Chyba při vykreslení tabulky [{0}].
view_table_matchingRows = Odpovídajících řádků: {0} (vybráno: {1})
view_table_totalRows = Celkem řádků: {0} (vybráno: {1})
@@ -1848,7 +1848,7 @@ view_table_totalRowsUnknown = Celkem řádků: ?
view_tabs_common_activity = Aktivita
view_tabs_common_agent = Agent
view_tabs_common_availability = Dostupnost
-view_tabs_common_calltime = Calltime???
+view_tabs_common_calltime = Doba volání
view_tabs_common_child_history = Historie potomků
view_tabs_common_child_resources = Potomci zdroje
view_tabs_common_connectionSettings = Nastavení připojení
@@ -1861,7 +1861,7 @@ view_tabs_common_drift = Drift
view_tabs_common_events = Události
view_tabs_common_graphs = Grafy
view_tabs_common_group_members = Členové skupiny
-view_tabs_common_group_membership = Přislušnost skupině
+view_tabs_common_group_membership = Příslušnost skupině
view_tabs_common_groups = Skupiny
view_tabs_common_history = Historie
view_tabs_common_inventory = Inventář
@@ -1917,7 +1917,7 @@ view_tree_common_contextMenu_resourceGraph = Graf metrik zdrojů
view_tree_common_contextMenu_saveChartToDashboardFailure = Nepodařilo se uložit
dashboard
view_tree_common_contextMenu_saveChartToDashboardSuccessful = Dashboard byl uložen [{0}]
view_tree_common_contextMenu_type_name_label = Typ: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group???
+##view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
view_tree_common_loadFailed_children = Nepodařilo se načíst potomky pro uzel
view_tree_common_loadFailed_create = Nepodařilo se vytvořit view pro tento uzel
view_tree_common_loadFailed_descendants = Nepodařilo se načíst potomky pro strom
@@ -1927,8 +1927,8 @@ view_tree_common_loadFailed_groupTree = Nepodařilo se načíst strom
skupiny
view_tree_common_loadFailed_node = Nepodařilo se načíst data pro tento uzel
view_tree_common_loadFailed_root = Nepodařilo se načíst kořen stromu
view_tree_common_loadFailed_selection = Nepodařilo se označit tento uzel
-view_tree_common_loadFailed_update = Nepodařilo seobnovit view pro tento uzel
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]???
+view_tree_common_loadFailed_update = Nepodařilo se obnovit view pro tento uzel
+##view_tree_group_error_updateAutoCluster = Failed to create or update autocluster
backing group. key: [{0}]
view_type_parentId = ID rodiče
view_type_resourceTypes = Typy zdrojů
view_type_typeTreeLoadFailure = Nepodařilo se nahrát typ zdroje (tree data)
@@ -1978,8 +1978,8 @@ widget_jobTriggerEditor_value_on = on
widget_jobTriggerEditor_value_until = Dokud
widget_recordEditor_error_invalidViewPath = Neplatná cesta: [{0}]
widget_recordEditor_error_multipleRecords = Bylo vráceno více záznamů - očekáván byl
právě jeden.
-widget_recordEditor_error_noRecords = Žádné záznamy nebyly vráceny - očekáván byl práve
jeden.
-widget_recordEditor_error_operation = Operace selhala. Stala se chyba.
+widget_recordEditor_error_noRecords = Žádné záznamy nebyly vráceny - očekáván byl právě
jeden.
+widget_recordEditor_error_operation = Operace selhala. Stala se chyba. Asi vítr.
widget_recordEditor_error_operationInvalidValues = Operace selhala - jedno nebo více polí
má neplatné hodnoty
widget_recordEditor_error_permissionCreate = [{0}] nemohl být vytvořen, Nemáte požadovaná
oprávnění.
widget_recordEditor_error_unsupportedOperationType = Nepovolený typ operace: [{0}]
@@ -1993,13 +1993,13 @@ widget_recordEditor_title_edit = Editovat {0} [{1}]
widget_recordEditor_title_new = Vytvořit nový {0}
widget_recordEditor_title_view = Zobrazit {0} [{1}]
widget_recordEditor_warn_validation = Jeden nebo více polí má neplatné hodnoty. [{0}]
nemůže být uložen dokud nebudou hodnoty v pořádku.
-widget_resourceFactoryWizard_archPrompt = Architektura bálíčku
+widget_resourceFactoryWizard_archPrompt = Architektura balíčku
widget_resourceFactoryWizard_configTemplatePrompt = Šablona nastavení zdroje
widget_resourceFactoryWizard_contentTemplatePrompt = Šablona nastavení nasazení
widget_resourceFactoryWizard_createSubmit = Požadavek na vytvoření zdroje se jménem [{0}]
byl úspěšně vložen. Může trvat několik minut než se objeví v inventáři.
widget_resourceFactoryWizard_createSubmitType = Požadavek na vytvoření zdroje typu [{0}]
byl úspěšně vložen. Může trvat několik minut než se objeví v inventáři.
widget_resourceFactoryWizard_createWizardTitle = Vytvořit nový zdroj typu [{0}]
-widget_resourceFactoryWizard_createWizardWindowTitle = Pruvodce vytvoření zdroje
+widget_resourceFactoryWizard_createWizardWindowTitle = Průvodce vytvoření zdroje
widget_resourceFactoryWizard_editConfigStepName = Volby nasazení
widget_resourceFactoryWizard_execute1 = Nepodařilo se vytvořit nový zdroj - chybí verze
balíku
widget_resourceFactoryWizard_execute2 = Nepodařilo se vytvořit nový zdroj
@@ -2013,7 +2013,7 @@ widget_resourceFactoryWizard_infoStepName = Informace o zdroji
widget_resourceFactoryWizard_infoStep_loadFail = Nepodařilo se získat dostupné
architektury
widget_resourceFactoryWizard_namePrompt = Nové jméno zdroje
widget_resourceFactoryWizard_templatePrompt = Šablona pro nastavení připojení
-widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.\n???\n
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
widget_resourceFactoryWizard_uploadFailure = Nepodařilo se nahrát soubor
widget_resourceFactoryWizard_uploadFileStepName = Nahrát obsah souboru zdroje
widget_resourceFactoryWizard_uploadInProgress = Upload právě probíhá... Může to trvat
několik minut.
@@ -2024,6 +2024,6 @@ widget_resourceSelector_pleaseSelectResource = Prosím, vyberte
zdroj
widget_resourceSelector_selectMultipleResources = Vyber zdroje
widget_resourceSelector_selectResource = Vyber zdroj
widget_typeCache_loadFail = Nepodařilo se načíst metadata typu zdroje.
-widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]\nNeplatné URL.
Neznámy typ šablony: [{0}]
+widget_typeTree_badTemplateType = Neplatné URL. Neznámy typ šablony: [{0}]
widget_typeTree_badTypeId = Neplatné URL. Špatný typ zdroje ID: [{0}]
-widget_typeTree_loadFail = Nepodařilo se načíst typy zdrojů
+ widget_typeTree_loadFail = Nepodařilo se načíst typy zdrojů
commit 5a68c1a24e0e1ed8c37a7f26c04d74fe834b01cd
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 11:41:39 2012 -0400
fix additional errors caused by the recent upgrade of the antrun plugin
diff --git a/modules/enterprise/remoting/cli/pom.xml
b/modules/enterprise/remoting/cli/pom.xml
index 61d2804..b5a7461 100644
--- a/modules/enterprise/remoting/cli/pom.xml
+++ b/modules/enterprise/remoting/cli/pom.xml
@@ -101,7 +101,7 @@
<id>client-distribution</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<ant
antfile="${basedir}/src/main/scripts/rhq-client.build.xml"
dir="${basedir}" target="prepare-dist" inheritAll="false"
inheritRefs="false">
<property name="buildNumber"
value="${buildNumber}" />
@@ -132,7 +132,7 @@
<property name="rhq.client.build.exclude.cli.jar"
value="${rhq.client.build.exclude.cli.jar}" />
<property
name="rhq.client.build.include.client.jar"
value="${rhq.client.build.include.client.jar}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -142,7 +142,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- generate the I18N resource bundles -->
<taskdef name="i18n"
classpathref="maven.runtime.classpath"
classname="mazz.i18n.ant.I18NAntTask" />
@@ -152,7 +152,7 @@
<include name="**/ClientI18NResourceKeys.class"
/>
</classfileset>
</i18n>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -278,7 +278,7 @@
<id>deploy</id>
<phase>install</phase>
<configuration>
- <tasks>
+ <target>
<echo>*** Cleaning old
${rhq.deploymentDir}...</echo>
<mkdir dir="${rhq.deploymentDir}" />
<delete failonerror="false">
@@ -287,7 +287,7 @@
<property name="deployment.file"
location="${rhq.deploymentDir}/${rhq.deploymentZip}" />
<echo>*** Updating
${deployment.file}...</echo>
<copy
file="${basedir}/target/${rhq.projectJar}" toFile="${deployment.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -297,12 +297,12 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<echo>*** Deleting
${rhq.deploymentDir}...</echo>
<delete failonerror="false">
<fileset dir="${rhq.deploymentDir}"
includes="*" />
</delete>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -334,7 +334,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -354,7 +354,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -364,7 +364,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -385,7 +385,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -399,3 +399,4 @@
</profiles>
</project>
+
diff --git a/modules/enterprise/server/container/pom.xml
b/modules/enterprise/server/container/pom.xml
index cb5b0de..0ce9d26 100644
--- a/modules/enterprise/server/container/pom.xml
+++ b/modules/enterprise/server/container/pom.xml
@@ -152,7 +152,7 @@
<id>prepare-container</id>
<phase>generate-resources</phase>
<configuration>
- <tasks>
+ <target>
<echo>settings.localRepository=${settings.localRepository}</echo>
<echo>project.build.outputDirectory=${project.build.outputDirectory}</echo>
<ant antfile="src/main/scripts/rhq-container.build.xml"
target="prepare-container">
@@ -201,7 +201,7 @@
<property name="rhq.sync.endpoint-address"
value="${rhq.sync.endpoint-address}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -212,7 +212,7 @@
<id>prepare-release</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<echo>Preparing the release at
${project.build.outputDirectory}...</echo>
<ant antfile="src/main/scripts/rhq-container.build.xml"
target="prepare-release">
<property name="project.build.outputDirectory"
value="${project.build.outputDirectory}" />
@@ -232,7 +232,7 @@
<property name="rhq.dev.ds.type-mapping"
value="${rhq.dev.ds.type-mapping}" />
<property name="rhq.server.enable.web.services"
value="${rhq.server.enable.ws}" />
</ant>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -309,7 +309,7 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.containerDir}" />
<echo>*** Copying updated files from
target${file.separator}${project.build.finalName}${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
@@ -320,7 +320,7 @@
<fileset dir="${deployment.dir}/bin"
includes="*.sh" />
<fileset dir="${deployment.dir}/jbossas/bin"
includes="*.sh" />
</chmod>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -331,11 +331,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.containerDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -369,7 +369,7 @@
<id>cobertura-merge</id>
<phase>pre-integration-test</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
@@ -379,7 +379,7 @@
<include name="**/cobertura.ser" />
</fileset>
</cobertura-merge>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
diff --git a/modules/enterprise/server/sars/agent-sar/pom.xml
b/modules/enterprise/server/sars/agent-sar/pom.xml
index eefc78b..2c7d4e4 100644
--- a/modules/enterprise/server/sars/agent-sar/pom.xml
+++ b/modules/enterprise/server/sars/agent-sar/pom.xml
@@ -77,7 +77,7 @@
<execution>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<echo>sarDirectory="${sarDirectory}"</echo>
<echo>Putting the agent jar in the sar's
classpath</echo>
<mkdir dir="${sarDirectory}/lib" />
@@ -119,7 +119,7 @@
<echo>Creating the sar with the name rhq-agent.sar that should be
deployed in the JBossAS server</echo>
<move
file="${project.build.directory}/${project.build.finalName}"
tofile="${project.build.directory}/rhq-agent.sar" />
-->
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -162,7 +162,7 @@
<id>deploy</id>
<phase>package</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Copying updated files from
target${file.separator}classes${file.separator} to
${deployment.dir}${file.separator}...</echo>
<copy todir="${deployment.dir}"
verbose="${rhq.verbose}">
@@ -171,7 +171,7 @@
<property name="deployment.descriptor.file"
location="${deployment.dir}/META-INF/jboss-service.xml" />
<echo>*** Touching ${deployment.descriptor.file} to
force redeployment of ${rhq.deploymentName}...</echo>
<touch file="${deployment.descriptor.file}"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -182,11 +182,11 @@
<id>undeploy</id>
<phase>clean</phase>
<configuration>
- <tasks>
+ <target>
<property name="deployment.dir"
location="${rhq.deploymentDir}" />
<echo>*** Deleting
${deployment.dir}${file.separator}...</echo>
<delete dir="${deployment.dir}" />
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -220,7 +220,7 @@
<id>cobertura-instrument</id>
<phase>process-test-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup" />
@@ -240,7 +240,7 @@
<include name="**/*.class" />
</fileset>
</cobertura-instrument>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -250,7 +250,7 @@
<id>cobertura-report</id>
<phase>prepare-package</phase>
<configuration>
- <tasks>
+ <target>
<taskdef classpathref="maven.plugin.classpath"
resource="tasks.properties" />
<!-- prepare directory structure for cobertura-->
<mkdir dir="target/cobertura" />
@@ -271,7 +271,7 @@
</cobertura-report>
<!-- delete cobertura.properties file -->
<delete file="target/classes/cobertura.properties"
/>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -284,4 +284,5 @@
</profile>
</profiles>
-</project>
\ No newline at end of file
+</project>
+
commit e509360f53303fb74694f2ceafbaa515347700f4
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 23 11:13:20 2012 -0400
fix antrun error
diff --git a/modules/enterprise/agentupdate/pom.xml
b/modules/enterprise/agentupdate/pom.xml
index dfd089e..12c9449 100644
--- a/modules/enterprise/agentupdate/pom.xml
+++ b/modules/enterprise/agentupdate/pom.xml
@@ -65,7 +65,7 @@
<execution>
<phase>process-classes</phase>
<configuration>
- <tasks>
+ <target>
<!-- create our rhq-agent-update-version.properties file that goes in
our jar -->
<tstamp>
@@ -76,7 +76,7 @@
rhq-agent.latest.build-number=${buildNumber}
</echo>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
@@ -88,7 +88,7 @@ rhq-agent.latest.build-number=${buildNumber}
<id>agent-update-package</id>
<phase>process-resources</phase>
<configuration>
- <tasks>
+ <target>
<copy
file="${settings.localRepository}/org/rhq/rhq-enterprise-agent/${project.version}/rhq-enterprise-agent-${project.version}.zip"
todir="${project.build.outputDirectory}" />
<fileset dir="${settings.localRepository}"
id="run.classpath.fileset">
<!-- we do not need logging (yet) in AgentUpdate
@@ -106,7 +106,7 @@ rhq-agent.latest.build-number=${buildNumber}
<exclude name="images/" />
</patternset>
</unjar>
- </tasks>
+ </target>
</configuration>
<goals>
<goal>run</goal>
commit 0d6eeef6958fce4e5fdc0d6ed779c2e4ea14057e
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed May 23 14:58:11 2012 +0200
ignore in git the *~ files produced as backups by some text editors
diff --git a/.gitignore b/.gitignore
index 28ccabc..07d07ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@ modules/enterprise/gui/content_http-war/build/classes/
*_private.sh
.*.jsfdia
.wtpmodules
+*~
commit 1a8cbc1c27c3376306845f3baa9bd1f428fff92f
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Wed May 23 14:56:10 2012 +0200
[BZ 801638] - Modified the as7 cluster script to use the live configs of
the servers in question to overcome the possibility of the server having
stale data (or even having no config data at all).
diff --git
a/modules/enterprise/remoting/cli/src/main/samples/add-as7-standalone-server-to-cluster.js
b/modules/enterprise/remoting/cli/src/main/samples/add-as7-standalone-server-to-cluster.js
index 887f8b7..b64f89b 100644
---
a/modules/enterprise/remoting/cli/src/main/samples/add-as7-standalone-server-to-cluster.js
+++
b/modules/enterprise/remoting/cli/src/main/samples/add-as7-standalone-server-to-cluster.js
@@ -28,20 +28,33 @@
* @param copyDeployments whether or not to copy the deployments from the existing
* member to the new member
*/
-function addToCluster(newAs7Resource, newNodeName, existingClusterMemberResource,
doCopyDeployments) {
+function addToCluster(newAs7Resource, newNodeName, existingClusterMemberResource,
doCopyDeployments) {
println("Reading config of the existing cluster member");
- var clusterConfig = _getClusterSignificantConfig(existingClusterMemberResource);
+ var existingMember = {
+ 'id' : existingClusterMemberResource.id,
+ 'resourceConfiguration' :
_getLiveResourceConfiguration(existingClusterMemberResource),
+ 'pluginConfiguration' : _getPluginConfiguration(existingClusterMemberResource)
+ };
+
+ var clusterConfig =
_getClusterSignificantConfig(existingClusterMemberResource.children,
+ existingMember.pluginConfiguration, existingMember.resourceConfiguration);
println("Reading config of the new member");
- var memberConfig = _getClusterSignificantConfig(newAs7Resource);
+ var newMember = {
+ 'id' : newAs7Resource.id,
+ 'resourceConfiguration' : _getLiveResourceConfiguration(newAs7Resource),
+ 'pluginConfiguration' : _getPluginConfiguration(newAs7Resource)
+ };
+
+ var memberConfig = _getClusterSignificantConfig(newAs7Resource.children,
newMember.pluginConfiguration, newMember.resourceConfiguration);
- var memberResourceConfiguration =
newAs7Resource.resourceConfiguration.deepCopy(false);
+ var memberResourceConfiguration = newMember.resourceConfiguration.deepCopy(false);
if (memberConfig['config'] != clusterConfig['config']) {
println("The configurations of the servers differ.\n" +
"The new cluster member's configuration will be changed to match the
configuration of the existing member.");
-
newAs7Resource.updatePluginConfiguration(_changeConfig(newAs7Resource.pluginConfiguration,
clusterConfig['config']));
+
newAs7Resource.updatePluginConfiguration(_changeConfig(newMember.pluginConfiguration,
clusterConfig['config']));
//we need to restart straight away so that we see the changes to the
//rest of the configuration caused by the change of current config.
@@ -49,12 +62,17 @@ function addToCluster(newAs7Resource, newNodeName,
existingClusterMemberResource
newAs7Resource.restart();
//refresh the resource
- newAs7Resource = ProxyFactory.getResource(newAs7Resource.id);
-
+ newAs7Resource = ProxyFactory.getResource(newMember.id);
+ newMember = {
+ 'id' : newAs7Resource.id,
+ 'resourceConfiguration' : _getLiveResourceConfiguration(newAs7Resource),
+ 'pluginConfiguration' : _getPluginConfiguration(newAs7Resource)
+ };
+
//refresh the cluster specific config after the restart with the new
//config
- memberConfig = _getClusterSignificantConfig(newAs7Resource);
- memberResourceConfiguration = newAs7Resource.resourceConfiguration;
+ memberConfig = _getClusterSignificantConfig(newAs7Resource.children,
newMember.pluginConfiguration, newMember.resourceConfiguration);
+ memberResourceConfiguration = newMember.resourceConfiguration;
}
//now check what's the node name we see
@@ -63,7 +81,7 @@ function addToCluster(newAs7Resource, newNodeName,
existingClusterMemberResource
_updateNodeName(memberResourceConfiguration, newNodeName);
newAs7Resource.updateResourceConfiguration(memberResourceConfiguration);
- memberResourceConfiguration =
newAs7Resource.resourceConfiguration.deepCopy(false);
+ memberResourceConfiguration = newMember.resourceConfiguration.deepCopy(false);
}
//now apply the socket binding changes for jgroups and other cluster
@@ -76,10 +94,12 @@ function addToCluster(newAs7Resource, newNodeName,
existingClusterMemberResource
println("Updating socket bindings of jgroups, messaging and modcluster
subsystems");
- var portOffset =
javascriptString(child.resourceConfiguration.getSimpleValue('port-offset',
'0'));
+ var resourceConfig = _getLiveResourceConfiguration(child);
+
+ var portOffset =
javascriptString(resourceConfig.getSimpleValue('port-offset', '0'));
var clusterMemberPortOffset = clusterConfig['port-offset'];
- var newConfig = child.resourceConfiguration.deepCopy(false);
+ var newConfig = resourceConfig.deepCopy(false);
_updateSocketBindings(newConfig, portOffset, clusterMemberPortOffset,
clusterConfig['jgroups']);
_updateSocketBindings(newConfig, portOffset, clusterMemberPortOffset,
clusterConfig['messaging']);
@@ -183,21 +203,28 @@ function _getConfigName(as7PluginConfig) {
var args = argsValue.split('\n');
- var shortParam = '-c ';
- var longParam = '--config=';
-
+ var possibleParams = ['-c ', '-c=', '--server-config='];
+
var ret = null;
for (i in args) {
var arg = args[i];
- var cPos = arg.indexOf(shortParam);
- var ccPos = arg.indexOf(longParam);
-
- if (cPos >= 0) {
- ret = arg.substring(cPos + shortParam.length).trim();
- } else if (ccPos >= 0) {
- ret = arg.substring(ccPos + longParam.length).trim();
- }
+ var found = false;
+
+ for(j in possibleParams) {
+ var param = possibleParams[j];
+ var pos = arg.indexOf(param);
+
+ if (pos >= 0) {
+ ret = arg.substring(pos + param.length).trim();
+ found = true;
+ break;
+ }
+ }
+
+ if (found) {
+ break;
+ }
}
if (ret != null && ret.startsWith('%') &&
ret.endsWith('%')) {
@@ -213,24 +240,24 @@ function _changeConfig(pluginConfig, configName) {
var args = argsValue.split('\n');
- var shortParam = '-c ';
- var longParam = '--config=';
-
+ var possibleParams = ['-c ', '-c=', '--server-config='];
+
var updated = false;
for (i in args) {
var arg = args[i];
- var cPos = arg.indexOf(shortParam);
- var ccPos = arg.indexOf(longParam);
+ for(j in possibleParams) {
+ var param = possibleParams[j];
- if (cPos >= 0) {
- args[i] = "-c " + configName;
- updated = true;
- } else if (ccPos >= 0) {
- args[i] = "--config=" + configName;
- updated = true;
- }
+ var pos = arg.indexOf(param);
+
+ if (pos >= 0) {
+ args[i] = param + configName;
+ updated = true;
+ break;
+ }
+ }
if (updated) {
break;
@@ -424,22 +451,25 @@ function _updateSocketBindings(socketBindingsConfig, portOffset,
clusterMemberPo
*
* @param resource the resource proxy of the AS7
*/
-function _getClusterSignificantConfig(as7Resource) {
+function _getClusterSignificantConfig(children, pluginConfiguration,
resourceConfiguration) {
var ret = {};
- ret['config'] =
javascriptString(_getConfigName(as7Resource.pluginConfiguration));
+ ret['config'] = javascriptString(_getConfigName(pluginConfiguration));
- ret['node-name'] =
javascriptString(as7Resource.resourceConfiguration.getSimpleValue('node-name',
null));
+ ret['node-name'] =
javascriptString(resourceConfiguration.getSimpleValue('node-name', null));
//the standalone server has a single socket binding group
- for(var i in as7Resource.children) {
- var child = as7Resource.children[i];
+ for(var i in children) {
+ var child = children[i];
if (child.resourceType.plugin != 'JBossAS7') {
continue;
}
if (child.resourceType.name == 'SocketBindingGroup') {
- ret['port-offset'] =
javascriptString(child.resourceConfiguration.getSimpleValue('port-offset',
'0'));
- var ports = child.resourceConfiguration.get('*');
+
+ var resourceConfig = _getLiveResourceConfiguration(child);
+
+ ret['port-offset'] =
javascriptString(resourceConfig.getSimpleValue('port-offset', '0'));
+ var ports = resourceConfig.get('*');
var portIterator = ports.list.iterator();
var jgroups = {};
@@ -476,9 +506,11 @@ function _getClusterSignificantConfig(as7Resource) {
var caches = {};
+ var containerConfig = _getLiveResourceConfiguration(cacheContainer);
+
cacheContainers[cacheContainer.name] = {
- 'default-cache' :
javascriptString(cacheContainer.resourceConfiguration.getSimpleValue('default-cache',
null)),
- 'aliases' :
_asArray(cacheContainer.resourceConfiguration.get('aliases')),
+ 'default-cache' :
javascriptString(containerConfig.getSimpleValue('default-cache', null)),
+ 'aliases' :
_asArray(containerConfig.get('aliases')),
'caches' : caches
};
@@ -486,10 +518,10 @@ function _getClusterSignificantConfig(as7Resource) {
var cache = cacheContainer.children[c];
caches[cache.name] = {
- '_flavor' :
javascriptString(cache.resourceConfiguration.getSimpleValue('_flavor', null)),
- 'batching' :
javascriptString(cache.resourceConfiguration.getSimpleValue('batching', null)),
- 'indexing' :
javascriptString(cache.resourceConfiguration.getSimpleValue('indexing', null)),
- 'mode' :
javascriptString(cache.resourceConfiguration.getSimpleValue('mode', null))
+ '_flavor' :
javascriptString(containerConfig.getSimpleValue('_flavor', null)),
+ 'batching' :
javascriptString(containerConfig.getSimpleValue('batching', null)),
+ 'indexing' :
javascriptString(containerConfig.getSimpleValue('indexing', null)),
+ 'mode' :
javascriptString(containerConfig.getSimpleValue('mode', null))
};
}
}
@@ -529,3 +561,23 @@ function _asArray(propertyList) {
return ret;
}
+
+function _getPluginConfiguration(resource) {
+ if (typeof(resource) == 'number') {
+ resource = ProxyFactory.getResource(resource)
+ } else {
+ resource = ProxyFactory.getResource(resource.id)
+ }
+ return resource.pluginConfiguration
+}
+
+function _getLiveResourceConfiguration(resource) {
+ var id;
+ if (typeof(resource) == 'number') {
+ id = resource;
+ } else {
+ id = resource.id
+ }
+
+ return ConfigurationManager.getLiveResourceConfiguration(id, false)
+}
\ No newline at end of file
commit 633ef4fb2006a12c2cb9221b4ce31e01cdbc80f5
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri May 4 18:10:39 2012 -0400
[BZ 823624] i)finish code changes except for jvmRoute population.
ii)disabled [Web Context] child in plugin descriptor
iii)set jvmRoute to empty string to disable discovery.
iv) a few other related cleanup changes.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index c25c5d1..425d85b 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -64,6 +64,14 @@
<artifactId>jboss-sasl</artifactId>
<version>${jboss.sasl.version}</version>
</dependency>
+
+ <!-- Earlier AS4/5 modcluster components -->
+ <dependency>
+ <groupId>${rhq.groupId}</groupId>
+ <artifactId>modcluster-plugin</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
<!-- === Test Deps === -->
@@ -119,6 +127,12 @@
<groupId>org.jboss.sasl</groupId>
<artifactId>jboss-sasl</artifactId>
</artifactItem>
+
+ <artifactItem>
+ <groupId>${rhq.groupId}</groupId>
+ <artifactId>modcluster-plugin</artifactId>
+ <version>${project.version}</version>
+ </artifactItem>
</artifactItems>
<outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
</configuration>
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterComponent.java
index d7a8521..427da83 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterComponent.java
@@ -4,9 +4,7 @@ import java.util.ArrayList;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
-import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.Address;
@@ -19,8 +17,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*/
public class ModClusterComponent extends BaseComponent implements OperationFacet,
ConfigurationFacet {
- //Ex. "/subsystem=modcluster/mod-cluster-config=configuration/" or
following is valid.
- private static String CONFIG_ADDRESS =
",mod-cluster-config=configuration";
+ static String DYNAMIC_PROVIDER = ",dynamic-load-provider=configuration";
@Override
public OperationResult invokeOperation(String name, Configuration parameters) throws
Exception {
@@ -28,6 +25,10 @@ public class ModClusterComponent extends BaseComponent implements
OperationFacet
OperationResult operationResult = new OperationResult();
Result result = null;
+ String modClusterKeyMesg = "Modcluster resource keys are not in correct
format.";
+ modClusterKeyMesg += " Should be {modcluster
address}:{jvmRoute}:{virtual-host}:{context} but instead ";
+ modClusterKeyMesg += " was '" + key + "'";
+
if ("list-proxies".equals(name)) {
result = getASConnection().execute(op);
if ((result != null) && (result.isSuccess())) {
@@ -63,30 +64,93 @@ public class ModClusterComponent extends BaseComponent implements
OperationFacet
if (result != null && result.isSuccess()) {
operationResult.setSimpleResult("Success");
}
- } else if ("disable-context".equals(name)) {
- addAdditionalToOp(op, parameters, "virtualhost", false);
- addAdditionalToOp(op, parameters, "context", false);
+ } else if ("disable-context".equals(name)) {//disable handled by base
case
+ //update the operation components with details from the resource being
operated on.
+ //Ex. {modcluster address}:{jvmRoute}:{virtual-host}:{context}
+ String[] keyComponents = key.split(":");
+ if (keyComponents.length == 4) {
+ op.addAdditionalProperty("virtualhost", keyComponents[2]);
+ op.addAdditionalProperty("context", keyComponents[3]);
+ result = getASConnection().execute(op);
+ if ((result != null) && (result.isSuccess())) {
+ operationResult.setSimpleResult("Success");
+ }
+ } else {
+ operationResult.setErrorMessage(modClusterKeyMesg);
+ return operationResult;
+ }
+ } else if ("enable-context".equals(name)) {//enable handled by base
case
+ String currentAddress = getAddress().getPath();
+ //update the operation components with details from the resource being
operated on.
+ //Ex. {modcluster address}:{jvmRoute}:{virtual-host}:{context}
+ String[] keyComponents = key.split(":");
+ if (keyComponents.length == 4) {
+ op.addAdditionalProperty("virtualhost", keyComponents[2]);
+ op.addAdditionalProperty("context", keyComponents[3]);
+ result = getASConnection().execute(op);
+ if ((result != null) && (result.isSuccess())) {
+ operationResult.setSimpleResult("Success");
+ }
+ } else {
+ operationResult.setErrorMessage(modClusterKeyMesg);
+ return operationResult;
+ }
+ } else if ("stop-context".equals(name)) {
+ String currentAddress = getAddress().getPath();
+ //Ex. {modcluster address}:{jvmRoute}:{virtual-host}:{context}
+ String[] keyComponents = key.split(":");
+ if (keyComponents.length == 4) {
+ op.addAdditionalProperty("virtualhost", keyComponents[2]);
+ op.addAdditionalProperty("context", keyComponents[3]);
+ addAdditionalToOp(op, parameters, "waittime", true);
+ result = getASConnection().execute(op);
+ if ((result != null) && (result.isSuccess())) {
+ operationResult.setSimpleResult("Success");
+ }
+ } else {
+ operationResult.setErrorMessage(modClusterKeyMesg);
+ return operationResult;
+ }
+ } else if ("add-custom-metric".equals(name)) {
+ //update the address and operation name. Use class name as identifier.
+ String newOperationDestination = getAddress().getPath() + DYNAMIC_PROVIDER
+ + ",custom-load-metric,custom-load-metric=" +
retrieveNewIdentifier(parameters, "class");
+ op = new Operation("add", new Address(newOperationDestination));
+ addAdditionalToOp(op, parameters, "class", false);
+ addAdditionalToOp(op, parameters, "weight", false);
+ addAdditionalToOp(op, parameters, "capacity", true);
result = getASConnection().execute(op);
if ((result != null) && (result.isSuccess())) {
operationResult.setSimpleResult("Success");
}
- } else if ("enable-context".equals(name)) {
- addAdditionalToOp(op, parameters, "virtualhost", false);
- addAdditionalToOp(op, parameters, "context", false);
+ } else if ("remove-custom-metric".equals(name)) {
+ //update the address and operation name. Use class name as identifier.
+ String newOperationDestination = getAddress().getPath() + DYNAMIC_PROVIDER
+ + ",custom-load-metric,custom-load-metric=" +
retrieveNewIdentifier(parameters, "class");
+ op = new Operation("remove", new
Address(newOperationDestination));
+ addAdditionalToOp(op, parameters, "class", false);
result = getASConnection().execute(op);
if ((result != null) && (result.isSuccess())) {
operationResult.setSimpleResult("Success");
}
- } else if ("stop".equals(name)) {
- addAdditionalToOp(op, parameters, "waittime", true);
+ } else if ("add-metric".equals(name)) {
+ //update the address and operation name. Use class name as identifier.
+ String newOperationDestination = getAddress().getPath() + DYNAMIC_PROVIDER
+ + ",custom-load-metric,load-metric=" +
retrieveNewIdentifier(parameters, "type");
+ op = new Operation("add", new Address(newOperationDestination));
+ addAdditionalToOp(op, parameters, "weight", false);
+ addAdditionalToOp(op, parameters, "capacity", true);
+ addAdditionalToOp(op, parameters, "type", false);
result = getASConnection().execute(op);
if ((result != null) && (result.isSuccess())) {
operationResult.setSimpleResult("Success");
}
- } else if ("stop-context".equals(name)) {
- addAdditionalToOp(op, parameters, "virtualhost", false);
- addAdditionalToOp(op, parameters, "context", false);
- addAdditionalToOp(op, parameters, "waittime", true);
+ } else if ("remove-metric".equals(name)) {
+ //update the address and operation name. Use class name as identifier.
+ String newOperationDestination = getAddress().getPath() + DYNAMIC_PROVIDER
+ + ",custom-load-metric,load-metric=" +
retrieveNewIdentifier(parameters, "type");
+ op = new Operation("remove", new
Address(newOperationDestination));
+ addAdditionalToOp(op, parameters, "type", false);
result = getASConnection().execute(op);
if ((result != null) && (result.isSuccess())) {
operationResult.setSimpleResult("Success");
@@ -154,32 +218,6 @@ public class ModClusterComponent extends BaseComponent implements
OperationFacet
return operationResult;
}
- @Override
- public Configuration loadResourceConfiguration() throws Exception {
-
- //retrieve config definition
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- //default address is not right. Update it
- Address modClusterConfigAddress = new Address(key + CONFIG_ADDRESS);
- ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(configDef,
getASConnection(),
- modClusterConfigAddress);
- Configuration config = delegate.loadResourceConfiguration();
-
- return config;
- }
-
- @Override
- public void updateResourceConfiguration(ConfigurationUpdateReport report) {
-
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- //default address is not right. Update it
- Address modClusterConfigAddress = new Address(key + CONFIG_ADDRESS);
- ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(configDef,
getASConnection(),
- modClusterConfigAddress);
- delegate.updateResourceConfiguration(report);
-
- }
-
void addAdditionalToOp(Operation op, Configuration parameters, String parameterName,
boolean optional) {
String value = parameters.getSimpleValue(parameterName, null);
if (value == null) {
@@ -192,6 +230,22 @@ public class ModClusterComponent extends BaseComponent implements
OperationFacet
}
}
+ /** Parses the Configuration passed in and retrieves the value of the parameterName
+ * to be used as the resource key.
+ *
+ * @param parameters Configuration
+ * @param parameterName specific property value to retrieve.
+ * @return
+ */
+ String retrieveNewIdentifier(Configuration parameters, String parameterName) {
+ String identifier = "";
+ //retrieve the value of the specific property identified by parameterName
+ if ((parameters != null) && (parameterName != null) &&
!parameterName.isEmpty()) {
+ identifier = parameters.getSimpleValue(parameterName, null);
+ }
+ return identifier;
+ }
+
@Override
public Address getAddress() {
return new Address(key);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
new file mode 100644
index 0000000..d8f3ea1
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
@@ -0,0 +1,191 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Address;
+import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
+import org.rhq.modules.plugins.jbossas7.json.Result;
+
+/**
+ * Discover subsystems. We need to distinguish two cases denoted by the path
+ * plugin config:
+ * <ul>
+ * <li>Path is a single 'word': here the value denotes a key in the
resource path
+ * of AS7, that identifies a child type see e.g. the Connectors below the JBossWeb
+ * service in the plugin descriptor. There can be multiple resources of the given
+ * type. In addition it is possible that a path entry in configuration shares
multiple
+ * types that are separated by the pipe symbol.</li>
+ * <li>Path is a key-value pair (e.g. subsystem=web ). This denotes a
singleton
+ * subsystem with a fixes path within AS7 (perhaps below another resource in the
+ * tree.</li>
+ * </ul>
+ *
+ * @author Simeon Pinder
+ */
+public class ModClusterConfigurationDiscovery extends SubsystemDiscovery {
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ //Ex. "/subsystem=modcluster/mod-cluster-config=configuration/" or
following is valid.
+ private static String CONFIG_ADDRESS =
",mod-cluster-config=configuration";
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent<?>> context)
+ throws Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>();
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,
true);
+
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+
+ Configuration config = context.getDefaultPluginConfiguration();
+ String confPath = config.getSimpleValue("path", "");
+ if (confPath == null || confPath.isEmpty()) {
+ log.error("Path plugin config is null for ResourceType [" +
context.getResourceType().getName() + "].");
+ return details;
+ }
+
+ boolean lookForChildren = false;
+
+ if (!confPath.contains("=")) { // NO = -> no sub path, but a type
+ lookForChildren = true;
+ }
+
+ // Construct the full path including the parent
+ String path;
+ String parentPath = parentComponent.getPath();
+ if (parentPath == null || parentPath.isEmpty()) {
+ parentPath = "";
+ }
+ //modify parent path to include the modcluster configuration element as well
+ parentPath += CONFIG_ADDRESS;
+
+ path = parentPath;
+
+ PropertySimple managedRuntimeProp =
config.getSimple("managedRuntime");
+ if (managedRuntimeProp != null && managedRuntimeProp.getBooleanValue() !=
null
+ && managedRuntimeProp.getBooleanValue()) {
+
+ // path correction for managed servers, where the config is below
host=x,server-config=y but
+ // the runtime resource is below host=x,server=y
+ if (path.startsWith("host=")) {
+ path = path.replaceAll(",server-config=",
",server=");
+ parentPath = parentPath.replaceAll(",server-config=",
",server=");
+ }
+ }
+
+ if (Boolean.getBoolean("as7plugin.verbose"))
+ log.info("total path: [" + path + "]");
+
+ if (lookForChildren) {
+ // Looking for multiple resource of type 'childType'
+
+ // check if there are multiple types are present
+ List<String> subTypes = new ArrayList<String>();
+ if (confPath.contains("|")) {
+ subTypes.addAll(Arrays.asList(confPath.split("\\|")));
+ } else
+ subTypes.add(confPath);
+
+ for (String cpath : subTypes) {
+
+ Address addr = new Address(parentPath);
+ Result result = connection.execute(new ReadChildrenNames(addr, cpath));
+
+ if (result.isSuccess()) {
+
+ @SuppressWarnings("unchecked")
+ List<String> subsystems = (List<String>)
result.getResult();
+
+ // There may be multiple children of the given type
+ for (String val : subsystems) {
+
+ String newPath = cpath + "=" + val;
+ Configuration config2 = context.getDefaultPluginConfiguration();
+
+ String resKey;
+
+ if (path == null || path.isEmpty())
+ resKey = newPath;
+ else {
+ if (path.startsWith(","))
+ path = path.substring(1);
+ resKey = path + "," + cpath + "=" + val;
+ }
+
+ PropertySimple pathProp = new PropertySimple("path",
resKey);
+ config2.put(pathProp);
+
+ DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(context.getResourceType(), // DataType
+ resKey, // Key
+ val, // Name
+ null, // Version
+ context.getResourceType().getDescription(), //
subsystem.description
+ config2, null);
+ details.add(detail);
+ }
+ }
+ }
+ } else {
+ // Single subsystem
+ path += "," + confPath;
+ if (path.startsWith(","))
+ path = path.substring(1);
+ Result result = connection.execute(new ReadResource(new Address(path)));
+ if (result.isSuccess()) {
+
+ String resKey = path;
+ String name = resKey.substring(resKey.lastIndexOf("=") + 1);
+ Configuration config2 = context.getDefaultPluginConfiguration();
+ PropertySimple pathProp = new PropertySimple("path", path);
+ config2.put(pathProp);
+
+ DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(context.getResourceType(), // DataType
+ path, // Key
+ name, // Name
+ null, // Version
+ context.getResourceType().getDescription(), // Description
+ config2, null);
+ details.add(detail);
+ }
+ }
+
+ return details;
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
new file mode 100644
index 0000000..5239e1a
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
@@ -0,0 +1,84 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.pluginapi.availability.AvailabilityFacet;
+import org.rhq.modules.plugins.jbossas7.json.Address;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.Result;
+import org.rhq.plugins.modcluster.model.ProxyInfo;
+
+/**
+ * Component class for ModCluster Webapp Context
+ * @author Simeon Pinder
+ */
+public class ModClusterContextComponent extends ModClusterComponent implements
AvailabilityFacet {
+
+ @Override
+ public AvailabilityType getAvailability() {
+
+ String rawProxyInfo = getRawProxyInfo();
+
+ ProxyInfo proxyInfo = new ProxyInfo(rawProxyInfo);
+
+ ProxyInfo.Context context = null;
+ try {
+ //remove {modcluster adddress}: from key.
+ int indexOfSeparator = this.context.getResourceKey().indexOf(":");
+ context =
ProxyInfo.Context.fromString(this.context.getResourceKey().substring(indexOfSeparator +
1));
+ } catch (Exception e) {
+ log.warn("Invalid resourcekey is being used for modcluster component:
" + e.getMessage());
+ return AvailabilityType.DOWN;
+ }
+
+ int indexOfCurrentContext = proxyInfo.getAvailableContexts().indexOf(context);
+
+ if (indexOfCurrentContext != -1) {
+ ProxyInfo.Context currentContext =
proxyInfo.getAvailableContexts().get(indexOfCurrentContext);
+
+ if (currentContext.isEnabled()) {
+ return AvailabilityType.UP;
+ }
+ }
+
+ return AvailabilityType.DOWN;
+
+ }
+
+ private String getRawProxyInfo() {
+ String rawProxyInfo = "";
+ ModClusterContextComponent component = this;
+ while ((component != null) && !(component instanceof
ModClusterComponent)) {
+ component = (ModClusterContextComponent)
context.getParentResourceComponent();
+ }
+ //get root modcluster component
+ String resourceKey = component.key;
+ String[] resourceKeyComponents = resourceKey.split(":");
+
+ Operation op = new Operation("read-proxies-info", new
Address(resourceKeyComponents[0]));
+ Result result = getASConnection().execute(op);
+ //get ProxyInfo and parse
+ rawProxyInfo = ModClusterContextDiscoveryComponent.extractRawProxyInfo(result);
+
+ return rawProxyInfo;
+ }
+
+ void addAdditionalToOp(Operation op, Configuration parameters, String parameterName,
boolean optional) {
+ String value = parameters.getSimpleValue(parameterName, null);
+ if (value == null) {
+ if (!optional) {
+ throw new IllegalArgumentException("Required parameter [" +
parameterName + "] for operation ["
+ + op.getName() + "] is not defined.");
+ }
+ } else {
+ op.addAdditionalProperty(parameterName, value);
+ }
+ }
+
+ @Override
+ public Address getAddress() {
+ int indexOfSeparator = this.context.getResourceKey().indexOf(":");
+ return new Address(this.context.getResourceKey().substring(0,
indexOfSeparator));
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
new file mode 100644
index 0000000..02a7e68
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextDiscoveryComponent.java
@@ -0,0 +1,130 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Address;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.Result;
+import org.rhq.plugins.modcluster.model.ProxyInfo;
+
+/**
+ * Discovers mod_cluster contexts using the proxyInfo details from as7.
+ *
+ * @author Simeon Pinder
+ */
+public class ModClusterContextDiscoveryComponent extends SubsystemDiscovery {
+
+ private final Log log = LogFactory.getLog(this.getClass());
+ private static Log staticLogger =
LogFactory.getLog(ModClusterContextDiscoveryComponent.class);
+ private final String PROXY_INFO_OPERATION = "read-proxies-info";
+ private final String CONFIGURATION = ",mod-cluster-config=configuration";
+ private static String jvmRoute = null;
+
+ /* (non-Javadoc)
+ * @see
org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent#discoverResources(org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext)
+ */
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent<?>> context) {
+
+ //initialize discovered list
+ Set<DiscoveredResourceDetails> entities = new
HashSet<DiscoveredResourceDetails>();
+
+ //BZ:823624: Leave the following blank until this BZ and JIRA 4847 have been
resolved.
+ if (jvmRoute == null) {//lazy load it.
+ // jvmRoute = "00fa6bff-83a2-3bde-9e76-998b1a4a8c2c";
+ jvmRoute = "";
+ }
+
+ //Retrieve rawProxyInfo to determine jvmRoute instances
+ String rawProxyInfo = "";
+
+ //Retrieve as7 and modcluster components
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+ //Should be modcluster element for standalone or managed instances.
+ String path = parentComponent.getPath();
+ //remove configuration portion
+ int located = -1;
+ if ((located = path.indexOf(CONFIGURATION)) > -1) {
+ path = path.substring(0, located);
+ }
+ if (path == null || path.isEmpty()) {
+ log.error("Path plugin config is null for ResourceType [" +
context.getResourceType().getName() + "].");
+ return entities;
+ }
+
+ Address addr = new Address(path);
+ Operation op = new Operation(PROXY_INFO_OPERATION, addr);
+ Result result = connection.execute(op);
+ //get ProxyInfo and parse
+ rawProxyInfo = extractRawProxyInfo(result);
+ ProxyInfo proxyInfo = new ProxyInfo(rawProxyInfo);
+
+ //only discover the virtualhosts and webcontexts relevant to this modcluster
node.
+ for (ProxyInfo.Context availableContext : proxyInfo.getAvailableContexts()) {
+ if (availableContext.getJvmRoute().equals(jvmRoute)) {
+ //prepend the modcluster component to the webcontext key for
identification later
+ String resourceKey = path + ":" +
availableContext.createKey();
+ DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(context.getResourceType(),
+ resourceKey, availableContext.createName(), null, "Webapp
Context", null, null);
+ entities.add(detail);
+ }
+ }
+ return entities;
+ }
+
+ /** Extracts the ProxyInformation details as returned by AS7 CLI.
+ * Assumes that result.getResult() is of type ArrayList.
+ * @param result
+ * @return
+ */
+ static String extractRawProxyInfo(Result result) {
+ String rawProxyInfo = "";
+ if (result != null && result.isSuccess()) {
+ //in invalid type, log and bail.
+ if (!(result.getResult() instanceof ArrayList)) {
+ staticLogger.warn("Attempting to extract proxyInfo but JSON type
information is not correct.");
+ return rawProxyInfo;
+ }
+
+ //Extract just the values portion Ex. returns "{proxyList},{value}:
+ ArrayList container = (ArrayList) result.getResult();
+ if ((container != null) && !container.isEmpty()) {
+ Object type = container.get(0);
+ String values = "";
+ if (type instanceof String) {
+ //We only need the value element as the rest is extra.
+ values += container.get(1);
+ } else {
+ values = container.toString();
+ }
+ rawProxyInfo = values;
+ }
+ }
+ return rawProxyInfo;
+ }
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 0911e5e..4331fcc 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -92,22 +92,9 @@
<!ENTITY modclusterSharedOpsConfig '
<operation name="add-custom-metric" description="Add new custom
metric to the load balancer provider.">
<parameters>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" description="Capacity of the
metric."/>
<c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
<c:simple-property name="weight" required="false"
type="integer" readOnly="false" description="Weight of the
metric."/>
- <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" description="Capacity of the
metric."/>
- <c:simple-property name="property" required="false"
type="string" readOnly="false" description="Properties for the
metric." defaultValue="busyness">
- <c:property-options>
- <c:option value="cpu" name="cpu"/>
- <c:option value="mem" name="mem"/>
- <c:option value="heap" name="heap"/>
- <c:option value="sessions" name="sessions"/>
- <c:option value="requests" name="requests"/>
- <c:option value="send-traffic"
name="send-traffic"/>
- <c:option value="receive-traffic"
name="receive-traffic"/>
- <c:option value="busyness" name="busyness"/>
- <c:option value="connection-pool"
name="connection-pool"/>
- </c:property-options>
- </c:simple-property>
</parameters>
<results>
<c:simple-property name="operationResult" description="Add
new custom metric to the load balancer provider."/>
@@ -116,22 +103,20 @@
<operation name="add-metric" description="Add new metric to the
load balancer provider.">
<parameters>
- <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of the
metric"/>
- <c:simple-property name="weight" required="false"
type="integer" readOnly="false" description="Weight of the
metric."/>
<c:simple-property name="capacity" required="false"
type="integer" readOnly="false" description="Capacity of the
metric."/>
- <c:simple-property name="property" required="false"
type="string" readOnly="false" description="Properties for the
metric." defaultValue="busyness">
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
<c:property-options>
- <c:option value="cpu" name="cpu"/>
- <c:option value="mem" name="mem"/>
- <c:option value="heap" name="heap"/>
- <c:option value="sessions" name="sessions"/>
- <c:option value="requests" name="requests"/>
- <c:option value="send-traffic"
name="send-traffic"/>
- <c:option value="receive-traffic"
name="receive-traffic"/>
- <c:option value="busyness" name="busyness"/>
- <c:option value="connection-pool"
name="connection-pool"/>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
</c:property-options>
</c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" description="Weight of the
metric."/>
</parameters>
<results>
<c:simple-property name="operationResult" description="Add
new metric to the load balancer provider."/>
@@ -149,7 +134,18 @@
<operation name="remove-metric" description="Add new metric to
the load balancer provider.">
<parameters>
- <c:simple-property name="type" required="true"
type="string" readOnly="false" description="Type of the
metric"/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
</parameters>
<results>
<c:simple-property name="operationResult" description="Add
new metric to the load balancer provider."/>
@@ -1015,7 +1011,109 @@
<c:simple-property name="path"
default="subsystem=modcluster" readOnly="true"/>
</plugin-configuration>
- &modclusterSharedOpsConfig;
+ <service name="Domain Service Configuration"
+ discovery="SubsystemDiscovery"
+ class="ModClusterComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ </plugin-configuration>
+
+ &modclusterSharedOpsConfig;
+
+ <service name="Domain Dynamic Load Provider"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
+ <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
+ </resource-configuration>
+
+ <service name="Domain Custom Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+
+ </service><!-- End of custom-load-metric service -->
+
+ <service name="Domain Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+
+ </service><!-- End of load-metric service -->
+
+ </service><!-- End of dynamic-load-provider service -->
+
+ <service name="Domain Ssl"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-revocation-ur" required="false"
type="string" readOnly="false" description="Certificate authority
revocation list."/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite" required="false"
type="string" readOnly="false" description="The allowed cipher
suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ </resource-configuration>
+
+ </service><!-- End of ssl service -->
+
+ </service><!-- End of Domain Modcluster Service Configuration -->
</service>
</service>
@@ -1398,38 +1496,6 @@
</results>
</operation>
- <operation name="disable" description="Tell Apache httpd that all
contexts of the node can't process new requests.">
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation>
-
- <operation name="disable-context" description="Tell Apache httpd
that the context can't process new requests.">
- <parameters>
- <c:simple-property name="virtualhost" required="true"
type="string" readOnly="false" description="Name of the
virtual-host containing the context."/>
- <c:simple-property name="context" required="true"
type="string" readOnly="false" description="Context (like /myapp
for example)."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Tell
Apache httpd that the context can't process new requests."/>
- </results>
- </operation>
-
- <operation name="enable" description="Tell Apache httpd that all
contexts of the node are ready receive requests.">
- <results>
- <c:simple-property name="operationResult" description="Tell
Apache httpd that all contexts of the node are ready receive requests."/>
- </results>
- </operation>
-
- <operation name="enable-context" description="Tell Apache httpd
that the context is ready receive requests.">
- <parameters>
- <c:simple-property name="virtualhost" required="true"
type="string" readOnly="false" description="Name of the
virtual-host containing the context."/>
- <c:simple-property name="context" required="true"
type="string" readOnly="false" description="Context (like /myapp
for example)."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Tell
Apache httpd that the context is ready receive requests."/>
- </results>
- </operation>
-
<operation name="list-proxies" description="Read the list of
httpd connected to the node.">
<results>
<!-- List of proxies the node is connected to. Format (hostname:port)
separated with comas.-->
@@ -1473,6 +1539,149 @@
</results>
</operation>
+ <service name="Service Configuration"
+ discovery="SubsystemDiscovery"
+ class="ModClusterComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-config=configuration"/>
+ </plugin-configuration>
+
+ &modclusterSharedOpsConfig;
+
+ <service name="Dynamic Load Provider"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="delete-only"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Service Configuration"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Service Configuration"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="dynamic-load-provider=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="decay" required="false"
type="integer" readOnly="false" defaultValue="2"
description="Decay. The default value is 2."/>
+ <c:simple-property name="history" required="false"
type="integer" readOnly="false" defaultValue="9"
description="History. The default value is 9."/>
+ </resource-configuration>
+
+ <service name="Custom Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1"/>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Class name of the
custom metric."/>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+
+ </service><!-- End of custom-load-metric service -->
+
+ <service name="Load Metric"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="load-metric"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="capacity" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Capacity of the metric. The default value is 1."/>
+ <c:simple-property name="type" required="true"
type="string" defaultValue="busyness" readOnly="false"
description="Type of the metric">
+ <c:property-options>
+ <c:option value="busyness"/>
+ <c:option value="cpu" />
+ <c:option value="heap"/>
+ <c:option value="mem"/>
+ <c:option value="requests"/>
+ <c:option value="receive-traffic"/>
+ <c:option value="send-traffic"/>
+ <c:option value="sessions"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="weight" required="false"
type="integer" readOnly="false" defaultValue="1"
description="Weight of the metric. The default value is 1."/>
+ </resource-configuration>
+
+ </service><!-- End of load-metric service -->
+
+ </service><!-- End of dynamic-load-provider service -->
+
+ <service name="Ssl"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="ModCluster Standalone Service"
plugin="&pluginName;"/>
+ <parent-resource-type name="ModCluster Domain Service"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="ssl=configuration"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ca-certificate-file"
required="false" type="string" readOnly="false"
description="Certificate authority."/>
+ <c:simple-property name="ca-revocation-ur" required="false"
type="string" readOnly="false" description="Certificate authority
revocation list."/>
+ <c:simple-property name="certificate-key-file"
required="false" type="string" readOnly="false"
defaultValue="${user.home}/.keystore" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite" required="false"
type="string" readOnly="false" description="The allowed cipher
suite."/>
+ <c:simple-property name="key-alias" required="false"
type="string" readOnly="false" description="The key
alias."/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" defaultValue="changeit"
description="Password."/>
+ <c:simple-property name="protocol" required="false"
type="string" readOnly="false" defaultValue="TLS"
description="The SSL protocols that are enabled."/>
+ </resource-configuration>
+
+ </service><!-- End of ssl service -->
+
+ <!-- This service locates the ModCluster node identifier aka jvmRoute details,
parses getProxyInformation
+ from a valid modcluster configuration and only exposes webapplications hosted
by the AS7 instance co-located
+ with the RHQ agent. Of these exposed resources the supported
enable*/disable*/stop* -context operations
+ are supported. In a homogeneous cluster environment where RHQ monitors all
cluster members as well the entire
+ webapp application context suite should be controllable via RHQ groups or from
individual modcluster instances.
+ -->
+ <!-- [BZ 823624] this is disabled until this bug is addressed. Will need to
uncomment and populate jvmRoute in
+ ModClusterContextDiscoveryComponent -->
+ <!--<service name="Webapp Context"
+ class="ModClusterContextComponent"
+ discovery="ModClusterContextDiscoveryComponent"
+ description="Webapp Context">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mod-cluster-web-contexts"/>
+ </plugin-configuration>
+
+ <operation name="disable" description="Tell Apache httpd that all
contexts of the node can't process new requests.">
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+
+ <operation name="disable-context" description="Tell Apache httpd
that the context can't process new requests.">
+ <results>
+ <c:simple-property name="operationResult" description="Tell
Apache httpd that the context can't process new requests."/>
+ </results>
+ </operation>
+
+ <operation name="enable" description="Tell Apache httpd that all
contexts of the node are ready receive requests.">
+ <results>
+ <c:simple-property name="operationResult" description="Tell
Apache httpd that all contexts of the node are ready receive requests."/>
+ </results>
+ </operation>
+
+ <operation name="enable-context" description="Tell Apache httpd
that the context is ready receive requests.">
+ <results>
+ <c:simple-property name="operationResult" description="Tell
Apache httpd that the context is ready receive requests."/>
+ </results>
+ </operation>
+
<operation name="stop" description="Tell Apache httpd that all
contexts of the node can't process requests.">
<parameters>
<c:simple-property name="waittime" required="false"
type="integer" readOnly="false" description="Max amount of time
modcluster will for the STOP operation. In seconds. Default 10s"/>
@@ -1484,8 +1693,6 @@
<operation name="stop-context" description="Tell Apache httpd
that the context can't process requests.">
<parameters>
- <c:simple-property name="virtualhost" required="true"
type="string" readOnly="false" description="Name of the
virtual-host containing the context."/>
- <c:simple-property name="context" required="true"
type="string" readOnly="false" description="Context (like /myapp
for example)."/>
<c:simple-property name="waittime" required="false"
type="integer" readOnly="false" description="Max amount of time
modcluster will for the STOP operation. In seconds. Default 10s"/>
</parameters>
<results>
@@ -1493,11 +1700,15 @@
</results>
</operation>
- &modclusterSharedOpsConfig;
- </service>
+ <resource-configuration>
+ <c:simple-property name="waittime" type="integer"
required="false" defaultValue="50" description="The number of
seconds to wait for the context to be stopped." />
+ </resource-configuration>
- </server> <!-- JBossAS7 Standalone Server -->
+ </service>--><!-- End of WebAppContext service -->
+ </service><!-- End of Standalone Modcluster Service Configuration -->
+ </service><!-- End of ModCluster Standalone Service -->
+ </server> <!-- JBossAS7 Standalone Server -->
<service name="JVM"
discovery="JVMDiscoveryComponent"
commit 52008a44501de8d0eec40e01f868e8104dc358dd
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 23 10:55:36 2012 +0200
Add a test for jndi-view operation. Enhance package documentation a little.
diff --git
a/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
b/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
index 5a5ba7f..97f3f9a 100644
---
a/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
+++
b/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
@@ -186,7 +186,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
/**
* Get availability for a Resource synchronously, with a 5 second timeout.
*
- * @param resource the Resource
+ * @param resource the Resource
*
* @return the report containing the collected data
*/
@@ -196,20 +196,20 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
ResourceContainer resourceContainer =
this.pluginContainer.getInventoryManager().getResourceContainer(resource);
long timeoutMillis = 5000;
AvailabilityFacet availFacet =
resourceContainer.createResourceComponentProxy(AvailabilityFacet.class,
- FacetLockType.READ, timeoutMillis, false, false);
+ FacetLockType.READ, timeoutMillis, false, false);
AvailabilityType avail;
try {
avail = availFacet.getAvailability();
} catch (Exception e) {
System.out.println("====== Error occurred during availability check on
" + resource + ": " + e);
throw new RuntimeException("Error occurred during availability check on
" + resource + ": " + e);
- }
+ }
return avail;
}
-
+
/**
* Execute an operation on a Resource synchronously, with the same timeout that the
PC would use.
- *
+ *
* @param resource the Resource
* @param operationName the name of the operation
* @param params parameters to pass to the operation; may be null if the operation
does not define any parameters
@@ -217,7 +217,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
* @return the result of the operation
*/
@NotNull
- protected OperationResult invokeOperation(Resource resource, String operationName,
@Nullable Configuration params)
+ protected OperationResult invokeOperation(Resource resource, String operationName,
@Nullable Configuration params)
throws PluginContainerException {
ResourceType resourceType = resource.getResourceType();
OperationDefinition operationDefinition =
ResourceTypeUtility.getOperationDefinition(resourceType,
@@ -225,12 +225,12 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
assertNotNull(operationDefinition, "No operation named [" +
operationName
+ "] is defined for ResourceType {" + resourceType.getPlugin()
+ "}" + resourceType.getName() + ".");
- long timeout = getDefaultTimeout(resource.getResourceType(), operationName);
+ long timeout = getDefaultTimeout(resource.getResourceType(), operationName);
System.out.println("=== Invoking operation [" + operationName + "]
with parameters ["
+ ((params != null) ? params.toString(true) : params) + "] on "
+ resource + "...");
ResourceContainer resourceContainer =
this.pluginContainer.getInventoryManager().getResourceContainer(resource);
long timeoutMillis = timeout * 1000;
- OperationFacet operationFacet =
resourceContainer.createResourceComponentProxy(OperationFacet.class,
+ OperationFacet operationFacet =
resourceContainer.createResourceComponentProxy(OperationFacet.class,
FacetLockType.WRITE, timeoutMillis, false, false);
OperationResult operationResult;
try {
@@ -407,7 +407,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
findNumericMetricsAndTraitsWithNullValuesRecursively(childResource,
metricsWithNullValuesByType);
}
}
-
+
protected Set<String> getNumericMetricsAndTraitsWithNullValues(Resource
resource) throws Exception {
ResourceType type = resource.getResourceType();
Set<MeasurementDefinition> numericMetricAndTraitDefs =
@@ -426,7 +426,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
protected Set<String> getMetricsWithNullValues(Resource resource,
Set<MeasurementDefinition> metricDefs)
throws Exception {
Set<String> metricsWithNullValues = new TreeSet<String>();
- for (MeasurementDefinition metricDef : metricDefs) {
+ for (MeasurementDefinition metricDef : metricDefs) {
if (!metricDef.getResourceType().equals(resource.getResourceType())) {
throw new IllegalArgumentException(metricDef + " is not defined by
" + resource.getResourceType());
}
@@ -441,11 +441,11 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
}
if (value == null) {
metricsWithNullValues.add(metricDef.getName());
- }
+ }
}
return metricsWithNullValues;
}
-
+
@Nullable
protected Double collectNumericMetric(Resource resource, String metricName) throws
Exception {
System.out.println("=== Collecting numeric metric [" + metricName +
"] for " + resource + "...");
@@ -515,7 +515,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
* Collect a metric for a Resource synchronously, with a 7 second timeout.
*
* @param resource the Resource
- * @param metricName the name of the metric
+ * @param metricName the name of the metric
*
* @return the report containing the collected data
*/
@@ -527,7 +527,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
metricName);
assertNotNull(measurementDefinition, "No metric named [" + metricName
+ "] is defined for ResourceType {" + resourceType.getPlugin()
+ "}" + resourceType.getName() + ".");
-
+
ResourceContainer resourceContainer =
this.pluginContainer.getInventoryManager().getResourceContainer(resource);
long timeoutMillis = 5000;
if (resourceContainer.getResourceComponentState() !=
ResourceContainer.ResourceComponentState.STARTED) {
@@ -547,15 +547,17 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
+ "] on " + resource + ": " + e);
throw new RuntimeException("Error occurred during collection of metric
[" + metricName
+ "] on " + resource + ": " + e);
- }
+ }
return report;
}
- protected void invokeOperationAndAssertSuccess(Resource resource, String
operationName, @Nullable Configuration params)
+ protected OperationResult invokeOperationAndAssertSuccess(Resource resource, String
operationName,
+ @Nullable Configuration
params)
throws PluginContainerException {
OperationResult result = invokeOperation(resource, operationName, params);
assertOperationSucceeded(operationName, params, result);
- }
+ return result;
+ }
private long getDefaultTimeout(ResourceType resourceType, String operationName) {
OperationDefinition operationDefinition =
ResourceTypeUtility.getOperationDefinition(resourceType,
@@ -580,7 +582,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
assertNull(result.getErrorMessage(), "Operation [" + operationName +
"] with parameters "
+ paramsString + " returned an error: " +
result.getErrorMessage());
}
-
+
protected abstract String getPluginName();
protected FakeServerInventory getServerInventory() {
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/package.html
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/package.html
index 82b2c05..16774b2 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/package.html
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/package.html
@@ -1,20 +1,34 @@
<html>
<body>
+<h1>Integration tests</h1>
This package contains the integration tests that run against JBoss AS 7 / EAP6 servers in
standalone and domain mode.
-<br/>
+<h2>Running</h2>
You can start the tests like this:
-<code>
- mvn verify -DskipTests=false -Pas7.itest -Das7.version=7.1.1.Final
-</code>
-To remotely debug integration tests, you can use <code>-Ditest.debug</code>
-<p/>
-Subdirectories:
+<pre>
+ mvn verify -DskipTests=false -Pas7.itest -Das7.version=7.1.2.Final-redhat-1
+</pre>
+<br/>
+If you have downloaded the server server already to a local directory, you can also point
the test at the existing server by
+passing <code>-Das7.url</code> like this:<br/>
+<pre>
+ mvn verify -DskipTests=false -Pas7.itest
-Das7.url=file:///devel/jboss-eap-6.0.0.ER8.zip -Das7.version=7.1.2.Final-redhat-1
+</pre>
+<h3>Flags in detail</h3>
+<ul>
+ <li>-Ditest.debug: To remotely debug integration tests, you can pass
<code>-Ditest.debug</code></li>
+ <li>-DskipTests=false: do not skip tests</li>
+ <li>-Pas7.itest: run the integration test (otherwise only the unit tests are
run)</li>
+ <li>-Das7.version: version that the server is reporting</li>
+ <li>-Das7.url: url to fetch the server distro from. By default the server is
fetched from remote and stored in a temporary directory. Giving this
+ flag instructs maven to fetch from the given url.</li>
+</ul>
+<h2>Subdirectories</h2>
<ul>
<li>domain: test against a domain mode server</li>
<li>nonpc : tests that don't go through the full plugin-container/resource
container; copied over from older integration tests</li>
<li>standalone: tests against a standalone server</li>
</ul>
-<p/>
+<h2>Further reading</h2>
See also this the wiki page at
<a
href="http://rhq-project.org/display/RHQ/Notes#Notes-IntegrationTest...
for more information
</body>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
new file mode 100644
index 0000000..79d5e27
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/NamingTest.java
@@ -0,0 +1,87 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.modules.plugins.jbossas7.itest.standalone;
+
+
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.inventory.InventoryManager;
+import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.modules.plugins.jbossas7.itest.AbstractJBossAS7PluginTest;
+import org.rhq.test.arquillian.RunDiscovery;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+/**
+ * Test stuff around socket bindings.
+ * This could actually also run for domain mode
+ * @author Heiko W. Rupp
+ */
+@Test(groups = {"integration", "pc", "standalone"},
singleThreaded = true)
+public class NamingTest extends AbstractJBossAS7PluginTest {
+
+ public static final ResourceType RESOURCE_TYPE = new ResourceType("Naming",
PLUGIN_NAME, ResourceCategory.SERVICE, null);
+ private static final String RESOURCE_KEY = "subsystem=naming";
+
+ @Test(priority = 10,groups = "discovery")
+ @RunDiscovery(discoverServices = true, discoverServers = true)
+ public void doSomeDiscovery() throws Exception {
+ Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
+ assertNotNull(platform);
+ assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+
+ Thread.sleep(20*1000L); // delay so that PC gets a chance to scan for resources
+ }
+
+ @Test(priority = 11)
+ public void runJndiView() throws Exception {
+ OperationResult result =
invokeOperationAndAssertSuccess(getResource(),"jndi-view",null);
+ Configuration configuration = result.getComplexResults();
+ assert configuration != null;
+ assert !configuration.getProperties().isEmpty();
+ assert configuration.getProperties().size()==2 : "Expected 2 groups, but got
" + configuration.getProperties().size();
+ PropertyList javaProps = configuration.getList("java-contexts");
+ assert javaProps != null;
+ assert !javaProps.getList().isEmpty();
+
+ // That property is probably empty, as by default no application should be
shipped
+ PropertyList appProps = configuration.getList("applications");
+ assert appProps !=null;
+
+ }
+
+
+ private Resource getResource() {
+
+ InventoryManager im = pluginContainer.getInventoryManager();
+ Resource platform = im.getPlatform();
+ Resource server =
getResourceByTypeAndKey(platform,StandaloneServerComponentTest.RESOURCE_TYPE,StandaloneServerComponentTest.RESOURCE_KEY);
+ Resource bindings = getResourceByTypeAndKey(server,RESOURCE_TYPE,RESOURCE_KEY);
+ return bindings;
+ }
+
+}
commit c3bbd873832ec7df6d9db4b24190fabad7d1b48f
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue May 22 23:11:57 2012 -0500
[BZ 646631, 790753, 820650] Add unit tests for resource context and deployer code
changes.
Remove unnecessary slash from temp folder name.
diff --git
a/modules/core/plugin-api/src/test/java/org/rhq/core/pluginapi/inventory/ResourceContextTest.java
b/modules/core/plugin-api/src/test/java/org/rhq/core/pluginapi/inventory/ResourceContextTest.java
new file mode 100644
index 0000000..fe194c9
--- /dev/null
+++
b/modules/core/plugin-api/src/test/java/org/rhq/core/pluginapi/inventory/ResourceContextTest.java
@@ -0,0 +1,409 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.core.pluginapi.inventory;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.util.UUID;
+
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.testng.PowerMockObjectFactory;
+import org.testng.Assert;
+import org.testng.IObjectFactory;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.util.MessageDigestGenerator;
+
+@PrepareForTest({ ResourceContext.class })
+public class ResourceContextTest {
+
+ @ObjectFactory
+ public IObjectFactory getObjectFactory() {
+ return new PowerMockObjectFactory();
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testBasicResourceDataDirectory() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(3);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1]);
+ String inputResourceKey = randomStrings[0];
+ String inputParentResourceKey = randomStrings[1];
+ String inputResourceUuid = randomStrings[2];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext<?> parentResourceContext = mock(ResourceContext.class);
+ when(parentResourceContext.getResourceKey()).thenReturn(inputParentResourceKey);
+
+ File mockNewResourceDirectory = mock(File.class);
+ when(mockNewResourceDirectory.exists()).thenReturn(true);
+
+ File mockOldResourceDirectory = mock(File.class);
+ when(mockOldResourceDirectory.exists()).thenReturn(false);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockNewResourceDirectory)
+ .thenReturn(mockOldResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parentResourceContext, null, null,
+ mockTemporaryDirectory, mockDataDirectory, null, null, null, null, null,
null);
+
+ //run code under test
+ File result = objectUnderTest.getResourceDataDirectory();
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(inputResourceUuid));
+
+ verify(mockNewResourceDirectory, times(1)).exists();
+ verify(mockNewResourceDirectory, never()).mkdirs();
+ verify(mockOldResourceDirectory, times(1)).exists();
+ verify(mockOldResourceDirectory, never()).renameTo(any(File.class));
+
+ Assert.assertEquals(result, mockNewResourceDirectory);
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testThreeLevelsAncestryResourceDataDirectory() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(6);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1],
randomStrings[2],
+ randomStrings[3]);
+ String inputResourceKey = randomStrings[0];
+ String inputParent1ResourceKey = randomStrings[1];
+ String inputParent2ResourceKey = randomStrings[2];
+ String inputParent3ResourceKey = randomStrings[3];
+
+ String inputResourceUuid = randomStrings[4];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext parent3ResourceContext = mock(ResourceContext.class);
+
when(parent3ResourceContext.getResourceKey()).thenReturn(inputParent3ResourceKey);
+
+ ResourceContext parent2ResourceContext = mock(ResourceContext.class);
+
when(parent2ResourceContext.getResourceKey()).thenReturn(inputParent2ResourceKey);
+
when(parent2ResourceContext.getParentResourceContext()).thenReturn((ResourceContext)
parent3ResourceContext);
+
+ ResourceContext parent1ResourceContext = mock(ResourceContext.class);
+
when(parent1ResourceContext.getResourceKey()).thenReturn(inputParent1ResourceKey);
+
when(parent1ResourceContext.getParentResourceContext()).thenReturn((ResourceContext)
parent2ResourceContext);
+
+ File mockNewResourceDirectory = mock(File.class);
+ when(mockNewResourceDirectory.exists()).thenReturn(true);
+
+ File mockOldResourceDirectory = mock(File.class);
+ when(mockOldResourceDirectory.exists()).thenReturn(false);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockNewResourceDirectory)
+ .thenReturn(mockOldResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parent1ResourceContext, null,
+ null, mockTemporaryDirectory, mockDataDirectory, null, null, null, null,
null, null);
+
+ //run code under test
+ File result = objectUnderTest.getResourceDataDirectory();
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(inputResourceUuid));
+
+ verify(mockNewResourceDirectory, times(1)).exists();
+ verify(mockNewResourceDirectory, never()).mkdirs();
+ verify(mockOldResourceDirectory, times(1)).exists();
+ verify(mockOldResourceDirectory, never()).renameTo(any(File.class));
+
+ Assert.assertEquals(result, mockNewResourceDirectory);
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testRenameInvocationResourceDataDirectory() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(3);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1]);
+ String inputResourceKey = randomStrings[0];
+ String inputParentResourceKey = randomStrings[1];
+ String inputResourceUuid = randomStrings[2];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext<?> parentResourceContext = mock(ResourceContext.class);
+ when(parentResourceContext.getResourceKey()).thenReturn(inputParentResourceKey);
+
+ File mockNewResourceDirectory = mock(File.class);
+ when(mockNewResourceDirectory.exists()).thenReturn(true);
+
+ File mockOldResourceDirectory = mock(File.class);
+ when(mockOldResourceDirectory.exists()).thenReturn(true);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockNewResourceDirectory)
+ .thenReturn(mockOldResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parentResourceContext, null, null,
+ mockTemporaryDirectory, mockDataDirectory, null, null, null, null, null,
null);
+
+ //run code under test
+ File result = objectUnderTest.getResourceDataDirectory();
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(inputResourceUuid));
+
+ verify(mockNewResourceDirectory, times(1)).exists();
+ verify(mockNewResourceDirectory, never()).mkdirs();
+ verify(mockOldResourceDirectory, times(1)).exists();
+ verify(mockOldResourceDirectory,
times(1)).renameTo(eq(mockNewResourceDirectory));
+
+ Assert.assertEquals(result, mockNewResourceDirectory);
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testMkdirsInvocationResourceDataDirectory() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(3);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1]);
+ String inputResourceKey = randomStrings[0];
+ String inputParentResourceKey = randomStrings[1];
+ String inputResourceUuid = randomStrings[2];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext<?> parentResourceContext = mock(ResourceContext.class);
+ when(parentResourceContext.getResourceKey()).thenReturn(inputParentResourceKey);
+
+ File mockNewResourceDirectory = mock(File.class);
+ when(mockNewResourceDirectory.exists()).thenReturn(false);
+
+ File mockOldResourceDirectory = mock(File.class);
+ when(mockOldResourceDirectory.exists()).thenReturn(false);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockNewResourceDirectory)
+ .thenReturn(mockOldResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parentResourceContext, null, null,
+ mockTemporaryDirectory, mockDataDirectory, null, null, null, null, null,
null);
+
+ //run code under test
+ File result = objectUnderTest.getResourceDataDirectory();
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(inputResourceUuid));
+
+ verify(mockNewResourceDirectory, times(1)).exists();
+ verify(mockNewResourceDirectory, times(1)).mkdirs();
+ verify(mockOldResourceDirectory, times(1)).exists();
+ verify(mockOldResourceDirectory, never()).renameTo(any(File.class));
+
+ Assert.assertEquals(result, mockNewResourceDirectory);
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testOldResouceDirectoryThrowsException() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(3);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1]);
+ String inputResourceKey = randomStrings[0];
+ String inputParentResourceKey = randomStrings[1];
+ String inputResourceUuid = randomStrings[2];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext<?> parentResourceContext = mock(ResourceContext.class);
+ when(parentResourceContext.getResourceKey()).thenReturn(inputParentResourceKey);
+
+ File mockNewResourceDirectory = mock(File.class);
+ when(mockNewResourceDirectory.exists()).thenReturn(false);
+
+ File mockOldResourceDirectory = mock(File.class);
+ when(mockOldResourceDirectory.exists()).thenThrow(new SecurityException());
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockNewResourceDirectory)
+ .thenReturn(mockOldResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parentResourceContext, null, null,
+ mockTemporaryDirectory, mockDataDirectory, null, null, null, null, null,
null);
+
+ //run code under test
+ File result = objectUnderTest.getResourceDataDirectory();
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(inputResourceUuid));
+
+ verify(mockNewResourceDirectory, times(1)).exists();
+ verify(mockNewResourceDirectory, times(1)).mkdirs();
+ verify(mockOldResourceDirectory, times(1)).exists();
+ verify(mockOldResourceDirectory, never()).renameTo(any(File.class));
+
+ Assert.assertEquals(result, mockNewResourceDirectory);
+ }
+
+ @Test
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void testThreeLevelsAncestryFutureChildDataDirectory() throws Exception {
+ //generate random data for the test
+ String[] randomStrings = this.generateRandomStrings(6);
+ String expectedSHA256 = this.computeSHA256(randomStrings[0], randomStrings[1],
randomStrings[2],
+ randomStrings[3], randomStrings[4]);
+ String inputChildResourceKey = randomStrings[0];
+ String inputResourceKey = randomStrings[1];
+ String inputParent1ResourceKey = randomStrings[2];
+ String inputParent2ResourceKey = randomStrings[3];
+ String inputParent3ResourceKey = randomStrings[4];
+
+ String inputResourceUuid = randomStrings[5];
+
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ ResourceType mockResourceType = mock(ResourceType.class);
+
+ Resource mockResource = mock(Resource.class);
+ when(mockResource.getResourceKey()).thenReturn(inputResourceKey);
+ when(mockResource.getUuid()).thenReturn(inputResourceUuid);
+ when(mockResource.getResourceType()).thenReturn(mockResourceType);
+
+ ResourceContext parent3ResourceContext = mock(ResourceContext.class);
+
when(parent3ResourceContext.getResourceKey()).thenReturn(inputParent3ResourceKey);
+
+ ResourceContext parent2ResourceContext = mock(ResourceContext.class);
+
when(parent2ResourceContext.getResourceKey()).thenReturn(inputParent2ResourceKey);
+
when(parent2ResourceContext.getParentResourceContext()).thenReturn((ResourceContext)
parent3ResourceContext);
+
+ ResourceContext parent1ResourceContext = mock(ResourceContext.class);
+
when(parent1ResourceContext.getResourceKey()).thenReturn(inputParent1ResourceKey);
+
when(parent1ResourceContext.getParentResourceContext()).thenReturn((ResourceContext)
parent2ResourceContext);
+
+ File mockChildResourceDirectory = mock(File.class);
+ when(mockChildResourceDirectory.exists()).thenReturn(false);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockChildResourceDirectory);
+
+ File mockTemporaryDirectory = mock(File.class);
+ File mockDataDirectory = mock(File.class);
+
+ //create object to test and inject required dependencies
+ ResourceContext<?> objectUnderTest = new ResourceContext(mockResource,
null, parent1ResourceContext, null,
+ null, mockTemporaryDirectory, mockDataDirectory, null, null, null, null,
null, null);
+
+ //run code under test
+ File result =
objectUnderTest.getFutureChildResourceDataDirectory(inputChildResourceKey);
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockDataDirectory),
eq(expectedSHA256));
+
+ verify(mockChildResourceDirectory, times(1)).exists();
+ verify(mockChildResourceDirectory, times(1)).mkdirs();
+
+ Assert.assertEquals(result, mockChildResourceDirectory);
+ }
+
+ private String[] generateRandomStrings(int length) {
+ String[] randomUuids = new String[length];
+ for (int i = 0; i < length; i++) {
+ randomUuids[i] = UUID.randomUUID().getLeastSignificantBits() + "";
+ }
+ return randomUuids;
+ }
+
+ private String computeSHA256(String... values) {
+ MessageDigestGenerator messageDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
+ for (String value : values) {
+ messageDigest.add(value.getBytes());
+ }
+ return messageDigest.getDigestString();
+ }
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-5/pom.xml b/modules/plugins/jboss-as-5/pom.xml
index 17e0f46..f23bc01 100644
--- a/modules/plugins/jboss-as-5/pom.xml
+++ b/modules/plugins/jboss-as-5/pom.xml
@@ -150,6 +150,20 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-testng</artifactId>
+ <version>${powermock.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <version>${powermock.version}</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
index f1eac1a..3f9d44b 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
@@ -459,7 +459,7 @@ public class StandaloneManagedDeploymentComponent extends
AbstractManagedDeploym
private File writeNewAppBitsToTempFile(ContentServices contentServices,
ResourcePackageDetails packageDetails)
throws Exception {
- File tempDir = new File(getResourceContext().getTemporaryDirectory(),
"/deploy"
+ File tempDir = new File(getResourceContext().getTemporaryDirectory(),
"deploy"
+ UUID.randomUUID().getLeastSignificantBits());
tempDir.mkdirs();
diff --git
a/modules/plugins/jboss-as-5/src/test/java/org/rhq/plugins/jbossas5/test/StandaloneManagedDeploymentComponentTest.java
b/modules/plugins/jboss-as-5/src/test/java/org/rhq/plugins/jbossas5/test/StandaloneManagedDeploymentComponentTest.java
index d645f5a..b920c45 100644
---
a/modules/plugins/jboss-as-5/src/test/java/org/rhq/plugins/jbossas5/test/StandaloneManagedDeploymentComponentTest.java
+++
b/modules/plugins/jboss-as-5/src/test/java/org/rhq/plugins/jbossas5/test/StandaloneManagedDeploymentComponentTest.java
@@ -19,25 +19,38 @@
package org.rhq.plugins.jbossas5.test;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isNull;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.Set;
+import org.mockito.ArgumentMatcher;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.testng.PowerMockObjectFactory;
import org.testng.Assert;
import org.testng.IObjectFactory;
import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
+import org.rhq.core.pluginapi.content.ContentContext;
+import org.rhq.core.pluginapi.content.ContentServices;
import org.rhq.core.pluginapi.content.FileContentDelegate;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.plugins.jbossas5.AbstractManagedDeploymentComponent;
import org.rhq.plugins.jbossas5.StandaloneManagedDeploymentComponent;
@@ -90,4 +103,81 @@ public class StandaloneManagedDeploymentComponentTest {
verify(mockFileContentDelegate).saveDeploymentSHA(any(File.class),
any(File.class), any(File.class));
}
+
+ @Test
+ public void testWriteNewAppBitsToTimpFile() throws Exception {
+ //tell the method story as it happens: mock or create dependencies and configure
+ //those dependencies to get the method under test to completion.
+ File mockResourceTemporaryDir = mock(File.class);
+
+ ResourceContext mockResourceContext = mock(ResourceContext.class);
+
when(mockResourceContext.getTemporaryDirectory()).thenReturn(mockResourceTemporaryDir);
+
+ ContentServices mockContentServices = mock(ContentServices.class);
+ ResourcePackageDetails mockResourcePackageDetails =
mock(ResourcePackageDetails.class);
+
+ File mockTempDir = mock(File.class);
+ File mockTempFile = mock(File.class);
+ when(mockTempFile.exists()).thenReturn(true);
+
+ PowerMockito.whenNew(File.class).withParameterTypes(File.class, String.class)
+ .withArguments(any(File.class),
any(String.class)).thenReturn(mockTempDir).thenReturn(mockTempFile);
+
+ File mockDeploymentFile = mock(File.class);
+ when(mockDeploymentFile.getName()).thenReturn("testFileName");
+
+ FileOutputStream mockFileOutputStream = mock(FileOutputStream.class);
+
+
PowerMockito.whenNew(FileOutputStream.class).withParameterTypes(File.class).withArguments(any(File.class))
+ .thenReturn(mockFileOutputStream);
+
+ //create object to test and inject required dependencies
+ StandaloneManagedDeploymentComponent objectUnderTest = spy(new
StandaloneManagedDeploymentComponent());
+ when(objectUnderTest.getResourceContext()).thenReturn(mockResourceContext);
+
+ Field[] fields = AbstractManagedDeploymentComponent.class.getDeclaredFields();
+ for (Field field : fields) {
+ if (field.getName().equals("deploymentFile")) {
+ field.setAccessible(true);
+ field.set(objectUnderTest, mockDeploymentFile);
+ }
+ }
+
+ //run code under test
+ //will run through reflection since the method is private
+ Method[] methods =
StandaloneManagedDeploymentComponent.class.getDeclaredMethods();
+ for (Method method : methods) {
+ if (method.getName().equals("writeNewAppBitsToTempFile")) {
+ method.setAccessible(true);
+ method.invoke(objectUnderTest, mockContentServices,
mockResourcePackageDetails);
+ }
+ }
+
+ //verify the results (Assert and mock verification)
+ PowerMockito.verifyNew(File.class,
times(1)).withArguments(eq(mockResourceTemporaryDir),
+ argThat(new ArgumentMatcher<String>() {
+ @Override
+ public boolean matches(Object argumentObj) {
+ String argument = argumentObj.toString();
+ if (!argument.startsWith("deploy") || argument.length()
< 7) {
+ return false;
+ }
+
+ try {
+ String uuidPortion = argument.substring(6);
+ Long.parseLong(uuidPortion);
+ } catch (Exception e) {
+ return false;
+ }
+
+ return true;
+ }
+ }));
+ PowerMockito.verifyNew(File.class, times(1)).withArguments(eq(mockTempDir),
eq("testFileName"));
+
+ verify(mockTempDir).mkdirs();
+ verify(mockTempFile).exists();
+ verify(mockContentServices).downloadPackageBits(any(ContentContext.class),
any(PackageDetailsKey.class),
+ any(BufferedOutputStream.class), eq(true));
+ }
}
\ No newline at end of file
commit ad96a1175a97ce6a0f2d5910f5b3eb745526ea5e
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 22 17:33:34 2012 -0400
[BZ 823558] add itests that test the server attribute validation that is now done in
BaseServerComponent.start(), and make sure to null out this.lastAvail in
BaseServerComponent.stop() so the attribute validation is guaranteed to happen during a
component restart (
https://bugzilla.redhat.com/show_bug.cgi?id=823558)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index b737e41..3aaa542 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -98,6 +98,7 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
@Override
public void stop() {
logFileEventDelegate.stopLogFileEventPollers();
+ lastAvail = null;
}
@Override
@@ -173,9 +174,7 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
log.error("Failed to validate product type for " +
getResourceDescription() + ".", e);
}
if (runtimeType != null) {
- String typeString =
context.getPluginConfiguration().getSimpleValue("productType",
- JBossProductType.AS.name());
- JBossProductType type = JBossProductType.valueOf(typeString);
+ JBossProductType type = serverPluginConfig.getProductType();
if (runtimeType != type) {
throw new InvalidPluginConfigurationException("The original product
type discovered for this AS7 server was "
+ type + ", but the server is now reporting its product type
is [" + runtimeType + "].");
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
index 0d23c26..0ce32c7 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
@@ -41,11 +41,14 @@ import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
import org.rhq.core.pluginapi.configuration.ListPropertySimpleWrapper;
import org.rhq.core.pluginapi.configuration.MapPropertySimpleWrapper;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.util.FileUtils;
import org.rhq.core.pluginapi.util.StartScriptConfiguration;
import org.rhq.core.system.ProcessInfo;
import org.rhq.core.system.SystemInfo;
import org.rhq.core.system.SystemInfoFactory;
+import org.rhq.modules.plugins.jbossas7.JBossProductType;
+import org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration;
/**
* The base class for the integration tests for the two AS7 server types.
@@ -95,6 +98,58 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
assertEquals(avail, AvailabilityType.UP);
}
+ public void testServerAttributeValidation() throws Exception {
+ AvailabilityType avail = getAvailability(getServerResource());
+ assertEquals(avail, AvailabilityType.UP);
+
+ Configuration pluginConfig = getServerResource().getPluginConfiguration();
+ ServerPluginConfiguration serverPluginConfig = new
ServerPluginConfiguration(pluginConfig);
+
+ // Change the baseDir prop.
+ File originalBaseDir = serverPluginConfig.getBaseDir();
+ serverPluginConfig.setBaseDir(new
File(System.getProperty("java.io.tmpdir")));
+
+ // Restart the server ResourceComponent so it picks up the changes we just made
to the plugin config.
+ InventoryManager inventoryManager = this.pluginContainer.getInventoryManager();
+ inventoryManager.deactivateResource(getServerResource());
+ ResourceContainer serverContainer =
inventoryManager.getResourceContainer(getServerResource());
+ InvalidPluginConfigurationException ipce = null;
+ try {
+ inventoryManager.activateResource(getServerResource(), serverContainer,
true);
+ } catch (InvalidPluginConfigurationException e) {
+ ipce = e;
+ }
+
+ // Set the baseDir back to the original value and restart the component before
making any assertions, to ensure
+ // things aren't left in a corrupt state for remaining test methods.
+ serverPluginConfig.setBaseDir(originalBaseDir);
+ inventoryManager.activateResource(getServerResource(), serverContainer, true);
+
+ Assert.assertNotNull(ipce, "InvalidPluginConfigurationException was not
thrown by server component's "
+ + "start() method due to invalid baseDir.");
+
+ // Change the productType prop.
+ JBossProductType originalProductType = serverPluginConfig.getProductType();
+ serverPluginConfig.setProductType(originalProductType == JBossProductType.AS ?
JBossProductType.EAP : JBossProductType.AS);
+
+ // Restart the server ResourceComponent so it picks up the changes we just made
to the plugin config.
+ inventoryManager.deactivateResource(getServerResource());
+ ipce = null;
+ try {
+ inventoryManager.activateResource(getServerResource(), serverContainer,
true);
+ } catch (InvalidPluginConfigurationException e) {
+ ipce = e;
+ }
+
+ // Set the productType back to the original value and restart the component
before making any assertions, to ensure
+ // things aren't left in a corrupt state for remaining test methods.
+ serverPluginConfig.setProductType(originalProductType);
+ inventoryManager.activateResource(getServerResource(), serverContainer, true);
+
+ Assert.assertNotNull(ipce, "InvalidPluginConfigurationException was not
thrown by server component's "
+ + "start() method due to invalid productType.");
+ }
+
protected void validatePluginConfiguration(Configuration pluginConfig) {
System.out.println("---------- " + pluginConfig.toString(true));
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
index 95a90e3..4effd50 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
@@ -71,10 +71,14 @@ public class DomainServerComponentTest extends
AbstractServerComponentTest {
super.testAutoDiscovery();
}
+ @Test(priority = 1001)
+ public void testDomainServerAttributeValidation() throws Exception {
+ testServerAttributeValidation();
+ }
+
// ******************************* METRICS ******************************* //
- @Override
@Test(priority = 1002, enabled = true)
- public void testReleaseVersionTrait() throws Exception {
+ public void testDomainReleaseVersionTrait() throws Exception {
super.testReleaseVersionTrait();
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
index 4e0e954..9845b03 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
@@ -83,14 +83,13 @@ public class StandaloneServerComponentTest extends
AbstractServerComponentTest {
}
@Test(priority = 2)
- public void testStandaloneServerPluginConfiguration() throws Exception {
- return;
+ public void testStandaloneServerAttributeValidation() throws Exception {
+ testServerAttributeValidation();
}
// ******************************* METRICS ******************************* //
- @Override
@Test(priority = 3, enabled = true)
- public void testReleaseVersionTrait() throws Exception {
+ public void testStandaloneReleaseVersionTrait() throws Exception {
super.testReleaseVersionTrait();
}
commit 56f9805e57add71c932e8430c09353e4cf5534a3
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 22 17:29:17 2012 -0400
in the post-itest phase, only delete the AS7 install dir under /tmp, and not the AS7
dist zipfile
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index d5b85e1..c25c5d1 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -366,8 +366,7 @@
</condition>
<property name="as7.zipfile"
location="${java.io.tmpdir}/jboss-${as7.product}-${as7.version}.zip"/>
- <get src="${as7.url}" dest="${as7.zipfile}"
- usetimestamp="true" verbose="true"/>
+ <get src="${as7.url}" dest="${as7.zipfile}"
usetimestamp="true" verbose="true"/>
<unzip src="${as7.zipfile}"
dest="${java.io.tmpdir}"/>
<move file="${java.io.tmpdir}/jboss-eap-6.0"
tofile="${java.io.tmpdir}/jboss-as-${as7.version}"
failonerror="false"
@@ -390,59 +389,13 @@
</goals>
<configuration>
<target>
- <condition property="as7.product"
value="eap" else="as">
- <matches pattern="^6\."
string="${as7.version}"/>
- </condition>
- <property name="as7.zipfile"
-
location="${java.io.tmpdir}/jboss-${as7.product}-${as7.version}.zip"/>
-
- <delete file="${as7.zipfile}" />
- <delete dir="${java.io.tmpdir}/jboss-eap-6.0" />
- <delete
dir="${java.io.tmpdir}/jboss-as-${as7.version}" />
+ <delete dir="${jboss7.home}"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
- <!-- This is so we can reference the below properties in
jbossas7-arquillian.xml. -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <goals>
- <goal>set-system-properties</goal>
- </goals>
- <configuration>
- <properties>
- <property>
- <name>jboss7.home</name>
- <value>${jboss7.home}</value>
- </property>
- <property>
- <name>jboss.standalone.bindAddress</name>
- <value>${jboss.standalone.bindAddress}</value>
- </property>
- <property>
- <name>jboss.standalone.portOffset</name>
- <value>${jboss.standalone.portOffset}</value>
- </property>
- <property>
- <name>jboss.domain.portOffset</name>
- <value>${jboss.domain.portOffset}</value>
- </property>
- <property>
- <name>jboss.standalone.nativeManagementPort</name>
-
<value>${jboss.standalone.nativeManagementPort}</value>
- </property>
- </properties>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
commit 051a6a1ac67b42cbae0ea967e051275e8721d43f
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 22 17:26:44 2012 -0400
don't log an ERROR + stack trace if we fail to read a response (specifically, if a
call to conn.getResponseCode() or conn.getRepsonseMessage() throws an IOE), since it may
just mean the server has gone down - instead just let the IOE bubble up a bit and get
wrapped in a failure Result object and returned
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 16b14d6..0687516 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -301,15 +301,15 @@ public class ASConnection {
return responseCode == HttpURLConnection.HTTP_UNAUTHORIZED || responseCode ==
HTTP_TEMPORARY_REDIRECT;
}
- private void handleAuthorizationFailureResponse(Operation operation, ResponseStatus
responseCode) {
+ private void handleAuthorizationFailureResponse(Operation operation, ResponseStatus
responseStatus) {
if (log.isDebugEnabled()) {
- log.debug("Response to " + operation + " was " +
responseCode
+ log.debug("Response to " + operation + " was " +
responseStatus
+ " - throwing InvalidPluginConfigurationException...");
}
// Throw a InvalidPluginConfigurationException, so the user will get a yellow
plugin connection
// warning message in the GUI.
String message;
- if (responseCode.getResponseCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
+ if (responseStatus.getResponseCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
message = "Credentials for plugin to connect to AS7 management interface
are invalid - update Connection Settings with valid credentials.";
} else {
message = "Authorization to AS7 failed - did you install a management
user?";
@@ -508,48 +508,35 @@ public class ASConnection {
private class ResponseStatus {
- private HttpURLConnection connection;
private Integer responseCode;
private String responseMessage;
- ResponseStatus(HttpURLConnection connection) {
- this.connection = connection;
+ ResponseStatus(HttpURLConnection connection) throws IOException {
+ try {
+ responseCode = connection.getResponseCode();
+ } catch (IOException e) {
+ // try one more time
+ responseCode = connection.getResponseCode();
+ }
+
+ try {
+ responseMessage = connection.getResponseMessage();
+ } catch (IOException e) {
+ // try one more time
+ responseMessage = connection.getResponseMessage();
+ }
+
+ if (responseMessage == null) {
+ responseMessage = (getResponseCode() == HTTP_TEMPORARY_REDIRECT) ?
"Temporary Redirect" : "";
+ }
}
public int getResponseCode() {
- if (responseCode == null) {
- try {
- responseCode = connection.getResponseCode();
- } catch (IOException e) {
- try {
- // try again
- responseCode = connection.getResponseCode();
- } catch (IOException e1) {
- log.error("Failed to read response code.", e);
- responseCode = -1;
- }
- }
- }
return responseCode;
}
+ @NotNull
public String getResponseMessage() {
- if (responseMessage == null) {
- try {
- responseMessage = connection.getResponseMessage();
- } catch (IOException e) {
- try {
- // try again
- responseMessage = connection.getResponseMessage();
- } catch (IOException e1) {
- log.error("Failed to read response message.", e);
- }
- }
-
- if (responseMessage == null) {
- responseMessage = (getResponseCode() == HTTP_TEMPORARY_REDIRECT) ?
"Temporary Redirect" : "";
- }
- }
return responseMessage;
}
commit b1c04fecebd11a4970d599e3465a93e9985d5136
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 22 17:13:52 2012 -0400
upgrade antrun plugin from 1.6 to 1.7
diff --git a/pom.xml b/pom.xml
index 80c705d..6dd1430 100644
--- a/pom.xml
+++ b/pom.xml
@@ -558,13 +558,13 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.6</version>
+ <version>1.7</version>
<dependencies>
<!-- This includes all the "optional" tasks. -->
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
- <version>1.7.0</version>
+ <version>1.8.1</version>
</dependency>
<!-- This includes the <if> task, and a bunch of other handy tasks.
-->
commit 15b5719fed796da8b6a0e67aa57935fd80656b04
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Tue May 22 13:19:33 2012 -0700
[BZ 824005] UXD enhancements to Recent Alerts Page. Ack flag adjustments.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
index f1be523..c7de21b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
@@ -8,11 +8,7 @@ import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.ResourceAvailability;
import org.rhq.core.domain.operation.OperationRequestStatus;
-import org.rhq.core.domain.resource.CreateResourceStatus;
-import org.rhq.core.domain.resource.DeleteResourceStatus;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceCategory;
-import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.resource.*;
import org.rhq.core.domain.resource.group.GroupCategory;
import
org.rhq.core.domain.resource.group.composite.ResourceGroupComposite.GroupAvailabilityType;
@@ -422,6 +418,10 @@ public class ImageManager {
}
}
+ public static String getAlertStatusCheckedIcon() {
+ return "global/Check_16.png";
+ }
+
public static String getAlertIcon(AlertPriority priority) {
return "subsystems/alert/Alert_" + priority.name() +
"_16.png";
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
index aa9d871..6141345 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
@@ -28,7 +28,9 @@ import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.rpc.RPCResponse;
import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.ImageStyle;
import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.HoverCustomizer;
import com.smartgwt.client.widgets.grid.ListGridField;
@@ -149,14 +151,16 @@ public class AlertDataSource extends RPCDataSource<Alert,
AlertCriteria> {
});
fields.add(priorityField);
- ListGridField statusField = new ListGridField("status",
MSG.common_title_status());
+ ListGridField statusField = new ListGridField("acknowledgingSubject",
MSG.common_title_acknowledged());
statusField.setCellFormatter(new CellFormatter() {
public String format(Object o, ListGridRecord listGridRecord, int i, int i1)
{
String ackSubject =
listGridRecord.getAttribute("acknowledgingSubject");
if (ackSubject == null) {
- return MSG.view_alerts_field_ack_status_noAck();
+ return " ";
} else {
- return MSG.view_alerts_field_ack_status_ack(ackSubject);
+ Img checkedImg = new
Img(ImageManager.getAlertStatusCheckedIcon(),80,16);
+ checkedImg.setImageType(ImageStyle.CENTER);
+ return checkedImg.getInnerHTML();
}
}
});
@@ -170,10 +174,10 @@ public class AlertDataSource extends RPCDataSource<Alert,
AlertCriteria> {
sb.append(MSG.view_alerts_field_ack_status_noAckHover());
} else {
sb.append(" style='width:500px'>");
- Date ackTime =
record.getAttributeAsDate("acknowledgeTime");
- String ackTimeString = TimestampCellFormatter.format(ackTime,
+ Date ackDateTime =
record.getAttributeAsDate("acknowledgeTime");
+ String ackDateTimeString =
TimestampCellFormatter.format(ackDateTime,
TimestampCellFormatter.DATE_TIME_FORMAT_FULL);
- sb.append(MSG.view_alerts_field_ack_status_ackHover(ackSubject,
ackTimeString));
+ sb.append(MSG.view_alerts_field_ack_status_ackHover(ackSubject,
ackDateTimeString));
}
sb.append("</p>");
return sb.toString();
@@ -205,7 +209,7 @@ public class AlertDataSource extends RPCDataSource<Alert,
AlertCriteria> {
nameField.setWidth("15%");
conditionField.setWidth("35%");
priorityField.setWidth(50);
- statusField.setWidth(100);
+ statusField.setWidth(80);
resourceNameField.setWidth("25%");
ancestryField.setWidth("25%");
} else {
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index e38158d..46a3d0a 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -102,6 +102,7 @@ common_status_partial = Partial
common_status_success = Success
common_status_timedOut = Timed Out
common_status_unknown = Unknown
+common_title_acknowledged = Acknowledged
common_title_add_column = Add Column
common_title_add_graph_to_view = Add Graph to Monitor View
common_title_add_portlet = Add Portlet
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index a9d33a3..9a66a86 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -104,6 +104,7 @@ common_status_nochange = Keine Änderung
common_status_partial = partiell
common_status_success = Erfolg
common_status_unknown = Unbekannt
+##common_title_acknowledged = Acknowledged
common_title_add_column = Spalte hinzufügen
common_title_add_portlet = Portlet hinzufügen
common_title_address = Adresse
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index c036ea2..328eda4 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -105,6 +105,7 @@ common_status_partial = 部分的
common_status_success = 成功
common_status_timedOut = タイムアウト
common_status_unknown = 未知
+##common_title_acknowledged = Acknowledged
common_title_add_column = カラム追加
common_title_add_graph_to_view = モニタービューへのグラフの追加
common_title_add_portlet = ポートレット追加
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 3d6a3f5..7a1c9b9 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -103,6 +103,7 @@ common_status_partial = Parcial
common_status_success = Sucesso
common_status_timedOut = Tempo Esgotado
common_status_unknown = Desconhecido
+##common_title_acknowledged = Acknowledged
common_title_add_column = Adicionar Coluna
common_title_add_graph_to_view = Adicionar Gr\u00E1fico ao Monitor de Vis\u00E3o
common_title_add_portlet = Adicionar Portlet
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index fbbfbec..2c97c34 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -2111,6 +2111,7 @@ common_status_partial = Частичный
common_status_success = Успешный
common_status_timedOut = Время вышло
common_status_unknown = Неизвестный
+##common_title_acknowledged = Acknowledged
common_title_add_column = Добавить столбец
common_title_add_graph_to_view = Добавить график для просмотра
common_title_add_portlet = Добавить портлет
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 4da69e9..7ac3745 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -102,6 +102,7 @@ common_status_partial = \u5c40\u90e8
common_status_success = \u6210\u529f
common_status_timedOut = \u8d85\u65f6
common_status_unknown = \u672a\u77e5
+##common_title_acknowledged = Acknowledged
common_title_add_column = \u6dfb\u52a0\u5217
common_title_add_graph_to_view = \u6dfb\u52a0\u56fe\u5230\u76d1\u89c6\u89c6\u56fe
common_title_add_portlet = \u6dfb\u52a0Portlet
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/global/Check_16.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/Check_16.png
new file mode 100644
index 0000000..e6439ac
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/Check_16.png differ
commit ade022c91458c79e472ba62841735de985db58a6
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue May 22 17:09:29 2012 -0400
[Bug 823942 - Deadlock in plugin container (AS7 Inventory)]
Tweek the MeasurementManager initialization to leverage the
ResourceContainer because it may not be valid to assume the
Resource hierarchy can be correctly accessed as is. Also, add
some logging in the area of code that seemed like it may have
been causing a block.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
index cad55ab..125b0a0 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
@@ -75,6 +75,7 @@ import org.rhq.core.pluginapi.measurement.MeasurementFacet;
*/
public class MeasurementManager extends AgentService implements MeasurementAgentService,
ContainerService,
MeasurementManagerMBean {
+
public static final String OBJECT_NAME = "rhq.pc:type=MeasurementManager";
private static final String COLLECTOR_THREAD_POOL_NAME =
"MeasurementManager.collector";
@@ -119,6 +120,8 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
public void initialize() {
+ LOG.info("Initializing Measurement Manager...");
+
if (configuration.isStartManagementBean()) {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
try {
@@ -127,7 +130,7 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
LOG.error("Unable to register MeasurementManagerMBean", e);
}
}
-
+
this.inventoryManager = PluginContainer.getInstance().getInventoryManager();
int threadPoolSize = configuration.getMeasurementCollectionThreadPoolSize();
@@ -152,9 +155,11 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
TimeUnit.SECONDS);
// Load persistent measurement schedules from the InventoryManager and
reconstitute them.
- Resource platform =
PluginContainer.getInstance().getInventoryManager().getPlatform();
+ Resource platform = this.inventoryManager.getPlatform();
reschedule(platform);
}
+
+ LOG.info("Measurement Manager initialized.");
}
class MeasurementCollectionRequester implements Runnable {
@@ -187,6 +192,10 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
private void reschedule(Resource resource) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("In Reschedule for: " + resource);
+ }
+
int resourceId = resource.getId();
if (resourceId != 0) {
@@ -194,15 +203,17 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
if (container != null) {
Set<MeasurementScheduleRequest> schedules =
container.getMeasurementSchedule();
if (schedules != null) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Rescheduling: " + resource.getId());
+ }
scheduleCollection(resourceId, schedules);
}
- for (Resource child : resource.getChildResources()) {
+ // The container is guaranteed to have the proper children set, so
recurse on that set of child resources
+ for (Resource child : container.getResource().getChildResources()) {
reschedule(child);
}
}
- } else {
- LOG.debug("Will not reschedule schedules for resource - it is not
sync'ed yet: " + resource);
}
}
@@ -612,8 +623,8 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
if (traitValue == null) {
// the trait hasn't been collected yet, so it isn't cached. We need
to get its live value
Set<MeasurementScheduleRequest> requests = new
HashSet<MeasurementScheduleRequest>();
- requests.add(new
MeasurementScheduleRequest(MeasurementScheduleRequest.NO_SCHEDULE_ID, traitName, 0,
- true, DataType.TRAIT));
+ requests.add(new
MeasurementScheduleRequest(MeasurementScheduleRequest.NO_SCHEDULE_ID, traitName, 0, true,
+ DataType.TRAIT));
Set<MeasurementData> dataset =
getRealTimeMeasurementValue(container.getResource().getId(), requests);
if (dataset != null && dataset.size() == 1) {
Object value = dataset.iterator().next().getValue();
commit b458447208ec5207eea6f29eaafcd3ca9e5371a6
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue May 22 15:44:57 2012 -0500
[BZ 646631, 790753, 820650] Updated AS5 deployer use a unique temp folder instead of a
unique temp war name. The war name is used as-is by the AS5 deployer to determine the name
of the application be deployed.
Updated the deployer for new resources to correctly create the SHA256 file for
exploded deployments.
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/ResourceContext.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/ResourceContext.java
index 0dcf021..4b21719 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/ResourceContext.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/ResourceContext.java
@@ -48,6 +48,7 @@ import org.rhq.core.system.ProcessInfo;
import org.rhq.core.system.SystemInfo;
import org.rhq.core.system.SystemInfoFactory;
import org.rhq.core.system.pquery.ProcessInfoQuery;
+import org.rhq.core.util.MessageDigestGenerator;
/**
* The context object that {@link ResourceComponent} objects will have access - it will
have all the information that
@@ -67,6 +68,7 @@ public class ResourceContext<T extends ResourceComponent<?>>
{
private static final Log LOG = LogFactory.getLog(ResourceContext.class);
private final String resourceKey;
+ private final String resourceUuid;
private final ResourceType resourceType;
private final String version;
private final T parentResourceComponent;
@@ -76,7 +78,6 @@ public class ResourceContext<T extends ResourceComponent<?>>
{
private final ResourceDiscoveryComponent<T> resourceDiscoveryComponent;
private final File temporaryDirectory;
private final File dataDirectory;
- private final File resourceDataDirectory;
private final String pluginContainerName;
private final EventContext eventContext;
private final OperationContext operationContext;
@@ -163,7 +164,6 @@ public class ResourceContext<T extends
ResourceComponent<?>> {
this.systemInformation = systemInfo;
this.pluginConfiguration = resource.getPluginConfiguration();
this.dataDirectory = dataDirectory;
- this.resourceDataDirectory = new File(dataDirectory, resource.getUuid());
this.pluginContainerName = pluginContainerName;
this.pluginContainerDeployment = pluginContainerDeployment;
if (temporaryDirectory == null) {
@@ -183,6 +183,8 @@ public class ResourceContext<T extends
ResourceComponent<?>> {
parentResourceUuid = resource.getParentResource().getUuid();
}
this.trackedProcesses = getTrackedProcesses(parentResourceUuid, resourceType);
+
+ this.resourceUuid = resource.getUuid();
}
/**
@@ -217,16 +219,44 @@ public class ResourceContext<T extends
ResourceComponent<?>> {
}
/**
- * The {@link Resource#getUuid() uuid} of the resource this context is associated
with.
+ * The data directory of the resource this context is associated with.
*
- * @return the resource's uuid string
+ * @return resource data directory
*/
public File getResourceDataDirectory() {
+ File resourceDataDirectory = new File(dataDirectory,
this.getAncestryBasedResourceKey());
+
+ try {
+ File oldResourceDataDirectory = new File(dataDirectory, this.resourceUuid);
+ if (oldResourceDataDirectory.exists()) {
+ oldResourceDataDirectory.renameTo(resourceDataDirectory);
+ }
+ } catch (Exception e) {
+ //Just prevent an exception related to renaming of the old
+ //data resource directory from causing this method fail.
+ //This method should continue and create the new folder
+ //as if the old folder never existed.
+ }
+
if (!resourceDataDirectory.exists()) {
resourceDataDirectory.mkdirs();
}
- return this.resourceDataDirectory;
+ return resourceDataDirectory;
+ }
+
+ /**
+ * The data directory of a child to be created for the resource this context is
associated with.
+ *
+ * @return child resource data directory
+ */
+ public File getFutureChildResourceDataDirectory(String childResourceKey) {
+ File childResourceDataDirectory = new File(dataDirectory,
this.getAncestryBasedResourceKey(childResourceKey));
+ if (!childResourceDataDirectory.exists()) {
+ childResourceDataDirectory.mkdirs();
+ }
+
+ return childResourceDataDirectory;
}
/**
@@ -505,4 +535,38 @@ public class ResourceContext<T extends
ResourceComponent<?>> {
return ret;
}
}
+
+ /**
+ * Calculates a unique key based on parents' resource keys. The final key is the
SHA256
+ * all the ancestry resource keys.
+ *
+ * @return key
+ */
+ private String getAncestryBasedResourceKey() {
+ return this.getAncestryBasedResourceKey(null);
+ }
+
+ /**
+ * Calculates a unique key based on parents' resource keys.
+ *
+ * @param prefixKey extra key to be appended at the beginning of the digest process
+ * @return key
+ */
+ private String getAncestryBasedResourceKey(String prefixKey) {
+ MessageDigestGenerator messageDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
+
+ if (prefixKey != null) {
+ messageDigest.add(prefixKey.getBytes());
+ }
+
+ messageDigest.add(this.resourceKey.getBytes());
+
+ ResourceContext<?> ancestor = this.parentResourceContext;
+ while (ancestor != null) {
+ messageDigest.add(ancestor.getResourceKey().getBytes());
+ ancestor = ancestor.getParentResourceContext();
+ }
+
+ return messageDigest.getDigestString();
+ }
}
\ No newline at end of file
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
index e5f8fe6..d0839a8 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
@@ -190,7 +190,7 @@ public class ApplicationServerComponent<T extends
ResourceComponent<?>> implemen
this.contentFacetDelegate = new
ApplicationServerContentFacetDelegate(workflowManager, configPath,
resourceContext.getContentContext());
- this.createChildResourceDelegate = new CreateChildResourceFacetDelegate(this);
+ this.createChildResourceDelegate = new CreateChildResourceFacetDelegate(this,
this.getResourceContext());
// prepare to perform async avail checking
Configuration pc = resourceContext.getPluginConfiguration();
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/JBossMessagingComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/JBossMessagingComponent.java
index e5656f5..83e3ae8 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/JBossMessagingComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/JBossMessagingComponent.java
@@ -24,7 +24,6 @@ package org.rhq.plugins.jbossas5;
import java.util.Set;
-import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
@@ -45,7 +44,7 @@ public class JBossMessagingComponent extends ManagedComponentComponent
implement
public void start(ResourceContext<ProfileServiceComponent<?>>
resourceContext) throws Exception {
super.start(resourceContext);
- this.createChildResourceDelegate = new CreateChildResourceFacetDelegate(this);
+ this.createChildResourceDelegate = new CreateChildResourceFacetDelegate(this,
this.getResourceContext());
}
public void stop() {
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
index f18c564..f1eac1a 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
@@ -274,26 +274,6 @@ public class StandaloneManagedDeploymentComponent extends
AbstractManagedDeploym
+ "' to '" + backupOfOriginalFile +
"'.");
}
- // Now stop the original app.
- try {
- DeploymentManager deploymentManager =
getConnection().getDeploymentManager();
- DeploymentProgress progress = deploymentManager.stop(this.deploymentName);
- DeploymentUtils.run(progress);
- } catch (Exception e) {
- throw new RuntimeException("Failed to stop deployment [" +
this.deploymentName + "].", e);
- }
-
- // And then remove it (this will delete the physical file/dir from the deploy
dir).
- try {
- DeploymentManager deploymentManager =
getConnection().getDeploymentManager();
- DeploymentProgress progress = deploymentManager.remove(this.deploymentName);
- DeploymentUtils.run(progress);
- } catch (Exception e) {
- throw new RuntimeException("Failed to remove deployment [" +
this.deploymentName + "].", e);
- }
-
- // Deploy away!
- log.debug("Deploying '" + tempFile + "'...");
DeploymentManager deploymentManager = getConnection().getDeploymentManager();
// as crazy as it might sound, there is apparently no way for you to ask the
profile service
@@ -328,7 +308,25 @@ public class StandaloneManagedDeploymentComponent extends
AbstractManagedDeploym
}
}
+ // Now stop the original app.
+ try {
+ DeploymentProgress progress = deploymentManager.stop(this.deploymentName);
+ DeploymentUtils.run(progress);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to stop deployment [" +
this.deploymentName + "].", e);
+ }
+
+ // And then remove it (this will delete the physical file/dir from the deploy
dir).
+ try {
+ DeploymentProgress progress = deploymentManager.remove(this.deploymentName);
+ DeploymentUtils.run(progress);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to remove deployment [" +
this.deploymentName + "].", e);
+ }
+
+ // Deploy away!
try {
+ log.debug("Deploying '" + tempFile + "'...");
DeploymentUtils.deployArchive(deploymentManager, tempFile, deployExploded);
} catch (Exception e) {
// Deploy failed - rollback to the original app file...
@@ -383,7 +381,7 @@ public class StandaloneManagedDeploymentComponent extends
AbstractManagedDeploym
// Remove temporary files created by this deployment.
deleteTemporaryFile(backupDir);
- deleteTemporaryFile(tempFile);
+ deleteTemporaryFile(tempFile.getParentFile());
DeployPackagesResponse response = new
DeployPackagesResponse(ContentResponseResult.SUCCESS);
DeployIndividualPackageResponse packageResponse = new
DeployIndividualPackageResponse(packageDetails.getKey(),
@@ -461,8 +459,11 @@ public class StandaloneManagedDeploymentComponent extends
AbstractManagedDeploym
private File writeNewAppBitsToTempFile(ContentServices contentServices,
ResourcePackageDetails packageDetails)
throws Exception {
- File tempDir = getResourceContext().getTemporaryDirectory();
- File tempFile = new File(tempDir, this.deploymentFile.getName() +
UUID.randomUUID().getLeastSignificantBits());
+ File tempDir = new File(getResourceContext().getTemporaryDirectory(),
"/deploy"
+ + UUID.randomUUID().getLeastSignificantBits());
+ tempDir.mkdirs();
+
+ File tempFile = new File(tempDir, this.deploymentFile.getName());
OutputStream tempOutputStream = null;
try {
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
index de6a174..f5eaec3 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
@@ -19,13 +19,9 @@
package org.rhq.plugins.jbossas5.deploy;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.net.URI;
import java.util.Collection;
import java.util.Set;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,8 +39,9 @@ import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pluginapi.content.FileContentDelegate;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
-import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.plugins.jbossas5.connection.ProfileServiceConnection;
import org.rhq.plugins.jbossas5.util.ConversionUtils;
import org.rhq.plugins.jbossas5.util.DeploymentUtils;
@@ -62,10 +59,13 @@ public class ManagedComponentDeployer implements Deployer {
private PackageDownloader downloader;
private ProfileServiceConnection profileServiceConnection;
+ private ResourceContext<?> parentResourceContext;
- public ManagedComponentDeployer(ProfileServiceConnection profileServiceConnection,
PackageDownloader downloader) {
+ public ManagedComponentDeployer(ProfileServiceConnection profileServiceConnection,
PackageDownloader downloader,
+ ResourceContext<?> parentResourceContext) {
this.downloader = downloader;
this.profileServiceConnection = profileServiceConnection;
+ this.parentResourceContext = parentResourceContext;
}
public void deploy(CreateResourceReport createResourceReport, ResourceType
resourceType) {
@@ -89,7 +89,6 @@ public class ManagedComponentDeployer implements Deployer {
abortIfApplicationAlreadyDeployed(resourceType, archiveFile);
Configuration deployTimeConfig = details.getDeploymentTimeConfiguration();
- @SuppressWarnings({ "ConstantConditions" })
boolean deployExploded =
deployTimeConfig.getSimple("deployExploded").getBooleanValue();
DeploymentManager deploymentManager =
this.profileServiceConnection.getDeploymentManager();
@@ -135,43 +134,14 @@ public class ManagedComponentDeployer implements Deployer {
// If deployed exploded, we need to store the SHA of source package in
META-INF/MANIFEST.MF for correct
// versioning.
if (deployExploded) {
- MessageDigestGenerator sha256Generator = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
- String shaString = sha256Generator.calcDigestString(archiveFile);
URI deploymentURI = URI.create(deploymentName);
// e.g.: /C:/opt/jboss-6.0.0.Final/server/default/deploy/foo.war
String deploymentPath = deploymentURI.getPath();
File deploymentFile = new File(deploymentPath);
- if (deploymentFile.isDirectory()) {
- File manifestFile = new File(deploymentFile,
"META-INF/MANIFEST.MF");
- Manifest manifest;
- if (manifestFile.exists()) {
- FileInputStream inputStream = new FileInputStream(manifestFile);
- try {
- manifest = new Manifest(inputStream);
- } finally {
- inputStream.close();
- }
- } else {
- File metaInf = new File(deploymentFile, "META-INF");
- if (!metaInf.exists())
- if (!metaInf.mkdir())
- throw new Exception("Could not create directory
" + deploymentFile + "META-INF.");
-
- manifestFile = new File(metaInf, "MANIFEST.MF");
- manifest = new Manifest();
- }
- Attributes attribs = manifest.getMainAttributes();
- attribs.putValue("RHQ-Sha256", shaString);
- FileOutputStream outputStream = new FileOutputStream(manifestFile);
- try {
- manifest.write(outputStream);
- } finally {
- outputStream.close();
- }
- } else {
- LOG.error("Exploded deployment '" + deploymentFile
- + "' does not exist or is not a directory - unable
to add RHQ versioning metadata to META-INF/MANIFEST.MF.");
- }
+ FileContentDelegate fileContentDelegate = new FileContentDelegate();
+
+ fileContentDelegate.saveDeploymentSHA(archiveFile, deploymentFile,
+
parentResourceContext.getFutureChildResourceDataDirectory(archiveName));
}
// Reload the management view to pickup the ManagedDeployment for the app we
just deployed.
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/helper/CreateChildResourceFacetDelegate.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/helper/CreateChildResourceFacetDelegate.java
index 5a9bed1..af18723 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/helper/CreateChildResourceFacetDelegate.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/helper/CreateChildResourceFacetDelegate.java
@@ -5,11 +5,13 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.jboss.deployers.spi.management.ManagementView;
import org.jboss.managed.api.ComponentType;
import org.jboss.managed.api.DeploymentTemplateInfo;
import org.jboss.managed.api.ManagedProperty;
import org.jboss.profileservice.spi.NoSuchDeploymentException;
+
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -21,6 +23,7 @@ import org.rhq.core.domain.resource.ResourceCreationDataType;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.system.SystemInfo;
import org.rhq.plugins.jbossas5.ApplicationServerPluginConfigurationProperties;
import org.rhq.plugins.jbossas5.ManagedComponentComponent;
@@ -49,9 +52,11 @@ public class CreateChildResourceFacetDelegate implements
CreateChildResourceFace
private final Log log = LogFactory.getLog(this.getClass());
private ProfileServiceComponent component;
+ private ResourceContext<?> parentResourceContext;
- public CreateChildResourceFacetDelegate(ProfileServiceComponent component) {
+ public CreateChildResourceFacetDelegate(ProfileServiceComponent component,
ResourceContext<?> parentResourceContext) {
this.component = component;
+ this.parentResourceContext = parentResourceContext;
}
public CreateResourceReport createResource(CreateResourceReport createResourceReport)
{
@@ -158,7 +163,7 @@ public class CreateChildResourceFacetDelegate implements
CreateChildResourceFace
SystemInfo systemInfo =
component.getResourceContext().getSystemInformation();
return new ScriptDeployer(jbossHome, systemInfo, downloader);
} else {
- return new ManagedComponentDeployer(profileServiceConnection, downloader);
+ return new ManagedComponentDeployer(profileServiceConnection, downloader,
parentResourceContext);
}
}
commit 3565ce2ba72d12e284fd2904726f588611cd6382
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue May 22 15:16:52 2012 +0200
l16n 4th part
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 3b23363..1f20fb7 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -1501,118 +1501,118 @@ view_group_summary_memberType = Member Type
view_group_summary_mixed = Mixed
view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
-view_group_summary_recursive = Recursive
-view_helpTop_description = This section provides access to documentation, tutorials,
version, and other helpful information.
-view_help_section_product = Product
-view_help_section_product_about = About
-view_inventory_adq = Discovery Queue
-view_inventory_allGroups = All Groups
-view_inventory_allResources = All Resources
-view_inventory_collectionInterval = Collection Interval
-view_inventory_dynagroupDefs = Dynagroup Definitions
-view_inventory_eventDetails_loadFailed = An error occurred loading the event details
-view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
-view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
-view_inventory_eventHistory_details = Details
-view_inventory_eventHistory_detailsFilter = Details Filter
-view_inventory_eventHistory_groupEventHistory = Group Event History
-view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
-view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
-view_inventory_eventHistory_resourceEventHistory = Resource Event History
-view_inventory_eventHistory_severity = Severity
-view_inventory_eventHistory_severityFilter = Severity Filter
-view_inventory_eventHistory_sourceFilter = Source Filter
-view_inventory_eventHistory_sourceLocation = Source Location
-view_inventory_eventHistory_timestamp = Timestamp
-view_inventory_groups = Groups
-view_inventory_groups_children = Children
-view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
-view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
-view_inventory_groups_descendants = Descendants
-view_inventory_groups_loadFailed = Failed to load group composite data
-view_inventory_mixed = mixed
-view_inventory_platforms = Platforms
-view_inventory_problemGroups = Problem Groups
-view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
-view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
-view_inventory_resources_deleteFailed = Failed to delete the selected resources
-view_inventory_resources_deleteSuccessful = A request to perform the resource deletion
has been submitted successfully to the agent(s).
-view_inventory_resources_disableConfirm = Are you sure you want to disable the selected
resources? While disabled availabilities reported from the agent will be ignored.
Disabling can be useful for resources that are expected to be down as part of normal
operations or maintenance.
-view_inventory_resources_disableFailed = Failed to disable the selected resources.
-view_inventory_resources_disableSuccessful = You have successfully disabled the selected
resources and their children, [{0}] resources.
-view_inventory_resources_enableConfirm = Are you sure you want to enable the selected
resources? When enabled the availability will be set to UNKNOWN until the agents next
report availability for the resources. The agents will be requested to report the current
availabilities at their earliest convenience.
-view_inventory_resources_enableFailed = Failed to enable the selected resources.
-view_inventory_resources_enableSuccessful = You have successfully enabled the selected
resources and their children, [{0}] resources.
-view_inventory_resources_loadFailed = Failed to load resource composite data
-view_inventory_resources_members = Member Resources
-view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
-view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
-view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
-view_inventory_sectionHelp = From this section, newly discovered Resources, inventoried
Resources, and Groups can be viewed and managed.
-view_inventory_servers = Servers
-view_inventory_serversTop = Servers - Top Level Imports
-view_inventory_services = Services
-view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
-view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
-view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
-view_inventory_summary_agent_fullEnpoint = Full Endpoint
-view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
-view_inventory_summary_agent_last_title = Last Received Availability Report
-view_inventory_summary_agent_status_title = Agent Communications Status
-view_inventory_summary_agent_title = Agent Managing this Resource
-view_inventory_unavailableServers = Unavailable Servers
-view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
-view_login_invalidEmail = Invalid e-mail address
-view_login_login = Login
-view_login_logout = Logout
-view_login_noBackend = The backend datasource is unavailable.
-view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.
-view_login_noUser = The username or password provided does not match our records.
-view_login_prompt = Please Login
-view_login_registerLater = (Cancel - Complete registration later.)
-view_login_registerLdapSuccess = Successfully registered the new LDAP User.
-view_login_registerUser = Register User
-view_login_welcomeMsg = Welcome to {0}! <br/><br/> Enter/update the following
fields to complete your registration process.<br/> Once you click "OK",
you will be logged in.<br/><br/>
-view_measureRange_last = Time Range - Previous
-view_measureRange_simple = Simple...
-view_measureRange_start = Time Range - Start
-view_measureTable_chartMetricValues = Chart Selected Metrics
-view_measureTable_getLive = Get Live Value
-view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
-view_measureTable_live_title = Live Data
-view_measure_nan = --no data available--
-view_measurementOob_title = Suspect Metrics
-view_menuBar_logout = Logout
-view_messageCenter_clearAllMessages = Clear All Messages
-view_messageCenter_lastNMessages = Last {0} Messages
-view_messageCenter_maxMessages = Max Messages
-view_messageCenter_messageBarShowDetails = Show Details
+view_group_summary_recursive = Rekurzivní
+view_helpTop_description = Tato sekce umožňuje přístup do dokumentace, k tutoriálům,
verzi a další užitečné informace.
+view_help_section_product = Produkt
+view_help_section_product_about = O aplikaci
+view_inventory_adq = Fronta objevování (Discovery Queue)
+view_inventory_allGroups = Všechny skupiny
+view_inventory_allResources = Všechny zdroje
+view_inventory_collectionInterval = Interval sběru dat
+view_inventory_dynagroupDefs = Definice dynamických skupin
+view_inventory_eventDetails_loadFailed = Nastala chyba při načítání detailů o událostech
+view_inventory_eventHistory_deleteFailed = Nepodařilo se smazat události od [{0}]
+view_inventory_eventHistory_deleteSuccessful = Úspěšně jste smazali [{0}] událostí od
[{1}]
+view_inventory_eventHistory_details = Detaily
+view_inventory_eventHistory_detailsFilter = Filtr detailů
+view_inventory_eventHistory_groupEventHistory = Historie skupiny událostí
+view_inventory_eventHistory_purgeFailed = Nepodařilo se vyčistit události od [{0}]
+view_inventory_eventHistory_purgeSuccessful = Úspěšně jste vyčistili [{0}] událostí pro
[{1}]
+view_inventory_eventHistory_resourceEventHistory = Historie událostí zdroje
+view_inventory_eventHistory_severity = Závažnost
+view_inventory_eventHistory_severityFilter = Filtr závažnosti
+view_inventory_eventHistory_sourceFilter = Filtr zdroje
+view_inventory_eventHistory_sourceLocation = Lokace zdroje
+view_inventory_eventHistory_timestamp = Časové razítko
+view_inventory_groups = Skupiny
+view_inventory_groups_children = Děti
+view_inventory_groups_deleteFailed = Nepodařilo se smazat vybrané skupiny zdrojů
+view_inventory_groups_deleteSuccessful = Úspěšně jste smazali vybrané skupiny zdrojů
+view_inventory_groups_descendants = Potomci
+view_inventory_groups_loadFailed = Nepodařilo se načíst složená data pro skupinu
+view_inventory_mixed = smíšené
+view_inventory_platforms = Platformy
+view_inventory_problemGroups = Problémové skupiny
+view_inventory_resource_loadFailed = Zdroj s id [{0}] neexistuje nebo je nedostupný
+view_inventory_resources_deleteConfirm = Jste si jisti, že chcete vymazat vybrané
zdroje?
+view_inventory_resources_deleteFailed = Nepodařilo se odstranit vybrané zdroje
+view_inventory_resources_deleteSuccessful = Požadavek na smazání zdroje byl úspěšně
předán všem agentům.
+view_inventory_resources_disableConfirm = Jste si jisti, že chcete zneplatnit vybrané
zdroje? Při zneplatnění jsou hlášení o dostupnosti zdroje ignorovány. Zneplatňování může
být užitečné při údržbě systému, kdy se předpokládá, že zdroje nebudou fungovat (plánovaný
restart apod.)
+view_inventory_resources_disableFailed = Nepodařilo se zneplatnit vybrané zdroje.
+view_inventory_resources_disableSuccessful = Úspěšně jste zneplatnil vybrané zdroje a
jejich potomky, [{0}] zdrojů
+view_inventory_resources_enableConfirm = Jste si jisti, že chcete povolit vybrané zdroje?
Při povolení se dostupnost nastaví na neznámou (UNKNOWN) dokud neprobehne další agentovo
hlášení o dostupnosti zdrojů. Agenti budou požádáni o tento report co nejdříve.
+view_inventory_resources_enableFailed = Nepodařilo se povolit vybrané zdroje.
+view_inventory_resources_enableSuccessful = Úspěšně jste povolili vybrané zdroje a jejich
potomky, [{0}] zdrojů.
+view_inventory_resources_loadFailed = Nepodařilo se načíst složená data zdroje
+view_inventory_resources_members = Členské zdroje
+view_inventory_resources_uninventoryConfirm = Chcete opravdu odstranit vybrané zdroje z
inventáře? Pozn. pokud odstraněný zdroj stále existuje, bude znovuobjeven v příští fázi
skenování agentem.
+view_inventory_resources_uninventoryFailed = Nepodařilo se odstranit vybraný zdroj z
inventáře
+view_inventory_resources_uninventorySuccessful = Úspěšně jste odstranili z inventáře
vybraný zdroj
+view_inventory_sectionHelp = Z této sekce mohou být zobrazeny a spravovány nově objevené
nebo inventorizovane zdroje a skupiny
+view_inventory_servers = Servery
+view_inventory_serversTop = Servery - Importy nejvyšší úrovně
+view_inventory_services = Služby
+view_inventory_summary_agent_error1 = Nepodařilo se lokalizovat id zdroje spravované
agentem
+view_inventory_summary_agent_error2 = Nepodařilo se pingnout id zdroje spravované
agentem
+view_inventory_summary_agent_error3 = Nemáte dostatečná oprávnění na zobrazení detailů o
tomto agentovi.
+view_inventory_summary_agent_fullEnpoint = Plný koncový bod (Full Endpoint)
+view_inventory_summary_agent_fullEnpoint_err1 = !Žádný vzdálený koncový bod není
asociován s tímto zdrojem!
+view_inventory_summary_agent_last_title = Posldně přijatá zpráva o dostupnosti
+view_inventory_summary_agent_status_title = Komunikační stav agenta
+view_inventory_summary_agent_title = Agent spravující tento zdroj
+view_inventory_unavailableServers = Nedostupné servery
+view_leftNav_unknownPage = Neznámé jméno stránky [{0}] pro sekci [{1}] - URL je
neplatné.
+view_login_invalidEmail = Neplatná emailová adresa
+view_login_login = Přihlásit se
+view_login_logout = Odhlásit se
+view_login_noBackend = Datový zdroj backendu je nedostupný.
+view_login_noLdap = Poznámka: Stažení LDAP detailů bylo neúspěšné. Je vyžadován manuální
zásah.
+view_login_noUser = Uživatelské jméno nebo heslo nesedí s našimi údaji.
+view_login_prompt = Prosím, přihlaste se
+view_login_registerLater = (Storno - Dokončit registraci později.)
+view_login_registerLdapSuccess = Úspěšně registrovaný nový uživatel do LDAP.
+view_login_registerUser = Registrovat uživatele
+view_login_welcomeMsg = Vítejte v {0}! <br/><br/> Vložte/změňte následující
hodnoty pro dokončení registrace.<br/> Po kliku na "OK" budete
přihlášeni.<br/><br/>
+view_measureRange_last = Časový rozsah - Předchozí
+view_measureRange_simple = Jednoduché...
+view_measureRange_start = Časový rozsah - Start
+view_measureTable_chartMetricValues = Vykreslit vybraná měření
+view_measureTable_getLive = Získat aktuální hodnotu
+view_measureTable_getLive_failure = Nepodařilo se získat hodnoty těchto měření. Ujistěte
se, že agent běží a že spravovaný zdroj také.
+view_measureTable_live_title = Živá data
+view_measure_nan = --žádná data nejsou k dispozici--
+view_measurementOob_title = Podezřelá měření
+view_menuBar_logout = Odhlásit se
+view_messageCenter_clearAllMessages = Smazat všechny zprávy
+view_messageCenter_lastNMessages = Posledních {0} zpráv
+view_messageCenter_maxMessages = Maximum zpráv
+view_messageCenter_messageBarShowDetails = Zobrazit detaily
view_messageCenter_messageDetail = Detail
-view_messageCenter_messageSeverity = Severity
-view_messageCenter_messageTime = Time
-view_messageCenter_messageTitle = Message Center
-view_messageCenter_noRecentMessages = No Recent Messages
-view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
-view_metric_traits = Traits
-view_metric_viewTraitHistory = Value History for Trait [{0}]
-view_operationHistoryDetails_dateCompleted = Date Completed
-view_operationHistoryDetails_dateSubmitted = Date Submitted
-view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
-view_operationHistoryDetails_noResults = This operation does not return any results.
-view_operationHistoryDetails_operation = Operation
-view_operationHistoryDetails_parameters = Parameters
-view_operationHistoryDetails_requestor = Requestor
-view_operationHistoryDetails_results = Results
-view_operationHistoryDetails_status = Status
-view_operationHistoryList_button_forceDelete = Force Delete
-view_operationHistoryList_button_runOperation = Run Operation
-view_operationHistoryList_notYetStarted = not yet started
-view_operationHistoryList_title = Operation History
-view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
-view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
-view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
-view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
-view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the {0} Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
+view_messageCenter_messageSeverity = Závažnost
+view_messageCenter_messageTime = Čas
+view_messageCenter_messageTitle = Centrum zpráv
+view_messageCenter_noRecentMessages = Žádné nové zprávy
+view_messageCenter_stackTraceFollows = --- VÝPIS ZÁSOBNÍKU NÍŽE ---
+view_metric_traits = Vlastnosti
+view_metric_viewTraitHistory = Historie hodnot pro vlastnost [{0}]
+view_operationHistoryDetails_dateCompleted = Datum ukončení
+view_operationHistoryDetails_dateSubmitted = Datum vložení
+view_operationHistoryDetails_error_fetchFailure = Nepodařilo se načíst historii operace.
+view_operationHistoryDetails_noResults = Tato operace nevrací žádné výsledky.
+view_operationHistoryDetails_operation = Operace
+view_operationHistoryDetails_parameters = Parametry
+view_operationHistoryDetails_requestor = Žadatel
+view_operationHistoryDetails_results = Výsledky
+view_operationHistoryDetails_status = Stav
+view_operationHistoryList_button_forceDelete = Vynutit smazání
+view_operationHistoryList_button_runOperation = Spustit operaci
+view_operationHistoryList_notYetStarted = ještě nebyla spuštěna
+view_operationHistoryList_title = Historie operací
+view_operationScheduleDetails_enterParametersBelow = Vložte parametry níže...
+view_operationScheduleDetails_fieldDefault_description = Vyberte operaci pro zobrazení
jejího popisu.
+view_operationScheduleDetails_fieldDefault_parameters = Vyberte operaci pro zobrazení
jejich parametrů.
+view_operationScheduleDetails_fieldHelp_description = dodatečný popis k této naplánované
operaci (např. restart z důvodu noční údržby)
+view_operationScheduleDetails_fieldHelp_timeout = časový úsek - pokud je hodnota zadána,
tak pokud doba uplyne dřív, než naplánovaná operace skončila, {0} server bude považovat
operaci za neúspěšnou, protože ji vypršela doba. Pozn. není možné zastavit operaci pokud
už byla inicializována.
view_operationScheduleDetails_field_description = Popis
view_operationScheduleDetails_field_parameters = Parametry
view_operationScheduleDetails_field_timeout = Timeout
commit 85ca315479ab5c83303b2364be2e91a2ab7d31f9
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue May 22 14:02:39 2012 +0200
l16n 3rd part
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index df68a75..3b23363 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -654,92 +654,92 @@ view_admin_systemSettings_LDAPGroupFilter_desc = LDAP filtr, který
musí vráti
view_admin_systemSettings_LDAPGroupFilter_name = Skupinový filtr hledání
view_admin_systemSettings_LDAPGroupMember_desc = Používá se pro LDAP autorizaci vůči
skupině. Tento filtr pak bude použit v konjunkci se skupinovým filtrem hledání.
view_admin_systemSettings_LDAPGroupMember_name = Filtr člena skupiny
-view_admin_systemSettings_LDAPGroupUsePosixGroup_desc = Defines whether to use PosixGroup
symantics for group membership check. With PosixGroups the Group Member Filter is usually
set to 'memberUid' and the Group Filter to 'objectclass=posixGroup'.
-view_admin_systemSettings_LDAPGroupUsePosixGroup_name = Is PosixGroup
-view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
-view_admin_systemSettings_LDAPLoginProperty_name = Login Property
-view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+##view_admin_systemSettings_LDAPGroupUsePosixGroup_desc = Defines whether to use
PosixGroup symantics for group membership check. With PosixGroups the Group Member Filter
is usually set to 'memberUid' and the Group Filter to
'objectclass=posixGroup'.
+view_admin_systemSettings_LDAPGroupUsePosixGroup_name = Je to PosixGroup
+view_admin_systemSettings_LDAPLoginProperty_desc = LDAP vlastnost obsahující uživatelské
jméno. Výchozí nastavení je "cn".
+view_admin_systemSettings_LDAPLoginProperty_name = Login
+view_admin_systemSettings_LDAPProtocol_desc = Má být koumunikace s LDAP přes SSL?
view_admin_systemSettings_LDAPProtocol_name = SSL
-view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_desc = URL k LDAP serveru
view_admin_systemSettings_LDAPUrl_name = LDAP URL
-view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
-view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
-view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
-view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
-view_admin_systemSettings_dumpToLogFailed = Writing of system info to server log file
failed
-view_admin_systemSettings_dumpedToLog = System info was successfully written to server
log file
-view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
-view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
-view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
-view_admin_systemSettings_group_drift = Drift Server Configuration Settings
-view_admin_systemSettings_group_general = General Configuration Properties
-view_admin_systemSettings_group_ldap = LDAP Configuration Properties
-view_admin_systemSettings_saveFailure = Failed to save the system settings
-view_admin_systemSettings_savedSettings = You successfully saved the system properties
-view_admin_systemSettings_serverDetails = Server Details
-view_admin_systemSettings_serverDetails_buildNumber = Build Number
-view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
-view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
-view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
-view_admin_systemSettings_serverDetails_dbName = Database Product Name
-view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
-view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
-view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
-view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
-view_admin_systemSettings_serverDetails_time = Server Local Time
-view_admin_systemSettings_serverDetails_tz = Server Time Zone
-view_admin_topology = Topology
-view_alert_common_tab_conditions = Conditions
-view_alert_common_tab_conditions_expression = Fire alert when
-view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
-view_alert_common_tab_conditions_modal_title = Add Condition
-view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
-view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
-view_alert_common_tab_conditions_text = Condition
-view_alert_common_tab_conditions_type_availability = Availability Change
-view_alert_common_tab_conditions_type_availability_down = Went down
-view_alert_common_tab_conditions_type_availability_up = Came up
-view_alert_common_tab_conditions_type_drift = Drift Detection
-view_alert_common_tab_conditions_type_drift_configpaths = Drift Detection for files that
match "{0}" and for drift definition [{1}]
-view_alert_common_tab_conditions_type_drift_onlyconfig = Drift Detection for drift
definition [{0}]
-view_alert_common_tab_conditions_type_drift_onlypaths = Drift Detection for files that
match "{0}"
-view_alert_common_tab_conditions_type_event = Event Detection
-view_alert_common_tab_conditions_type_event_matching = with event source matching
-view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
-view_alert_common_tab_conditions_type_metric_baseline_verb = of
-view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
-view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
-view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
-view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
-view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
-view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
-view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_common_tab_conditions_type_metric_change = Metric Value Change
-view_alert_common_tab_conditions_type_metric_range_inside_exclusive = Metric Value Range:
[{0}] between [{1}] and [{2}], exclusive
-view_alert_common_tab_conditions_type_metric_range_inside_inclusive = Metric Value Range:
[{0}] between [{1}] and [{2}], inclusive
-view_alert_common_tab_conditions_type_metric_range_outside_exclusive = Metric Value
Range: [{0}] outside [{1}] and [{2}], exclusive
-view_alert_common_tab_conditions_type_metric_range_outside_inclusive = Metric Value
Range: [{0}] outside [{1}] and [{2}], inclusive
-view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
-view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
-view_alert_common_tab_conditions_type_operation = Operation Execution
-view_alert_common_tab_conditions_type_operation_status = with result status
-view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
-view_alert_common_tab_dampening = Dampening
-view_alert_common_tab_dampening_category_consecutive_count = Consecutive
-view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
-view_alert_common_tab_dampening_category_duration_count = Time Period
-view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
-view_alert_common_tab_dampening_category_none = None
-view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
-view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
-view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
-view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
-view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
-view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
-view_alert_common_tab_dampening_duration_period_label = Time Period
+view_admin_systemSettings_RtDataPurge_desc = Jak staré musí být časy odezvy, aby se
vymazaly z databáze. Údaj je ve dnech.
+view_admin_systemSettings_RtDataPurge_name = Smazat doby odevzy starší než
+view_admin_systemSettings_TraitPurge_desc = Jak staré musí být časy, aby se vymazaly z
databáze. Údaj je ve dnech.
+view_admin_systemSettings_TraitPurge_name = Smazat vlastnosti měření starší než
+view_admin_systemSettings_cannotLoadServerDetails = Nepodařilo se načíst detaily ze
serveru
+view_admin_systemSettings_cannotLoadSettings = Nepodařilo se načíst aktuální systémové
nastavení
+view_admin_systemSettings_dumpToLogFailed = Zapisování informací do logu serveru se
nezdařilo
+view_admin_systemSettings_dumpedToLog = Systémové informace byly úspěšně zapsány do logu
serveru
+view_admin_systemSettings_fixBeforeSaving = Prosím, opravte chybné hodnoty před uložením
+view_admin_systemSettings_group_baseline = Konfigurace automatické baseline
+view_admin_systemSettings_group_dataMgr = Konfigurace datového správce
+view_admin_systemSettings_group_drift = Konfigurace driftu
+view_admin_systemSettings_group_general = Obecná konfigurace
+view_admin_systemSettings_group_ldap = Konfigurace LDAP
+view_admin_systemSettings_saveFailure = Nepodařilo se uložit systémové nastavení
+view_admin_systemSettings_savedSettings = Systémové nastavení bylo úspěšně zapsáno do
logu serveru
+view_admin_systemSettings_serverDetails = Detaily serveru
+view_admin_systemSettings_serverDetails_buildNumber = Číslo sestavení
+view_admin_systemSettings_serverDetails_currentTable = Surová tabulka aktuálního měření
+view_admin_systemSettings_serverDetails_dbDriverName = Jméno ovladače k databázi
+view_admin_systemSettings_serverDetails_dbDriverVersion = Verze ovladače k databázi
+view_admin_systemSettings_serverDetails_dbName = Jméno databáze
+view_admin_systemSettings_serverDetails_dbUrl = URL pro připojení do databáze
+view_admin_systemSettings_serverDetails_dbVersion = Verze databáze
+view_admin_systemSettings_serverDetails_installDir = Instalační adresář serveru
+view_admin_systemSettings_serverDetails_nextRotation = Příští rotace tabulky měření
+view_admin_systemSettings_serverDetails_time = Lokální čas serveru
+view_admin_systemSettings_serverDetails_tz = Časová zóna serveru
+view_admin_topology = Topologie
+view_alert_common_tab_conditions = Podmínky
+view_alert_common_tab_conditions_expression = Vyvolat výstrahu když
+view_alert_common_tab_conditions_expression_tooltip = Určí jestli některé (ANY) nebo
všechny (ALL) podmínky se musí vyhodnotit na true, aby celková podmínka byla splněna.
+view_alert_common_tab_conditions_modal_title = Přidat podmínku
+view_alert_common_tab_conditions_recovery_disabled = Tato výstraha způsobí, že definice
této výstrahy bude zneplatněna
+view_alert_common_tab_conditions_recovery_enabled = Odpáleno ''{0}'' bude
znovupovolen
+view_alert_common_tab_conditions_text = Podmínka
+view_alert_common_tab_conditions_type_availability = Změna dostupnosti
+view_alert_common_tab_conditions_type_availability_down = Spadl
+view_alert_common_tab_conditions_type_availability_up = Naběhl
+view_alert_common_tab_conditions_type_drift = Detekce driftu
+view_alert_common_tab_conditions_type_drift_configpaths = Detekce driftu pro soubory,
kterým pasuje "{0}" a pro definice driftu [{1}]
+view_alert_common_tab_conditions_type_drift_onlyconfig = Detekce driftu pro definici
driftu [{0}]
+view_alert_common_tab_conditions_type_drift_onlypaths = Detekce driftu pro soubory,
kterým pasuje "{0}"
+view_alert_common_tab_conditions_type_event = Detekce událostí
+view_alert_common_tab_conditions_type_event_matching = se zdrojem událostí vyhovujícím
+view_alert_common_tab_conditions_type_metric_baseline = Baseline měřené hodnoty
+view_alert_common_tab_conditions_type_metric_baseline_verb = zapnuto
+view_alert_common_tab_conditions_type_metric_calltime_change = Změny v dobách volání
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = nejméně o
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Roste
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Mění se
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Zmenšuje se
+view_alert_common_tab_conditions_type_metric_calltime_destination = s cílem volání
odpovídajícím
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Práh doby volání
+view_alert_common_tab_conditions_type_metric_change = Změna měřené hodnoty
+view_alert_common_tab_conditions_type_metric_range_inside_exclusive = Rozsah měřené
hodnoty: [{0}] mezi [{1}] a [{2}], vyjimaje (ne včetne)
+view_alert_common_tab_conditions_type_metric_range_inside_inclusive = Rozsah měřené
hodnoty: [{0}] mezi [{1}] a [{2}], včetně
+view_alert_common_tab_conditions_type_metric_range_outside_exclusive = Rozsah měřené
hodnoty: [{0}] vně (opak mezi) [{1}] a [{2}], vyjimaje (ne včetne)
+view_alert_common_tab_conditions_type_metric_range_outside_inclusive = Rozsah měřené
hodnoty: [{0}] vně (opak mezi) [{1}] a [{2}], včetne
+view_alert_common_tab_conditions_type_metric_threshold = Práh měřené hodnoty
+view_alert_common_tab_conditions_type_metric_trait_change = Změna vlastnosti
+view_alert_common_tab_conditions_type_operation = Spouštění operace
+view_alert_common_tab_conditions_type_operation_status = s návratovým stavem
+view_alert_common_tab_conditions_type_resource_configuration = Změna konfigurace zdroje
+view_alert_common_tab_dampening = Tlumení
+view_alert_common_tab_dampening_category_consecutive_count = Následnost
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = Výstraha je vyvolána
jednou za každých X případů, kdy byla podmínka splněna.
+view_alert_common_tab_dampening_category_duration_count = Časové období
+view_alert_common_tab_dampening_category_duration_count_tooltip = Výstraha je vyvolána
jednou za každých X případů, kdy byla podmínka splněna v daném časovém okně.
+view_alert_common_tab_dampening_category_none = Žádný
+view_alert_common_tab_dampening_category_none_tooltip = Tlumení je zakázáno. Pokaždé,
když je podmínka splněna, výstraha bude vyvolána.
+view_alert_common_tab_dampening_category_partial_count = Posledních N ohodnocení
+view_alert_common_tab_dampening_category_partial_count_tooltip = Výstraha je vyvolána
jednou za každých X případů, kdy byla podmínka splněna během posledních N ohodnocení.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Výskyty
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = Kolikrát
bezprostředně po sobě musí být podmínka splněna, aby byla výstraha vyvolána.
+view_alert_common_tab_dampening_duration_occurrences_label = Výskyty
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = Výstraha je vyvolána
jednou za každých X případů, kdy byla podmínka splněna v daném časovém okně.
+view_alert_common_tab_dampening_duration_period_label = Časové období
view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
@@ -1613,101 +1613,101 @@ view_operationScheduleDetails_fieldDefault_description = Select
an operation to
view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the {0} Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
-view_operationScheduleDetails_field_description = Description
-view_operationScheduleDetails_field_parameters = Parameters
+view_operationScheduleDetails_field_description = Popis
+view_operationScheduleDetails_field_parameters = Parametry
view_operationScheduleDetails_field_timeout = Timeout
-view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
-view_operationScheduleDetails_operationSchedule = Operation Schedule
-view_portlet_autodiscovery_setting_platforms = discovered platforms
-view_portlet_configure_definitionDesc = The configuration settings for the portlet.
-view_portlet_configure_definitionTitle = Portlet Configuration
-view_portlet_configure_needed = Click the Settings button to configure this portlet.
-view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
-view_portlet_defaultName_autodiscovery = Discovery Queue
-view_portlet_defaultName_favoriteResources = Favorite Resources
-view_portlet_defaultName_groupMetric = Resource Group Metric Graph
-view_portlet_defaultName_group_alerts = Group: Alerts
-view_portlet_defaultName_group_bundles = Group: Bundle Deployments
-view_portlet_defaultName_group_config_updates = Group: Configuration Updates
-view_portlet_defaultName_group_events = Group: Event Counts
-view_portlet_defaultName_group_metrics = Group: Metrics
-view_portlet_defaultName_group_oobs = Group: OOB Conditions
-view_portlet_defaultName_group_operations = Group: Operations
-view_portlet_defaultName_group_pkg_hisory = Group: Package History
-view_portlet_defaultName_inventorySummary = Inventory Summary
+view_operationScheduleDetails_noParameters = Tato operace nemá žádné parametry.
+view_operationScheduleDetails_operationSchedule = Rozvrh operací
+view_portlet_autodiscovery_setting_platforms = objevené platformy
+view_portlet_configure_definitionDesc = Konfigurace tohoto portletu.
+view_portlet_configure_definitionTitle = Konfigurace portletu
+view_portlet_configure_needed = Klikněte na tlačítko Nastavení pro konfiguraci tohoto
portletu.
+view_portlet_configure_notNeeded = Pro tento portlet není nutná konfigurace.
+view_portlet_defaultName_autodiscovery = Fronta objevování (Discovery Queue)
+view_portlet_defaultName_favoriteResources = Oblíbené zdroje
+view_portlet_defaultName_groupMetric = Graf měření pro skupinu zdrojů
+view_portlet_defaultName_group_alerts = Skupina: Výstrahy
+view_portlet_defaultName_group_bundles = Skupina: Nasazování balíků
+view_portlet_defaultName_group_config_updates = Skupina: Aktualizace konfigurace
+view_portlet_defaultName_group_events = Skupina: Čítače událostí
+view_portlet_defaultName_group_metrics = Skupina: Měření
+view_portlet_defaultName_group_oobs = Skupina: OOB podmínky
+view_portlet_defaultName_group_operations = Skupina: Operace
+view_portlet_defaultName_group_pkg_hisory = Skupina: Historie balíků
+view_portlet_defaultName_inventorySummary = Shrnutí inventáře
view_portlet_defaultName_mashup = Mashup
-view_portlet_defaultName_message = Message
-view_portlet_defaultName_operations = Recent Operations
-view_portlet_defaultName_platformSummary = Platform Utilization
-view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
-view_portlet_defaultName_recentAlerts = Recent Alerts
-view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
-view_portlet_defaultName_resourceMetric = Resource Metric Graph
-view_portlet_defaultName_resource_alerts = Resource: Alerts
-view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
-view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
-view_portlet_defaultName_resource_events = Resource: Event Counts
-view_portlet_defaultName_resource_metrics = Resource: Measurements
-view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
-view_portlet_defaultName_resource_operations = Resource: Operations
-view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
-view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
-view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
-view_portlet_graph_configure_resource_graph = The resource to graph
-view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
-view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
-view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
-view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
-view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
-view_portlet_help_graph = This portlet displays the resource metric graph.
-view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
-view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
-view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
-view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
-view_portlet_help_none = There is no help available for this portlet.
-view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
-view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
-view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
-view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
-view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
-view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
-view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
-view_portlet_help_recentDrifts = This portlet displays recent file drift on the current
user''s viewable inventory.
-view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
-view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
-view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
-view_portlet_inventory_error1 = Failed to retrieve inventory summary
-view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
-view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
-view_portlet_message_title = The message to display.
-view_portlet_operations_config_completed = completed operations
-view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
-view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
-view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
-view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
-view_portlet_operations_config_show_last = show Last
-view_portlet_operations_config_show_next = show Next
-view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
-view_portlet_platform_platform_error_1 = Failed to load platform metrics
-view_portlet_platform_type_error_1 = Could not load type data
-view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
-view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
-view_portlet_problemResources_config_display_range2 = From {0} to {1}
-view_portlet_problemResources_maxDisplaySetting = maximum resources.
-view_portlet_recentAlerts_config_members = Select Members
-view_portlet_recentAlerts_config_priority_label = priority Alerts,
-view_portlet_recentAlerts_config_when = within the past
-view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
-view_portlet_recentlyAdded_error1 = Failed to load recently added resources
-view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
-view_portlet_results_empty = No results found using specified criteria.
-view_remoteAgentInstall_agentStatus = Agent Status
-view_remoteAgentInstall_agentStatusDefault = -Click Update Status Button-
-view_remoteAgentInstall_buttonFindAgent = Find Agent
-view_remoteAgentInstall_connInfo = Connection Information
-view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
-view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
-view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
+view_portlet_defaultName_message = Zpráva
+view_portlet_defaultName_operations = Poslední operace
+view_portlet_defaultName_platformSummary = Využití platformy
+view_portlet_defaultName_problemResources = Nedostupné zdroje, nebo zdroje s výstrahou
+view_portlet_defaultName_recentAlerts = Poslední výstrahy
+view_portlet_defaultName_recentlyAddedResources = Naposledy přidané zdroje
+view_portlet_defaultName_resourceMetric = Graf měření pro zdroj
+view_portlet_defaultName_resource_alerts = Zdroj: Výstrahy
+view_portlet_defaultName_resource_bundles = Zdroj: Nasazování balíků
+view_portlet_defaultName_resource_config_updates = Zdroj: Aktualizace konfigurace
+view_portlet_defaultName_resource_events = Zdroj: Čítače událostí
+view_portlet_defaultName_resource_metrics = Zdroj: Měření (metriky)
+view_portlet_defaultName_resource_oobs = Zdroj: OOB metriky
+view_portlet_defaultName_resource_operations = Zdroj: Operace
+view_portlet_defaultName_resource_pkg_hisory = Zdroj: Historie balíků
+view_portlet_factory_invalidPortlet = Tento portlet je zastaralý a už se nepoužívá.
Prosím smažte si jej.
+view_portlet_graph_configure_metricDefinition_graph = Id definice měření grafu
+view_portlet_graph_configure_resource_graph = Zdroj grafu
+view_portlet_help_autodiscovery = Tento portlet umožňuje importovat, ignorovat nově
objevené zdroje. Importované zdroje jsou přidány do inventáže pro monitoring a správu.
Ignorované zdroje nejsou importovány a jsou skryty.
+view_portlet_help_bundle_deps = Tento portlet zobrazí relevantní nasazení balíků v
závislosti na nastavených zobrazovacích kritériích.
+view_portlet_help_config_updates = Tento portlet zobrazí poslední změny v konfiguracích v
závislosti na nastavení.
+view_portlet_help_eventcounts = Tento portlet zobrazí počet událostí v závislosti na
nastavených zobrazovacích kritériích.
+view_portlet_help_favoriteResources = Tento portlet zobrazí uživatelovy oblíbené zdroje.
+view_portlet_help_graph = Tento portlet zobrazí graf měření.
+view_portlet_help_inventorySummary = Tento portlet zobrazí krátké shrnutí uživatelových
měření a inventáře.
+view_portlet_help_mashup = Tento portlet zobrazí obsah získaný voláním vzdáleného HTTP
requstu (je použit HTML element iframe)
+view_portlet_help_message = Tento portlet zobrazí statickou HTML zprávu. Vlastnost
<i>zpráva (message)</i>, musí být nakonfigurována.
+view_portlet_help_metrics = Tento portlet zobrazí do grafu poslední naměřená data v
závislosti na nastavených zobrazovacích kritériích.
+view_portlet_help_none = Pro tento portlet není k dispozici žádná nápověda.
+view_portlet_help_oobs = Tento portlet zobrazí OOB(mimořádné události).
+view_portlet_help_operations = Tento portlet zobrazí naposledy spuštěné operace pro
aktuální uživatelův inventář.
+view_portlet_help_operations_criteria = Tento portlet zobrazí operace v závislosti na
nastavených zobrazovacích kritériích.
+view_portlet_help_pkg_history = Tento portlet zobrazí historii balíků v závislosti na
nastavených zobrazovacích kritériích.
+view_portlet_help_platformSummary = Tento portlet zobrazí data o vytížení (jako CPU a
paměťové vytížení) pro platformu dostupnou uživateli.
+view_portlet_help_problemResources = Tento portlet zobrazí nedostupné zdroje a zdroje s
výstrahou.
+view_portlet_help_recentAlerts = Tento portlet zobrazí naposledy vyvolané výstrahy pro
aktuální uživatelův inventář.
+view_portlet_help_recentDrifts = Tento portlet zobrazí nejposlednější drifty souborů pro
aktuální uživatelův inventář.
+view_portlet_help_recentlyAdded = Tento portlet zobrazí zdroje, které byly nedávno
importovány do inventáře.
+view_portlet_help_scheduledOperations = Tento portlet zobrazí další naplánované operace
pro aktuální uživatelův inventář.
+view_portlet_help_tagCloud = Tento portlet zobrazí tagy pro aktuální uživatelův
inventář.
+view_portlet_inventory_error1 = Nepodařilo se získat shrnutí inventáře
+view_portlet_inventory_tooltip_collapse = Klikněte pro skrytí detailů o tomto zdroji.
+view_portlet_inventory_tooltip_expand = Klikněte pro zobrazení více detailů o tomto
zdroji.
+view_portlet_message_title = Zpráva k zobrazení.
+view_portlet_operations_config_completed = dokončené operace
+view_portlet_operations_config_completed_enable = Zda-li povolit shlukování výsledků
dokončených operací na dashboard.
+view_portlet_operations_config_completed_maximum = Maximum dokončených operací k
zobrazení.
+view_portlet_operations_config_scheduled_enable = Zda-li povolit shlukování výsledků
naplánovaných operací na dashboard.
+view_portlet_operations_config_scheduled_maximum = Maximum naplánovaných operací k
zobrazení.
+view_portlet_operations_config_show_last = zobrazit poslední
+view_portlet_operations_config_show_next = zobrazit další
+view_portlet_operations_disabled = (Výsledky jsou aktuálně zakázány. Pro povolení změňte
nastavení.
+view_portlet_platform_platform_error_1 = Nepodařilo se načíst metriky pro platformu
+view_portlet_platform_type_error_1 = Nepodařilo se načíst data s typem
+view_portlet_problemResources_config_display_maximum = Maximální počet problému zdroje k
zobrazení.
+view_portlet_problemResources_config_display_range = Ukáže problémy se zdrojem tolik
hodin zpátky.
+view_portlet_problemResources_config_display_range2 = Od {0} do {1}
+view_portlet_problemResources_maxDisplaySetting = maximum zdrojů.
+view_portlet_recentAlerts_config_members = Vybraní členové
+view_portlet_recentAlerts_config_priority_label = prioritní výstrahy,
+view_portlet_recentAlerts_config_when = v minulosti
+view_portlet_recentAlerts_fail_msg = Nepodařilo se načíst zdroje přiřazené pro filtraci
výstrah.
+view_portlet_recentlyAdded_error1 = Nepodařilo se načíst naposledy přidané zdroje
+view_portlet_recentlyAdded_setting_addedPlatforms = naposledy přidané platformy
+view_portlet_results_empty = Žádné výsledky nenalezeny při použití uvedených kritérií.
+view_remoteAgentInstall_agentStatus = Status agenta
+view_remoteAgentInstall_agentStatusDefault = -Zmáčkněte tlačítko Obnovit stav-
+view_remoteAgentInstall_buttonFindAgent = Najít agenta
+view_remoteAgentInstall_connInfo = Informace o spojení
+view_remoteAgentInstall_error_1 = Stala se chyba při zjišťování instalační cesty agenta
+view_remoteAgentInstall_error_2 = Nepodařilo se nalézt agenta dívajíc se do výchozích
lokací
+view_remoteAgentInstall_error_3 = Nepodařilo se nalézt agenta nainstalovaného v [{0}]
view_remoteAgentInstall_error_4 = Nepodařilo se nainstalovat agenta
view_remoteAgentInstall_error_5 = Nepodařilo se spustit agenta
view_remoteAgentInstall_error_6 = Nepodařilo se zastavit agenta
commit c88e2e40bc6be102e0d52663a028f9fe5abd3a28
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue May 22 11:32:00 2012 +0200
l16n 2nd part
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
index 979f48b..df68a75 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -140,105 +140,106 @@ common_title_description = Popis
common_title_details = Detaily
common_title_display = Displej
common_title_display_name = Jméno displeje
-common_title_duration = Duration
-common_title_edit = Edit?
-common_title_edit_mode = Edit Mode
-common_title_enabled = Enabled?
-common_title_end = End
-common_title_generalProp = General Properties
-common_title_group = Group
-common_title_group_def_total = Group Definition Total
-common_title_group_member_health = Group Member Health
-common_title_groups = Groups
-common_title_help = Help
+common_title_duration = Trvání
+common_title_edit = Editovat?
+common_title_edit_mode = Editační mód
+common_title_enabled = Povoleno?
+common_title_end = Konec
+common_title_favorites = Oblíbené
+common_title_generalProp = Obecné vlastnosti
+common_title_group = Skupina
+common_title_group_def_total = Definic skupin celkem
+common_title_group_member_health = Zdraví člena skupiny
+common_title_groups = Skupiny
+common_title_help = Nápověda
common_title_host = Host
+common_title_icon = Ikona
common_title_id = ID
-common_title_id_parent = Parent ID
-common_title_in_compliance = In Compliance?
+common_title_id_parent = ID rodiče
+common_title_in_compliance = V cajku?
common_title_interval = Interval
-common_title_inventory = Inventory
-common_title_inventorySummary = Inventory Summary
-common_title_kind = Kind
-common_title_lastUpdated = Last Updated
-common_title_lastUpdatedBy = Last Updated By
-common_title_ldapGroups = LDAP Groups
+common_title_inventory = Inventář
+common_title_inventorySummary = Shrnutí inventáře
+common_title_kind = Druh
+common_title_lastUpdated = Naposledy modifikováno
+common_title_lastUpdatedBy = Naposledy modifikoval
+common_title_ldapGroups = LDAP skupiny
common_title_mashup = Mashup
-common_title_members_reporting = Members Reporting
-common_title_message = Message
-common_title_metric = Metric
-common_title_metric_chart = Metric Chart
-common_title_mixedGroups = Mixed Groups
-common_title_mixedGroups_total = Mixed Group Total
-common_title_name = Name
-common_title_new_dashboard = New Dashboard
-common_title_numeric_metrics = Numeric Metrics
-common_title_numeric_type = Numeric Type
-common_title_operation = Operation
-common_title_operation_status = Operation Status
-common_title_operations = Operations
-common_title_operations_range = Operation Range
-common_title_over = Over
-common_title_password = Password
-common_title_path = Path
-common_title_permissions = Permissions
-common_title_platform = Platform
-common_title_platform_total = Platform Total
-common_title_plugin = Plugin
+common_title_members_reporting = Reportování členů
+common_title_message = Zpráva
+common_title_metric = Metrika
+common_title_metric_chart = Graf metriky
+common_title_mixedGroups = Smíšené skupiny
+common_title_mixedGroups_total = Smíšených skupin celkem
+common_title_name = Jméno
+common_title_new_dashboard = Nový dashboard
+common_title_numeric_metrics = Číselné metriky
+common_title_numeric_type = Číselný typ
+common_title_operation = Operace
+common_title_operation_status = Status operace
+common_title_operations = Operace
+common_title_operations_range = Rozsah operace
+common_title_over = Přes
+common_title_password = Heslo
+common_title_path = Cesta
+common_title_permissions = Povolení
+common_title_platform = Platforma
+common_title_platform_total = Celkem platforem
+common_title_plugin = Zásuvný modul
common_title_port = Port
-common_title_providers = Providers
-common_title_recent_alerts = Recent Alerts
-common_title_recent_bundle_deployments = Recent Bundle Deployments
-common_title_recent_configuration_updates = Recent Configuration Updates
-common_title_recent_drifts = Recent Drift
-common_title_recent_event_counts = Recent Event Counts
-common_title_recent_measurements = Recent Measurements
-common_title_recent_oob_metrics = Recent Out of Bound metrics
-common_title_recent_operations = Recent Operations
-common_title_recent_pkg_history = Recent Package History
-common_title_recently_added = Recently Added
-common_title_remove_column = Remove Column
-common_title_repositories = Repositories
-common_title_resource = Resource
-common_title_resourceGroups = Resource Groups
-common_title_resource_group = Resource Group
-common_title_resource_id = Resource ID
-common_title_resource_inventory = Resource Inventory
-common_title_resource_key = Resource Key
-common_title_resource_name = Resource Name
-common_title_resource_type = Resource Type
-common_title_resources = Resources
-common_title_results_count = Results Count
-common_title_results_count_tooltip = Displays this number of results
+common_title_providers = Poskytovatelé
+common_title_recent_alerts = Nedávné výstrahy
+common_title_recent_bundle_deployments = Nedávno nasazené balíky
+common_title_recent_configuration_updates = Nedávno změněné konfigurace
+common_title_recent_drifts = Nedávný drift
+common_title_recent_event_counts = Počet nedávných událostí
+common_title_recent_measurements = Nedávná měření
+common_title_recent_oob_metrics = Nedávná podezřelá měření
+common_title_recent_operations = Nedávné operace
+common_title_recent_pkg_history = Nedávná historie balíků
+common_title_recently_added = Naposledy přidané
+common_title_remove_column = Odebrat sloupec
+common_title_repositories = Repozitáře
+common_title_resource = Zdroj
+common_title_resourceGroups = Skupiny zdrojů
+common_title_resource_group = Skupina zdrojů
+common_title_resource_id = ID zdroje
+common_title_resource_inventory = Inventář zdrojů
+common_title_resource_key = Klíč zdroje
+common_title_resource_name = Jméno zdroje
+common_title_resource_type = Typ zdroje
+common_title_resources = Zdroje
+common_title_results_count = Počet výsledků
+common_title_results_count_tooltip = Zobrazit tento počet výsledků
common_title_role = Role
-common_title_roles = Roles
-common_title_scheduled_operations = Scheduled Operations
-common_title_search = Search
-common_title_selected_resources = Selected Resources
+common_title_roles = Role
+common_title_scheduled_operations = Naplánované operace
+common_title_search = Prohledat
+common_title_selected_resources = Vybrané zdroje
common_title_server = Server
-common_title_server_total = Server Total
-common_title_service = Service
-common_title_service_total = Service Total
-common_title_settings = Settings
-common_title_show = Show
-common_title_sort_order = Sort Order
-common_title_sort_order_tooltip = Sets sort order for results.
+common_title_server_total = Serverů celkem
+common_title_service = Služba
+common_title_service_total = Služeb celkem
+common_title_settings = Nastavení
+common_title_show = Zobrazit
+common_title_sort_order = Řazení
+common_title_sort_order_tooltip = Nastaví řazení pro výsledky.
common_title_start = Start
-common_title_status = Status
+common_title_status = Stav
common_title_stop = Stop
-common_title_summary = Summary
-common_title_tag_cloud = Tag Cloud
-common_title_the = The
-common_title_timestamp = Date/Time
-common_title_total = Total
-common_title_type = Type
-common_title_units = Units
-common_title_user = User
-common_title_users = Users
-common_title_value = Value
-common_title_version = Version
-common_title_view_mode = View Mode
-common_title_web_address = Web Address
-common_title_welcome = Welcome
+common_title_summary = Shrnutí
+common_title_tag_cloud = Tag cloud
+common_title_timestamp = Datum/Čas
+common_title_total = Celkem
+common_title_type = Typ
+common_title_units = Jednotky
+common_title_user = Uživatel
+common_title_users = Uživatelé
+common_title_value = Hodnota
+common_title_version = Verze
+common_title_view_mode = Zobrazovací mód
+common_title_web_address = Webová adresa
+common_title_welcome = Vítejte
common_unit_abbrev_bits = b
common_unit_abbrev_bytes = B
common_unit_abbrev_celsius = C
@@ -263,396 +264,396 @@ common_unit_abbrev_petabytes = PB
common_unit_abbrev_seconds = s
common_unit_abbrev_terabits = Tb
common_unit_abbrev_terabytes = TB
-common_unit_days = days
-common_unit_days2 = days
-common_unit_hours = hours
-common_unit_milliseconds = milliseconds
-common_unit_minute = minute
-common_unit_minutes = minutes
-common_unit_months = months
-common_unit_seconds = seconds
-common_unit_times = times
-common_unit_weeks = weeks
-common_unit_years = years
-common_val_for = for
-common_val_n1st = {0}st
-common_val_n2nd = {0}nd
-common_val_n3rd = {0}rd
+common_unit_days = dnů
+common_unit_days2 = dnů
+common_unit_hours = hodin
+common_unit_milliseconds = milisekund
+common_unit_minute = minuta
+common_unit_minutes = minut
+common_unit_months = měsíců
+common_unit_seconds = sekund
+common_unit_times = časy???
+common_unit_weeks = týdny
+common_unit_years = roky
+common_val_for = pro
+common_val_n1st = {0}.
+common_val_n2nd = {0}.
+common_val_n3rd = {0}.
common_val_na = N/A
-common_val_never = Never
-common_val_no = No
-common_val_no_lower = no
-common_val_none = None
-common_val_nth = {0}th
-common_val_yes = Yes
-common_val_yes_lower = yes
-dataSource_ContentRepoTree_error_load = Error loading repositories
-dataSource_ContentRepoTree_field_parentId = Parent ID
-dataSource_bundle_loadFailed = Failed to load Bundle data
-dataSource_configurationHistory_clickToSeeError = Double click to see error message...
-dataSource_configurationHistory_currentConfig = This is the current configuration
-dataSource_configurationHistory_dateCompleted = Date Completed
-dataSource_configurationHistory_dateSubmitted = Date Submitted
-dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
-dataSource_configurationHistory_updateType = Update Type
-dataSource_configurationHistory_updateType_group = Group
-dataSource_configurationHistory_updateType_individual = Individual
-dataSource_definitions_loadFailed = Failed to load metric definitions
-dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
-dataSource_measurementOob_field_factor = Out of Range Factor (%)
-dataSource_measurementOob_field_formattedBaseband = Band
-dataSource_measurementOob_field_formattedOutlier = Outlier
-dataSource_measurementOob_field_parentName = Parent
-dataSource_measurementOob_field_resourceName = Resource
-dataSource_measurementOob_field_scheduleName = Metric
-dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
-dataSource_operationHistory_field_createdTime = Created Time
-dataSource_operationHistory_field_operationName = Operation Name
-dataSource_operationHistory_field_startedTime = Started Time
-dataSource_operationHistory_field_subject = Requester
-dataSource_operationSchedule_field_description = Notes
-dataSource_operationSchedule_field_id = Schedule ID
-dataSource_operationSchedule_field_nextFireTime = Next Execution
-dataSource_operationSchedule_field_operationDisplayName = Operation
-dataSource_operationSchedule_field_operationName = Operation
-dataSource_operationSchedule_field_subject = Owner
-dataSource_operationSchedule_field_timeout = Timeout (in seconds)
+common_val_never = Nikdy
+common_val_no = Ne
+common_val_no_lower = ne
+common_val_none = Žádný
+common_val_nth = {0}.
+common_val_yes = Ano
+common_val_yes_lower = ano
+dataSource_ContentRepoTree_error_load = Chyba pri načítání repozitářů
+dataSource_ContentRepoTree_field_parentId = ID rodiče
+dataSource_bundle_loadFailed = Nepodařilo se načíst data balíku
+dataSource_configurationHistory_clickToSeeError = Klikněte 2x abyste viděli chybovou
zprávu...
+dataSource_configurationHistory_currentConfig = Tohle je aktuální nastavení
+dataSource_configurationHistory_dateCompleted = Datum dokončení
+dataSource_configurationHistory_dateSubmitted = Datum vložení
+dataSource_configurationHistory_error_fetchFailure = Nepodařilo se načíst historii
konfigurace.
+dataSource_configurationHistory_field_status = Status
+dataSource_configurationHistory_updateType = Typ aktualizace
+dataSource_configurationHistory_updateType_group = Skupina
+dataSource_configurationHistory_updateType_individual = Individuum
+dataSource_definitions_loadFailed = Nepodařilo se načíst definice metrik
+dataSource_measurementOob_error_fetchFailure = Nepodařilo se načíst informace o
mimořádných měření
+dataSource_measurementOob_field_factor = Míra deviace (%)
+dataSource_measurementOob_field_formattedBaseband = Linka
+dataSource_measurementOob_field_formattedOutlier = Mimořádná hodnota
+dataSource_measurementOob_field_parentName = Rodič
+dataSource_measurementOob_field_resourceName = Zdroj
+dataSource_measurementOob_field_scheduleName = Metrika
+dataSource_operationHistory_error_fetchFailure = Nepodařilo se načíst historie operací.
+dataSource_operationHistory_field_createdTime = Čas vytvoření
+dataSource_operationHistory_field_operationName = Jméno operace
+dataSource_operationHistory_field_startedTime = Čas spuštění
+dataSource_operationHistory_field_subject = Žadatel
+dataSource_operationSchedule_field_description = Poznámky
+dataSource_operationSchedule_field_id = ID rozvrhu
+dataSource_operationSchedule_field_nextFireTime = Příští exekuce
+dataSource_operationSchedule_field_operationDisplayName = Operace
+dataSource_operationSchedule_field_operationName = Operace
+dataSource_operationSchedule_field_subject = Vlastník
+dataSource_operationSchedule_field_timeout = Timeout (v sekundách)
dataSource_platforms_field_cpu = CPU
-dataSource_platforms_field_memory = Memory
+dataSource_platforms_field_memory = Paměť
dataSource_platforms_field_swap = Swap
-dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
-dataSource_problemResources_field_available = Current Availability
-dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
-dataSource_recentOperations_field_location = Location
-dataSource_recentOperations_field_operation = Operation
-dataSource_recentOperations_field_resource = Resource
+dataSource_problemResources_error_fetchFailure = Nepodařilo se načíst zdroj s
výstrahami.
+dataSource_problemResources_field_available = Aktuální dostupnost
+dataSource_recentOperations_error_fetchFailure = Nepodařilo se načíst naposledy dokončené
operace.
+dataSource_recentOperations_field_location = Lokace
+dataSource_recentOperations_field_operation = Operace
+dataSource_recentOperations_field_resource = Zdroj
dataSource_recentOperations_field_status = Status
-dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
-dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
-dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
-dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
-dataSource_resourceErrors_field_errorType = Error Type
-dataSource_resourceErrors_field_summary = Summary
-dataSource_resourceErrors_field_timeOccured = Time
-dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
-dataSource_resources_field_discoveryTime = Discovery Time
-dataSource_resources_field_importTime = Import Time
-dataSource_resources_field_key = Key
-dataSource_resources_field_lastModifiedTime = Last Modified Time
-dataSource_resources_field_lastModifier = Last Modifier
-dataSource_resources_field_location = Location
-dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
-dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
-dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
-dataSource_rpc_no = no
-dataSource_rpc_yes = yes
-dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
-dataSource_scheduledOperations_field_location = Location
-dataSource_scheduledOperations_field_operation = Operation
-dataSource_scheduledOperations_field_resource = Resource
-dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
-dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
-dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
-dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
-dataSource_schedules_field_resourceGroupId = Group ID
-dataSource_schedules_loadFailed = Failed to load metric schedules
-dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
-dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
-dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
-dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
-dataSource_traits_field_definitionID = Definition ID
-dataSource_traits_field_lastChanged = Last Changed
-dataSource_traits_field_primaryKey = Primary Key
-dataSource_traits_field_trait = Trait
-dataSource_traits_group_field_groupId = Group ID
-dataSource_users_delete = Deleted user [{0}]
-dataSource_users_deleteFailed = Failed to delete user [{0}]
-dataSource_users_field_department = Department
-dataSource_users_field_emailAddress = Email Address
-dataSource_users_field_factive = Login Enabled?
-dataSource_users_field_firstName = First Name
+dataSource_resourceErrors_clickStatusIcon = Klikněte na ikonku pro více detailů
+dataSource_resourceErrors_deleteFailure = Nepodařilo se smazat chyby zdroje
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.\nÚspěšně bylo smazáno [{0}] chybových hlášení zdroje.
+dataSource_resourceErrors_error_fetchFailure = Nepodařilo se nalézt chyby zdroje pro
zdroj w id [{0}].
+dataSource_resourceErrors_field_errorType = Typ chyby
+dataSource_resourceErrors_field_summary = Shrnutí
+dataSource_resourceErrors_field_timeOccured = Čas
+dataSource_resourceGroups_loadFailed = Nepodařilo se načíst skupiny zdrojů
+dataSource_resources_field_discoveryTime = Čas průzkumu
+dataSource_resources_field_importTime = Čas importu
+dataSource_resources_field_key = Klíč
+dataSource_resources_field_lastModifiedTime = Čas poslední modifikace
+dataSource_resources_field_lastModifier = Naposledy modifikoval
+dataSource_resources_field_location = Lokace
+dataSource_rpc_error_transformRequestFailure = Chyba v datovém zdroji (GWT) při
zpracování {0} požadavků.
+dataSource_rpc_error_unsupportedArrayFilterType = Chybí podpora pro předávání polí filtrů
typu {0}.
+dataSource_rpc_error_unsupportedEnumType = Prosím, přidejte příslušný kód pro výčet {0}
do třídy RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = ne
+dataSource_rpc_yes = ano
+dataSource_scheduledOperations_error_fetchFailure = Nepodařilo se načíst naplánované
operace.
+dataSource_scheduledOperations_field_location = Lokace
+dataSource_scheduledOperations_field_operation = Operace
+dataSource_scheduledOperations_field_resource = Zdroj
+dataSource_schedules_disableFailure_group = Nepodařilo se zakázat sběr [{0}] měření pro
skupinu zdrojů s ID [{1}]. Metriky: [{2}]
+dataSource_schedules_disableFailure_resource = Nepodařilo se zakázat sběr [{0}] měření
pro zdroj s ID [{1}]. Metriky: [{2}]
+dataSource_schedules_disableSuccessful_concise = Byl zakázán sběr [{0}] měření.
+dataSource_schedules_disableSuccessful_full_group = Byl zakázán sběr [{0}] měření pro
skupinu zdrojů s ID [{1}]. Měření: [{2}]
+dataSource_schedules_disableSuccessful_full_resource = Byl zakázán sběr [{0}] měření pro
zdroj s ID [{1}]. Měření: [{2}]
+dataSource_schedules_enableFailure_group = Nepodařilo se povolit sběr [{0}] měření pro
skupinu zdrojů s ID [{1}]. Měření: [{2}]
+dataSource_schedules_enableFailure_resource = Nepodařilo se povolit sběr [{0}] měření pro
zdroj s ID [{1}]. Měření: [{2}]
+dataSource_schedules_enableSuccessful_concise = Byl povolen sběr [{0}] měření
+dataSource_schedules_enableSuccessful_full_group = Byl povolen sběr [{0}] měření pro
sklupinu zdrojů s ID [{1}]. Měření: [{2}]
+dataSource_schedules_enableSuccessful_full_resource = Byl povolen sběr [{0}] měření pro
zdroj s ID [{1}]. Měření: [{2}]
+dataSource_schedules_field_resourceGroupId = ID skupiny
+dataSource_schedules_loadFailed = Nepodařilo se načíst rozvrhy metrik
+dataSource_schedules_loadFailedContext = Nepodařilo se načíst rozvrhy metrik pro kontext
[{0}]
+dataSource_schedules_loadFailedCriteria = Nepodařilo se načíst rozvrhy metrik pro
kritéria [{0}]
+dataSource_schedules_updateFailure_group = Nepodařilo se nastavit interval sběru [{0}]
metrik pro skupinu zdrojů s ID [{1}]. Metriky: [{2}]. Interval pro sběr měl být [{3}]
sekund.
+dataSource_schedules_updateFailure_resource = Nepodařilo se nastavit interval sběru [{0}]
metrik pro zdroj s ID [{1}]. Metriky: [{2}]. Interval pro sběr měl být [{3}] sekund.
+dataSource_schedules_updateSuccessful_concise = Nový interval [{0}] sekund byl nastaven
na [{1}] měřeních.
+dataSource_schedules_updateSuccessful_full_group = Nový interval [{0}] sekund byl
nastaven na [{1}] měřeních pro skupinu zdrojů s ID [{2}]. Změněná měření: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = Nový interval [{0}] sekund byl
nastaven na [{1}] měřeních pro zdroj s ID [{2}]. Změněná měření: [{3}]
+dataSource_traits_failFetch = Chyba při natahování vlastností pro kritéria [{0}].
+dataSource_traits_field_definitionID = ID definice
+dataSource_traits_field_lastChanged = Naposledy změněno
+dataSource_traits_field_primaryKey = Primární klíč
+dataSource_traits_field_trait = Vlastnost
+dataSource_traits_group_field_groupId = ID skupiny
+dataSource_users_delete = Smazaný uživatel [{0}]
+dataSource_users_deleteFailed = Nepodařilo se smazat uživatele [{0}]
+dataSource_users_field_department = Oddělení
+dataSource_users_field_emailAddress = Email
+dataSource_users_field_factive = Login povolen?
+dataSource_users_field_firstName = Křestní jméno
dataSource_users_field_id = ID
-dataSource_users_field_lastName = Last Name
+dataSource_users_field_lastName = Příjmění
dataSource_users_field_ldap = LDAP Login?
-dataSource_users_field_name = User Name
-dataSource_users_field_passwordVerify = Verify Password
-dataSource_users_field_phoneNumber = Phone Number
-dataSource_users_invalidEmailAddress = Invalid email address.
-dataSource_users_passwordsDoNotMatch = Passwords do not match.
-datasource_roles_field_ldapGroups = LDAP Groups
-datasource_roles_field_subjects = Subjects
-datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
-datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
-datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
-datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
-datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
-favorites = Favorites
-favorites_groups = Favorite Groups
-favorites_recentlyViewed = Recently Viewed
-favorites_resources = Favorite Resources
-filter_from_date = From
-filter_to_date = To
-group_tree_groupOfResourceType = Group of [{0}]
-group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
-util_ancestry_parentAncestry = Parent Ancestry for:
-util_errorHandler_nullException = exception was null
-util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
-util_rpcManager_activeRequests = {0} Active Requests
-util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
-util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
-util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
-util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
-util_userSession_logoutFail = Failed to logout.
-util_widgetsField_unlimited = Unlimited
-view_aboutBox_allRightsReserved = All Rights Reserved.
-view_aboutBox_buildNumber = Build Number:
-view_aboutBox_failedToLoad = Failed to load product information.
-view_aboutBox_homepage = Homepage
+dataSource_users_field_name = Uživatelské jméno
+dataSource_users_field_passwordVerify = Potvrďte heslo
+dataSource_users_field_phoneNumber = Telefonní číslo
+dataSource_users_invalidEmailAddress = Neplatná emailová adresa.
+dataSource_users_passwordsDoNotMatch = Heslo není stejné.
+datasource_roles_field_ldapGroups = LDAP skupiny
+datasource_roles_field_subjects = Subjekty
+datasource_templateSchedules_disabled = Zakázán sběr vybraných metrik [{0}].
+datasource_templateSchedules_disabled_detailed = Zakázán sběr vybraných metrik [{0}]
[{1}] defaultně pro ResourceType s id [{2}].
+datasource_templateSchedules_disabled_failed = Nezdařilo se zakázat sběr vybraných metrik
[{0}] [{1}] defaultně pro ResourceType s id [{2}].
+datasource_templateSchedules_enabled = Povolen sběr vybraných metrik [{0}].
+datasource_templateSchedules_enabled_detailed = Povolen sběr vybraných metrik [{0}].
[{1}] defaultně pro ResourceType s id [{2}].
+datasource_templateSchedules_enabled_failed = Nezdařilo se povolit sběr vybraných metrik
[{0}]. [{1}] defaultně pro ResourceType s id [{2}].
+datasource_templateSchedules_updated = Byl změněn interval sběru vybraných metrik [{0}].
+datasource_templateSchedules_updated_detail = Interval sběru metrik [{0}] [{1}] defaultně
pro ResourceType s id [{2}] byl nastaven na [{3}] sekund.
+datasource_templateSchedules_updated_failed = Nezdařilo se nastavit interval [{0}] sběru
pro metriky [{1}]. [{2}] defaultně pro ResourceType s id [{3}].
+favorites = Oblíbené
+favorites_groups = Oblíbené skupiny
+favorites_recentlyViewed = Naposledy zobrazené
+favorites_resources = Oblíbené zdroje
+filter_from_date = Od
+filter_to_date = Do
+group_tree_groupOfResourceType = Skupina: [{0}]
+group_tree_partialClusterTooltip = {0} z {1} členů skupiny má "{2}" zdroj
+util_ancestry_parentAncestry = Původ rodiče pro:
+util_errorHandler_nullException = výjimka byla null
+util_monitoringRequestCallback_error_checkServerStatusFailure = Nepodařilo se určit stav
přihlašování - zkontrolujte stav serveru.
+util_rpcManager_activeRequests = {0} aktivních žádostí
+util_userPerm_loadFailGlobal = Nepodařilo se načíst Vaše globální povolení - přístup
nepovolen.
+util_userPerm_loadFailGroup = Nepodařilo se načíst povolení pro zdroj s id [{0}] -
přístup nepovolen.
+util_userPerm_loadFailResource = Nepodařilo se načíst povolení pro skupinu zdrojů s id
[{0}] - přístup nepovolen.
+util_userSession_loadFailSubject = UserSessionManager: Nepodařilo se načíst instanci
třídy "Subject"
+util_userSession_logoutFail = Nepodařilo se odhlásit.
+util_widgetsField_unlimited = Neomezeně
+view_aboutBox_allRightsReserved = Všechna práva vyhrazena.
+view_aboutBox_buildNumber = Číslo buildu:
+view_aboutBox_failedToLoad = Nepodařilo se načíst informace o produktu.
+view_aboutBox_homepage = Hlavní stránka
view_aboutBox_jbossByRedHat = JBoss by Red Hat
-view_aboutBox_title = About {0}
-view_aboutBox_version = Version:
-view_adminConfig_agentPlugins = Agent Plugins
-view_adminConfig_alertDefTemplates = Alert Definition Templates
-view_adminConfig_downloads = Downloads
-view_adminConfig_driftDefTemplates = Drift Definition Templates
-view_adminConfig_metricTemplates = Metric Collection Templates
-view_adminConfig_serverPlugins = Server Plugins
-view_adminConfig_systemSettings = System Settings
-view_adminContent_contentSources = Content Sources
-view_adminRoles_assignedGroups = Assigned Resource Groups
-view_adminRoles_assignedSubjects = Assigned Subjects
-view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
-view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
-view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
-view_adminRoles_failRoles = Failed to fetch roles.
-view_adminRoles_globalPerms = Global Permissions
-view_adminRoles_ldapGroups = LDAP Groups
-view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
-view_adminRoles_noLdap = The LDAP security integration is not configured. To configure
LDAP, go to <a {0}>{1}</a>.
-view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
-view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
-view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
-view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
-view_adminRoles_permissions_globalPermissions = Global Permissions
+view_aboutBox_title = O aplikaci {0}
+view_aboutBox_version = Verze:
+view_adminConfig_agentPlugins = Zásuvné moduly agentů
+view_adminConfig_alertDefTemplates = Šablony pro definice výstrah
+view_adminConfig_downloads = Staženo
+view_adminConfig_driftDefTemplates = Šablony pro definice driftu
+view_adminConfig_metricTemplates = Šablony pro sběr metrik
+view_adminConfig_serverPlugins = Zásuvné moduly serveru
+view_adminConfig_systemSettings = System Settings\nSystémová nastavení
+view_adminContent_contentSources = Zdroje obsahů
+view_adminRoles_assignedGroups = Přiřazené skupiny zdrojů
+view_adminRoles_assignedSubjects = Přiřazené subjekty
+view_adminRoles_failLdap = Nepodařilo se určit je-li LDAP nastaven - předpokládám, že
LDAP není přítomen.
+view_adminRoles_failLdapGroups = Nepodařilo se získat informace o LDAP skupinách -
předpokládám, že LDAP není přítomen.
+view_adminRoles_failLdapGroupsRole = Nepodařilo se získat informace o LDAP skupinách pro
roli.
+view_adminRoles_failRoles = Nepodařilo se získat role.
+view_adminRoles_globalPerms = Globalní povolení
+view_adminRoles_ldapGroups = LDAP skupiny
+view_adminRoles_ldapGroupsReadOnly = data LDAP skupiny jsou jen pro čtení
+view_adminRoles_noLdap = Integrace LDAP není nakonfigurována. K nastavení řízení
bezpečnosti přes LDAP prosím navštivte <a {0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Automaticky odoznačeno
CONFIGURE_WRITE povolení, protože absence CONFIGURE_READ to implikuje...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Automaticky označeno
CONFIGURE_READ povolení, protože CONFIGURE_WRITE jej implikuje...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Automaticky označeny
neoznačené zdroje, protože MANAGE_INVENTORY implikuje povolení na všech zdrojích...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Automaticky označeny
neoznačená povolení, protože MANAGE_SECURITY implikuje povolení na všech práv...
+view_adminRoles_permissions_globalPermissions = Globální povolení
view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
-view_adminRoles_permissions_isAuthorized = Authorized?
-view_adminRoles_permissions_isRead = Read?
-view_adminRoles_permissions_isWrite = Write?
-view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
-view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
-view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles - implies all other permissions
-view_adminRoles_permissions_permDesc_manageSettings = can modify the {0} Server
configuration and perform any Server-related functionality
-view_adminRoles_permissions_permDesc_viewUsers = can view other users, with the exception
of their assigned roles
-view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
-view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
-view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
-view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
-view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
-view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions
and alert history
-view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and
available packages; view package installation history
-view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift definitions
and drift history
-view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
-view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
-view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration;
delete Resource configuration revision history items
-view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
-view_adminRoles_permissions_permWriteDesc_createChildResources = create new child
Resources (for child Resources of types that are creatable)
-view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources;
delete Resources (for Resources of types that are deletable)
-view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
-view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
-view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
-view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete drift
definitions; and manage drift instances
-view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
-view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
-view_adminRoles_permissions_perm_configure = Configure
-view_adminRoles_permissions_perm_control = Control
-view_adminRoles_permissions_perm_createChildResources = Create Child Resources
-view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
-view_adminRoles_permissions_perm_inventory = Inventory
-view_adminRoles_permissions_perm_manageAlerts = Manage Alerts
-view_adminRoles_permissions_perm_manageBundles = Manage Bundles
-view_adminRoles_permissions_perm_manageContent = Manage Content
-view_adminRoles_permissions_perm_manageDrift = Manage Drift
-view_adminRoles_permissions_perm_manageEvents = Manage Events
-view_adminRoles_permissions_perm_manageInventory = Manage Inventory
-view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
-view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
-view_adminRoles_permissions_perm_manageSecurity = Manage Security
-view_adminRoles_permissions_perm_manageSettings = Manage Settings
-view_adminRoles_permissions_perm_viewUsers = View Users
-view_adminRoles_permissions_read = Read:
-view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
-view_adminRoles_permissions_resourcePermissions = Resource Permissions
-view_adminRoles_permissions_write = Write:
-view_adminRoles_resourcePerms = Resource Permissions
-view_adminRoles_roleAdded = Role [{0}] added.
-view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
-view_adminRoles_roleDeleted = Role [{0}] deleted.
-view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
-view_adminRoles_roleUpdated = Role [{0}] updated.
-view_adminTemplates_definedBy = Defined By
-view_adminTemplates_disabledTemplates = Disabled Templates
-view_adminTemplates_editAlertTemplate = Edit Alert Template
-view_adminTemplates_editTemplates = Edit Templates
-view_adminTemplates_enabledTemplates = Enabled Templates
-view_adminTemplates_platformServices = Platform Services
-view_adminTemplates_platforms = Platforms
-view_adminTemplates_pluginTemplates = Plugin Templates
-view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
-view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
-view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
-view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
-view_adminTemplates_servers = Servers
-view_adminTemplates_userTemplates = User Templates
-view_adminTopology_affinityGroups = Affinity Groups
-view_adminTopology_agents = Agents
-view_adminTopology_partitionEvents = Partition Events
-view_adminTopology_remoteAgentInstall = Remote Agent Install
-view_adminTopology_servers = Servers
-view_adminUsersDetails_dataTypeName = user
-view_admin_administration = Administration
-view_admin_configuration = Configuration
-view_admin_content = Content
-view_admin_downloads_agentDownload = Agent Download
-view_admin_downloads_agent_buildNumber = Agent Build
-view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
-view_admin_downloads_agent_link_value = Download Agent {0} ({1})
-view_admin_downloads_agent_loadError = Cannot get agent version info
+view_adminRoles_permissions_isAuthorized = Autorizován?
+view_adminRoles_permissions_isRead = Čtení?
+view_adminRoles_permissions_isWrite = Zápis?
+view_adminRoles_permissions_permDesc_manageBundles = může vytvářet, měnit, mazat balíky
(zobrazovat může kdokoli)
+view_adminRoles_permissions_permDesc_manageInventory = má všechna práva zdroje: může
vytvářet, měnit, mazat skupiny, může importovat automaticky nebo manuálně nalezené zdroje
+view_adminRoles_permissions_permDesc_manageRepositories = může vytvářet, měnit, mazat
repozitáře jakýchkoli uživatelů (každý může vytvářet své repozitáře), může asociovat
zdroje obsahů s repozitáři
+view_adminRoles_permissions_permDesc_manageSecurity = může vytvářet, měnit, mazat
uživatele a role - implikuje všechna ostatní povolení
+view_adminRoles_permissions_permDesc_manageSettings = může modifikovat {0} serverovou
konfiguraci a provozovat jakékoli operace související se serverem
+view_adminRoles_permissions_permDesc_viewUsers = může zobrazovat ostatní uživatele s
výjímkou jejich přiřazených rolí
+view_adminRoles_permissions_permReadDesc_configure = zobrazí konfiguraci zdorje a
historii konfigurace zdroje
+view_adminRoles_permissions_permReadDesc_control = (VÝCHOZÍ) zobrazí dostupné operace a
historii spouštění operací
+view_adminRoles_permissions_permReadDesc_createChildResources = (VÝCHOZÍ) zobrazí
historii potomků zdroje
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (VÝCHOZÍ) zobrazí
historii mazání zdroje
+view_adminRoles_permissions_permReadDesc_inventory = (VÝCHOZÍ) zobrazí vlastnosti zdroje
(jméno, popis, verze, atd.), nastavení připojení a historii nastavení připojení
+view_adminRoles_permissions_permReadDesc_manageAlerts = (VÝCHOZÍ) zobrazí definice
výstrah a jejich historii
+view_adminRoles_permissions_permReadDesc_manageContent = (VÝCHOZÍ) zobrazí nainstalované
a dostupné balíky, historie
+view_adminRoles_permissions_permReadDesc_manageDrift = (VÝCHOZÍ) zobrazí definice driftů,
historie
+view_adminRoles_permissions_permReadDesc_manageEvents = (VÝCHOZÍ) zobrazí události
+view_adminRoles_permissions_permReadDesc_manageMeasurements = (VÝCHOZÍ) zobrazí sbíraná
data včetně rozvrhů sběrů dat
+view_adminRoles_permissions_permWriteDesc_configure = změní konfiguraci zdroje; smaže
historii změn konfigurace zdroje
+view_adminRoles_permissions_permWriteDesc_control = spouětění operací, mazání historie
spuštěných operací
+view_adminRoles_permissions_permWriteDesc_createChildResources = vytvářet nové potomky
zdroje (pokud to umožňuje typ zdroje)
+view_adminRoles_permissions_permWriteDesc_deleteChildResources = vyřadit zdroje z
inventáře, mazat zdroje (pokud to typ zdroje umožňuje)
+view_adminRoles_permissions_permWriteDesc_inventory = měnit jméno zdroje, verzi, popis a
nastavení připojení, historie
+view_adminRoles_permissions_permWriteDesc_manageAlerts = vytvořit, měnit a mazat definice
výstrah, historie
+view_adminRoles_permissions_permWriteDesc_manageContent = přihlásit se k odběru obsahu,
instalovat a odinstalovat balíky
+view_adminRoles_permissions_permWriteDesc_manageDrift = vytvořit, změnit a smazat
definici driftu
+view_adminRoles_permissions_permWriteDesc_manageEvents = mazat události
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = měnit rozvrhy smběru
metrik
+view_adminRoles_permissions_perm_configure = Konfigurovat
+view_adminRoles_permissions_perm_control = Ovládání
+view_adminRoles_permissions_perm_createChildResources = Vytvářet potomky zdrojů
+view_adminRoles_permissions_perm_deleteChildResources = Vytvářet potomky zdrojů
+view_adminRoles_permissions_perm_inventory = Inventarizovat
+view_adminRoles_permissions_perm_manageAlerts = Spravovat výstrahy
+view_adminRoles_permissions_perm_manageBundles = Spravovat balíky
+view_adminRoles_permissions_perm_manageContent = Spravovat obsah
+view_adminRoles_permissions_perm_manageDrift = Spravovat drift
+view_adminRoles_permissions_perm_manageEvents = Spravovat události
+view_adminRoles_permissions_perm_manageInventory = Spravovat inventář
+view_adminRoles_permissions_perm_manageMeasurements = Spravovat měření
+view_adminRoles_permissions_perm_manageRepositories = Spravovat repozitáře
+view_adminRoles_permissions_perm_manageSecurity = Spravovat bezpečnost
+view_adminRoles_permissions_perm_manageSettings = Spravovat nastavení
+view_adminRoles_permissions_perm_viewUsers = Zobratit uživatelé
+view_adminRoles_permissions_read = Číst:
+view_adminRoles_permissions_readAccessImplied = Přístup pro čtení pro {0} je výchozí a
nemůže být zakázán.
+view_adminRoles_permissions_resourcePermissions = Oprávnění zdroje
+view_adminRoles_permissions_write = Zápis:
+view_adminRoles_resourcePerms = Oprávnění zdroje
+view_adminRoles_roleAdded = Role [{0}] přidána.
+view_adminRoles_roleDeleteFailed = Nepodařilo se smazat roli [{0}].
+view_adminRoles_roleDeleted = Role [{0}] smazána.
+view_adminRoles_roleUpdateFailed = Nepodařilo se změnit roli [{0}].
+view_adminRoles_roleUpdated = Role [{0}] změněna.
+view_adminTemplates_definedBy = Definováno kým
+view_adminTemplates_disabledTemplates = Zneplatněné šablony
+view_adminTemplates_editAlertTemplate = Editovat šablonu výstrahy
+view_adminTemplates_editTemplates = Editovat šablony
+view_adminTemplates_enabledTemplates = Povolené šablony
+view_adminTemplates_platformServices = Služby platformy
+view_adminTemplates_platforms = Platformy
+view_adminTemplates_pluginTemplates = Šablony zásuvných modulů
+view_adminTemplates_prompt_disabledAlertTemplates = Počet šablon výstran, které jsou
vytvořeny, ale neplatné pro tento typ zdroje
+view_adminTemplates_prompt_disabledMetricTemplates = Počet šablon rozvrhů sběru, které
jsou vytvořeny, ale neplatné pro tento typ zdroje
+view_adminTemplates_prompt_enabledAlertTemplates = Počet šablon výstran, které jsou
povoleny pro tento typ zdroje
+view_adminTemplates_prompt_enabledMetricTemplates = Počet šablon rozvrhů sběru, které
jsou povoleny pro tento typ zdroje
+view_adminTemplates_servers = Servery
+view_adminTemplates_userTemplates = Uživatelské šablony
+view_adminTopology_affinityGroups = Afinitní skupiny
+view_adminTopology_agents = Agenti
+view_adminTopology_partitionEvents = Události rozdělení
+view_adminTopology_remoteAgentInstall = Instalace vzdáleného agenta
+view_adminTopology_servers = Servery
+view_adminUsersDetails_dataTypeName = uživatel
+view_admin_administration = Administrace
+view_admin_configuration = Konfigurace
+view_admin_content = Obsah
+view_admin_downloads_agentDownload = Stáhnout agenta
+view_admin_downloads_agent_buildNumber = Sestavení agenta
+view_admin_downloads_agent_help = ???<p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = Odkaz
+view_admin_downloads_agent_link_value = Stáhnout agenta {0} ({1})
+view_admin_downloads_agent_loadError = Nelze získat informace o verzi agenta
view_admin_downloads_agent_md5 = Agent MD5
-view_admin_downloads_agent_version = Agent Version
-view_admin_downloads_bundleDownload = Bundle Deployer Download
-view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of {0} bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
-view_admin_downloads_cliAlertScriptsDownload = CLI Alert Scripts Download
-view_admin_downloads_cliAlertScripts_help = CLI alert scripts are pre-canned scripts that
can be used for creating scripted alert notifications. The scripts will usually require
some tweaking before they can be used as a notification on a particular alert definition.
-view_admin_downloads_cliAlertScripts_loadError = Cannot get info on available CLI alert
scripts for download
-view_admin_downloads_cliAlertScripts_none = No CLI alert scripts are available for
download
-view_admin_downloads_cliDownload = Command Line Client Download
-view_admin_downloads_cli_buildNumber = CLI Build
-view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the {0} Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Link
-view_admin_downloads_cli_link_value = Download CLI {0} ({1})
-view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_agent_version = Verze agenta
+view_admin_downloads_bundleDownload = Stáhnutí nasazovacího balíku
+view_admin_downloads_bundle_link_label = Odkaz
+view_admin_downloads_bundle_link_value = Stáhnout nasazovače balíků {0}
+view_admin_downloads_bundle_loadError = Nelze získat informace nasazovače balíků
+view_admin_downloads_cliAlertScriptsDownload = Stáhnout CLI agent skripty
+view_admin_downloads_cliAlertScripts_help = CLI vystrahové skripty jsou předpřipravené
skripty, které můžou být použity pro vytváření upozornění na výstrahu. Tyto skripty
obvykle vyžadují úpravu před reálným použitím jako notifikace pro konkrétní definici
výstrahy.
+view_admin_downloads_cliAlertScripts_loadError = Nelze získat informace o dostupných CLI
výstrahových skriptech ke stažení
+view_admin_downloads_cliAlertScripts_none = Žádné CLI výstrahové skripty nejsou dostupné
pro stažení
+view_admin_downloads_cliDownload = Stáhnout klienta pro příkazovou řádku
+view_admin_downloads_cli_buildNumber = CLI číslo sestavení
+##view_admin_downloads_cli_help = ???<p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
+view_admin_downloads_cli_link_label = Odkaz
+view_admin_downloads_cli_link_value = Stáhnout CLI {0} ({1})
+view_admin_downloads_cli_loadError = Nelze získat informace o verzi CLI
view_admin_downloads_cli_md5 = CLI MD5
-view_admin_downloads_cli_version = CLI Version
-view_admin_downloads_connectorsDownload = Connectors Download
-view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
-view_admin_downloads_connectors_loadError = Cannot get connectors info
-view_admin_downloads_connectors_none = No connectors are available for download
-view_admin_landing = From this section, the {0} global settings can be administered. This
includes configuring security, setting up plugins, and managing {0} Servers and Agents.
-view_admin_measTemplates_updateExisting_title = Update Existing Schedules
-view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_downloads_cli_version = CLI verze
+view_admin_downloads_connectorsDownload = Stažení konektorů
+##view_admin_downloads_connectors_help = ???Connectors are software that is needed in
order for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Nelze získat informace o konektorech
+view_admin_downloads_connectors_none = Žádné konektory nejsou dostupné pro stažení
+##view_admin_landing = ???From this section, the {0} global settings can be administered.
This includes configuring security, setting up plugins, and managing {0} Servers and
Agents.
+view_admin_measTemplates_updateExisting_title = Změnit existující rozvrhy
+##view_admin_measTemplates_updateExisting_tooltip = ???Check this box to update the
collection schedules for the selected metrics on all existing resources of this type. If
this is not checked, the template schedules will only be applied to new resources of this
type that are added to inventory in the future.
view_admin_plugins_agent = Agent
-view_admin_plugins_agentDeleteConfirm = <b>Warning!</b><br/>\nThe
following agent plugins are about to be deleted:<br/>\n{0}<br/>\nAre you sure
you want to delete these?
-view_admin_plugins_agentDisableConfirm = <b>Warning!</b><br/>\nThe
following agent plugins are about to be disabled:<br/>\n{0}<br/>\nAre you sure
you want to disable these?
-view_admin_plugins_deletedAgentPlugins = Deleted agent plugins: {0}
-view_admin_plugins_deletedAgentPluginsFailure = Failed to delete agent plugins.
-view_admin_plugins_deployed = Deployed?
-view_admin_plugins_disabledAgentPlugins = Disabled agent plugins: {0}
-view_admin_plugins_disabledAgentPluginsFailure = Failed to disable agent plugins.
-view_admin_plugins_disabledServerPlugins = Disabled server plugins: {0}
-view_admin_plugins_disabledServerPluginsFailure = Failed to disable server plugins.
-view_admin_plugins_enabledAgentPlugins = Enabled agent plugins: {0}
-view_admin_plugins_enabledAgentPluginsFailure = Failed to enable agent plugins.
-view_admin_plugins_enabledServerPlugins = Enabled server plugins: {0}
-view_admin_plugins_enabledServerPluginsFailure = Failed to enable server plugins.
-view_admin_plugins_hideDeleted = Hide Deleted
-view_admin_plugins_hideUndeployed = Hide Undeployed
-view_admin_plugins_loadFailure = Failed to load plugin data
-view_admin_plugins_purgedAgentPlugins = Preparing to purge agent plugins {0}. This may
take a few minutes since all type definitions from the plugins must first be purged from
the system. The plugins will still be visible on this page until they have been purged.
Please note that you must not re-install the plugin while the purge is running, otherwise
failures will occur. Therefore, please wait before attempting to re-install the plugin
into the system until this purge is complete.
-view_admin_plugins_purgedAgentPluginsFailure = Failed to purge agent plugins.
-view_admin_plugins_purgedServerPlugins = Purged server plugins: {0}.
-view_admin_plugins_purgedServerPluginsFailure = Failed to purge server plugins.
-view_admin_plugins_restartMasterPC = Restart Master Plugin Container
-view_admin_plugins_restartMasterPCComplete = Master plugin container has been restarted.
-view_admin_plugins_restartMasterPCFailure = Failed to restart the master plugin
container
-view_admin_plugins_restartMasterPCStarted = Restarting the master plugin container...
-view_admin_plugins_scan = Scan For Updates
-view_admin_plugins_scanComplete = Finished scanning for updated plugins
-view_admin_plugins_scanFailure = Failed to scan for updated plugins.
+view_admin_plugins_agentDeleteConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do agenta budou
smazány:<br/>\n{0}<br/>\nJste si jisti, že je chcete smazat?
+view_admin_plugins_agentDisableConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do agenta budou
zneplatněny:<br/>\n{0}<br/>\nJste si jisti, že je chcete zneplatnit?
+view_admin_plugins_deletedAgentPlugins = Smazány zásuvné moduly agenta: {0}
+view_admin_plugins_deletedAgentPluginsFailure = Nepodažilo se smazat zásuvné moduly
agenta.
+view_admin_plugins_deployed = Nasazeno?
+view_admin_plugins_disabledAgentPlugins = Zneplatněné zásuvné moduly agenta: {0}
+view_admin_plugins_disabledAgentPluginsFailure = Nepodažilo se zneplatnit zásuvné moduly
agenta.
+view_admin_plugins_disabledServerPlugins = Zneplatněné zásuvné moduly serveru: {0}
+view_admin_plugins_disabledServerPluginsFailure = Nepodažilo se zneplatnit zásuvné moduly
serveru.
+view_admin_plugins_enabledAgentPlugins = Povolené zásuvné moduly agenta: {0}
+view_admin_plugins_enabledAgentPluginsFailure = Nepodažilo se povolit zásuvné moduly
agenta.
+view_admin_plugins_enabledServerPlugins = Povolené zásuvné moduly serveru: {0}
+view_admin_plugins_enabledServerPluginsFailure = Nepodažilo se povolit zásuvné moduly
serveru.
+view_admin_plugins_hideDeleted = Skrýt smazané
+view_admin_plugins_hideUndeployed = Skrýt nenasazené
+view_admin_plugins_loadFailure = Nepodařilo se načíst data zásuvných modulů
+##view_admin_plugins_purgedAgentPlugins = ???Preparing to purge agent plugins {0}. This
may take a few minutes since all type definitions from the plugins must first be purged
from the system. The plugins will still be visible on this page until they have been
purged. Please note that you must not re-install the plugin while the purge is running,
otherwise failures will occur. Therefore, please wait before attempting to re-install the
plugin into the system until this purge is complete.
+view_admin_plugins_purgedAgentPluginsFailure = Nezdařilo se smazat zásuvné moduly
agenta.
+view_admin_plugins_purgedServerPlugins = Smazané zásuvné moduly serveru: {0}.
+view_admin_plugins_purgedServerPluginsFailure = Nezdařilo se smazat zásuvné moduly
serveru.
+view_admin_plugins_restartMasterPC = Restartovat master konteiner zásuvných modulů
+view_admin_plugins_restartMasterPCComplete = Master konteiner zásuvných modulů byl
restartován.
+view_admin_plugins_restartMasterPCFailure = Nezdařilo se restartovat master konteiner
zásuvných modulů
+view_admin_plugins_restartMasterPCStarted = Restartuji master konteiner zásuvných
modulů...
+view_admin_plugins_scan = Zahájit sken aktualizací
+view_admin_plugins_scanComplete = Sken aktualizací dokončen
+view_admin_plugins_scanFailure = Sken aktualizací zhavaroval.
view_admin_plugins_server = Server
-view_admin_plugins_serverConfig = Plugin Configuration
-view_admin_plugins_serverConfig_badSettings = Please enter valid settings
-view_admin_plugins_serverConfig_saveFailed = Failed to save the settings
-view_admin_plugins_serverConfig_settingsSaved = The settings have been saved.
-view_admin_plugins_serverControls = Controls
-view_admin_plugins_serverControls_badParams = Please enter valid parameters
-view_admin_plugins_serverControls_clickForError = Click for the error message
-view_admin_plugins_serverControls_invokeFailure = Failed to invoke the control
-view_admin_plugins_serverControls_name = Control
-view_admin_plugins_serverControls_parameters = Parameters
-view_admin_plugins_serverControls_results = Results
-view_admin_plugins_serverDisableConfirm = <b>Warning!</b><br/>\nThe
following server plugins are about to be disabled:<br/>\n{0}<br/>\nAre you
sure you want to disable these?
-view_admin_plugins_serverScheduleJobs = Scheduled Jobs
-view_admin_plugins_serverUndeployConfirm = <b>Warning!</b><br/>\nThe
following server plugins are about to be undeployed:<br/>\n{0}<br/>\nAre you
sure you want to undeploy these?
-view_admin_plugins_showDeleted = Show Deleted
-view_admin_plugins_showUndeployed = Show Undeployed
-view_admin_plugins_undeploy = Undeploy
-view_admin_plugins_undeployedServerPlugins = Undeployed server plugins: {0}
-view_admin_plugins_undeployedServerPluginsFailure = Failed to undeploy server plugins.
-view_admin_plugins_upload = Upload Plugin
-view_admin_security = Security
-view_admin_systemSettings_ActiveDriftServerPlugin_desc = The drift server plugin that
manages the persistence of drift-related entities and content.
-view_admin_systemSettings_ActiveDriftServerPlugin_name = Active Drift Server Plugin
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
-view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
-view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
-view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
-view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
-view_admin_systemSettings_BaseURL_name = GUI Console URL
-view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_plugins_serverConfig = Konfigurace zásuvných modulů
+view_admin_plugins_serverConfig_badSettings = Prosím, vložte platná nastavení
+view_admin_plugins_serverConfig_saveFailed = Nepodařilo se uložit nastavení
+view_admin_plugins_serverConfig_settingsSaved = Nastavení bylo uloženo.
+view_admin_plugins_serverControls = Ovládání
+view_admin_plugins_serverControls_badParams = Prosím, vložte platné parametry
+view_admin_plugins_serverControls_clickForError = Klikněte pro zobrazení chybové zprávy
+view_admin_plugins_serverControls_invokeFailure = Nepodařilo se spustit kontrolu
+##view_admin_plugins_serverControls_name = Control
+view_admin_plugins_serverControls_parameters = Parametry
+view_admin_plugins_serverControls_results = Výsledky
+view_admin_plugins_serverDisableConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do serveru budou
zneplatněny:<br/>\n{0}<br/>\nJste si jisti, že je chcete zneplatnit?
+view_admin_plugins_serverScheduleJobs = Naplánované úkoly
+view_admin_plugins_serverUndeployConfirm =
<b>Varování!</b><br/>\nNásledující zásuvné moduly do serveru budou
sesazeny (undeployed):<br/>\n{0}<br/>\nJste si jisti, že je chcete sesadit?
+view_admin_plugins_showDeleted = Zobrazit smazané
+view_admin_plugins_showUndeployed = Zobrazit sesazené (undeployed)
+view_admin_plugins_undeploy = Sesadit (undeploy)
+view_admin_plugins_undeployedServerPlugins = Sesazené zásuvné moduly serveru: {0}
+view_admin_plugins_undeployedServerPluginsFailure = Nepodařilo se sesadit zásuvné moduly
serveru.
+view_admin_plugins_upload = Nahrát zásuvný modul
+view_admin_security = Bezpečnost
+view_admin_systemSettings_ActiveDriftServerPlugin_desc = Serverový zásusvný modul pro
detekci driftu starající se také o persistenci entit souvisejících s drift problematikou.
+view_admin_systemSettings_ActiveDriftServerPlugin_name = Zapne zásuvný modul serveru pro
detekci driftu
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = Pokud uběhne tato doba aniž by
dal o sobě agent vědět, je považován jako nedostupný (DOWN). Údaj je v minutách.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent max doba neodpovídání\n
+view_admin_systemSettings_AlertPurge_desc = Jak staré musí být výstrahy v historii aby se
vymazaly z databáze. Údaj je ve dnech.
+view_admin_systemSettings_AlertPurge_name = Smazat výstrahy starší než
+view_admin_systemSettings_AvailabilityPurge_desc = Jak staré musí být položky o
dostupnosti v historii aby se vymazaly z databáze. Údaj je ve dnech.
+view_admin_systemSettings_AvailabilityPurge_name = Smazat údaje o dostupnosti starší než
+view_admin_systemSettings_BaseURL_desc = URL ke GUI serveru. Používá se hlavně u
emailových upozornění výstrah.
+view_admin_systemSettings_BaseURL_name = GUI Konzole URL
+view_admin_systemSettings_BaselineDataSet_desc = Počet dnů potřebný k určení tzv.
"baseline"
view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
-view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days. Maximum value is 'Baseline Dataset'.
-view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
-view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
-view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
-view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
-view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
-view_admin_systemSettings_DriftFilePurge_desc = How old unused and orphaned drift files
must be before being purged from backend storage. This is specified in days.
-view_admin_systemSettings_DriftFilePurge_name = Delete Unused Drift Files Older Than
-view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
-view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
-view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
-view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
-view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
-view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_BaselineFrequency_desc = Frekvence s jakou je automatiky
počítána "baseline". Pokud je to 0, auto. výpočet je zakázán. Údaj je veden ve
dnech a maximální hodnota je rovna Baseline Dataset.
+view_admin_systemSettings_BaselineFrequency_name = Frekvence počítání baseline
+view_admin_systemSettings_DataMaintenance_desc = Jak často je prováděna údržba databáze
(např. mazání tabulek v db Postgres). V hodinách.
+view_admin_systemSettings_DataMaintenance_name = Periodicita údržby databáze
+view_admin_systemSettings_DataReindex_desc = Pokud je povoleno, určité tabulky v db budou
periodicky reindexovány.
+view_admin_systemSettings_DataReindex_name = Reindexovat tabulky v noci
+view_admin_systemSettings_DriftFilePurge_desc = Jak dlouho nepoužitý musí být drift
soubor, aby se vymazaly z backend uložiště. Údaj je ve dnech.
+view_admin_systemSettings_DriftFilePurge_name = Smazat nepoužité drift soubory starší
než
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Určuje zda server dovolí agentům
auto aktualizace. Pokud tato volba není povolena, nebude možno stahovat distribuci agenta
ze serveru.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Povolit auto aktualizaci agenta
+view_admin_systemSettings_EnableDebugMode_desc = Pokud je povoleno, server běží v ladícím
módu.
+view_admin_systemSettings_EnableDebugMode_name = Povolit ladící mód
+view_admin_systemSettings_EnableExperimentalFeatures_desc = Pokud je povoleno,
experimentální vlastnosti aktuální verze produktu budou dostupné uživateli.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Povolit experimentální
vlastnosti
view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
-view_admin_systemSettings_EventPurge_name = Delete Events Older Than
-view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
-view_admin_systemSettings_JAASProvider_name = Enable LDAP
-view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBaseDN_name = Search Base
-view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBindDN_name = Username
-view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
-view_admin_systemSettings_LDAPBindPW_name = Password
-view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
-view_admin_systemSettings_LDAPFilter_name = Search Filter
-view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
-view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
-view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
-view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_EventPurge_name = Smazat události starší než
+view_admin_systemSettings_JAASProvider_desc = Měl by být LDAP použit k určení uživatelovi
identity?
+view_admin_systemSettings_JAASProvider_name = Povolit LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = Báze adresářového stromu určeného ke hledání
uživatelů a jejich hesel při autentizaci, např. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBaseDN_name = Báze pro hledání
+view_admin_systemSettings_LDAPBindDN_desc = Uživatelské jméno, pod kterým se připojovat k
LDAP serveru. Typicky se jedná o plně určené jméno (DN) správce např.
cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = Uživatelské jméno
+view_admin_systemSettings_LDAPBindPW_desc = Přihlašovací údaje uživatele, který poté
dotazuje LDAP server.
+view_admin_systemSettings_LDAPBindPW_name = Heslo
+view_admin_systemSettings_LDAPFilter_desc = Jakékoli přídavné filry, které budou
aplikovány na výsledky hledání LDAPu. Může být použito např. s tzv. LDAP vlastností pro
restrikci výsledků např. RHQUser=true
+view_admin_systemSettings_LDAPFilter_name = Filtr hledání
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP filtr, který musí vrátit všechny
skupiny dostupné k autorizaci. Používá se pro LDAP autorizaci vůči skupině.
+view_admin_systemSettings_LDAPGroupFilter_name = Skupinový filtr hledání
+view_admin_systemSettings_LDAPGroupMember_desc = Používá se pro LDAP autorizaci vůči
skupině. Tento filtr pak bude použit v konjunkci se skupinovým filtrem hledání.
+view_admin_systemSettings_LDAPGroupMember_name = Filtr člena skupiny
view_admin_systemSettings_LDAPGroupUsePosixGroup_desc = Defines whether to use PosixGroup
symantics for group membership check. With PosixGroups the Group Member Filter is usually
set to 'memberUid' and the Group Filter to 'objectclass=posixGroup'.
view_admin_systemSettings_LDAPGroupUsePosixGroup_name = Is PosixGroup
view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
@@ -1707,322 +1708,322 @@ view_remoteAgentInstall_connInfo = Connection Information
view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
-view_remoteAgentInstall_error_4 = Failed to install agent
-view_remoteAgentInstall_error_5 = Failed to start agent
-view_remoteAgentInstall_error_6 = Failed to stop agent
-view_remoteAgentInstall_installAgent = Install Agent
-view_remoteAgentInstall_installInfo = Agent Installation Information
-view_remoteAgentInstall_installPath = Agent Install Path
-view_remoteAgentInstall_owner = Owner
-view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
-view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
-view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
-view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
-view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
-view_remoteAgentInstall_result = Result
-view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_error_4 = Nepodařilo se nainstalovat agenta
+view_remoteAgentInstall_error_5 = Nepodařilo se spustit agenta
+view_remoteAgentInstall_error_6 = Nepodařilo se zastavit agenta
+view_remoteAgentInstall_installAgent = Instalovat agenta
+view_remoteAgentInstall_installInfo = Informace o instalaci agenta
+view_remoteAgentInstall_installPath = Instalační cesta k agentovi
+view_remoteAgentInstall_owner = Vlastník
+view_remoteAgentInstall_promptHost = Hostitel, kde je, nebo kam bude, agent nainstalován
+##view_remoteAgentInstall_promptInstallPath = ???Where the agent is or will be installed.
If you aren''t sure where an agent is installed, enter a parent directory and
click the ''Find Agent'' button to scan that directory and below. If you
enter an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptPassword = Přihlašovací údaje použité pro autentizaci
uživatele přes SSH
+view_remoteAgentInstall_promptPort = Port na němž naslouchá SSH. Pokud není specifikováno
použije se 22
+view_remoteAgentInstall_promptUser = Jméno uživatele jehož přihlašovací údaje jsou
předány hostiteli přes SSH
+view_remoteAgentInstall_result = Výsledek
+view_remoteAgentInstall_resultCode = VýslednýKód
view_remoteAgentInstall_startAgent = Start Agent
-view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
-view_remoteAgentInstall_step = Step
+view_remoteAgentInstall_startAgentResults = Agent start výsledky: [{0}]
+view_remoteAgentInstall_step = Krok
view_remoteAgentInstall_stopAgent = Stop Agent
-view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
-view_remoteAgentInstall_success = Agent installation complete
-view_remoteAgentInstall_updateStatus = Update Status
-view_reportsTop_description = This section provides access to global reports.
-view_reportsTop_title = Reports
-view_reports_alertDefinitions = Alert Definitions
-view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
-view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
-view_reports_driftCompliance = Drift Compliance
-view_reports_inventorySummary_failFetch = Failed to get inventory summary
-view_reports_platforms = Platform Utilization
-view_reports_subsystems = Subsystems
-view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
-view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
-view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
-view_resource_inventory_activity_changed_by = Changed by
-view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
-view_resource_inventory_activity_no_recent_alerts = No recent alerts
-view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
-view_resource_inventory_activity_no_recent_config_history = No configuration change
history
-view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
-view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
-view_resource_inventory_activity_no_recent_oob = No OOB conditions found
-view_resource_inventory_activity_no_recent_operations = No recent operation history
-view_resource_inventory_activity_no_recent_pkg_history = No recent package history
-view_resource_inventory_childhistory_createdChild = Created Child
-view_resource_inventory_childhistory_deletedChild = Deleted Child
-view_resource_inventory_childhistory_filterTitle = Past N Days
-view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
-view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
-view_resource_monitor_availability_availability = Availability
-view_resource_monitor_availability_availability_tooltip = Percentage of time the resource
has been UP compared to the times it was down and disabled
-view_resource_monitor_availability_currentAsOf = This data is current as of {0}
-view_resource_monitor_availability_currentStatus = Current Status
-view_resource_monitor_availability_currentStatus_value = This resource has been {0} since
{1}
-view_resource_monitor_availability_disabled = Disabled
-view_resource_monitor_availability_disabledTime = Disabled Time
-view_resource_monitor_availability_disabledTime_tooltip = The cumulative amount of time
the resource has been DISABLED
-view_resource_monitor_availability_disabled_tooltip = Percentage of time the resource has
been DISABLED compared to the times it was up and down
-view_resource_monitor_availability_down = Down
-view_resource_monitor_availability_down_tooltip = Percentage of time the resource has
been DOWN compared to the times it was up and disabled
+view_remoteAgentInstall_stopAgentResults = Agent stop výsledky: [{0}]\n
+view_remoteAgentInstall_success = Instalace agenta proběhla úspěšně
+view_remoteAgentInstall_updateStatus = Obnovit stav
+view_reportsTop_description = Tato sekce poskytuje přístup do všech reportů.
+view_reportsTop_title = Reporty
+view_reports_alertDefinitions = Definice výstrah
+view_reports_alertDefinitions_parentHover = Klikněte pro přechod na definici výstrahy
rodiče
+view_reports_alertDefinitions_resTypeLoadError = Nepodařilo se načíst šablonu typu zdroje
- nelze zobrazit šablonu pro výstrahu.
+view_reports_driftCompliance = Vyhovění driftu
+view_reports_inventorySummary_failFetch = Nepodařilo se načíst shrnutí inventáře
+view_reports_platforms = Využití platformy
+view_reports_subsystems = Subsystémy
+view_resourceResourceGroupList_error_fetchFailure = Nepodařilo se načíst skupiny zdrojů.
+view_resourceResourceGroupList_error_updateFailure = Nepodařilo se změnit přiřazené
skupiny zdrojů.
+view_resourceResourceGroupList_message_updateSuccess = Členství ve skupině změneno pro
[{0}].
+view_resource_inventory_activity_changed_by = Změnil
+view_resource_inventory_activity_criteria_no_recent_events = Žádné události neodpovídají
zobrazovacím kritériím.
+view_resource_inventory_activity_no_recent_alerts = Žádné nedávné výstrahy
+view_resource_inventory_activity_no_recent_bundle_deploy = Žádná nedávná nasazení balíků
+view_resource_inventory_activity_no_recent_config_history = Žádná nedávná historie pro
konfigurace
+view_resource_inventory_activity_no_recent_events = Žádné události za posledních 24
hodin
+view_resource_inventory_activity_no_recent_metrics = Zdroj nemá žádné nedávné metriky
+view_resource_inventory_activity_no_recent_oob = Nebyly nalezeny žádné OOB podmínky
+view_resource_inventory_activity_no_recent_operations = Žádná nedávná historie pro
operace
+view_resource_inventory_activity_no_recent_pkg_history = Žádná nedávná historie pro
balíčky
+view_resource_inventory_childhistory_createdChild = Vytvoření potomci
+view_resource_inventory_childhistory_deletedChild = Smazaní potomci
+view_resource_inventory_childhistory_filterTitle = Posledních N dnů
+view_resource_inventory_childhistory_status_invalidArtifact = Neplatný artefakt
+view_resource_inventory_childhistory_status_invalidConfig = Neplatná konfigurace
+view_resource_monitor_availability_availability = Dostupnost
+view_resource_monitor_availability_availability_tooltip = Procentuální podíl udávající
jak dlouho zdroj běží v porovnání s celkovým časem.
+view_resource_monitor_availability_currentAsOf = Data jsou stará {0}
+view_resource_monitor_availability_currentStatus = Aktuální stav
+view_resource_monitor_availability_currentStatus_value = Zdroj je {0} od {1}
+view_resource_monitor_availability_disabled = Zneplatněný
+view_resource_monitor_availability_disabledTime = Doba zneplatnění
+view_resource_monitor_availability_disabledTime_tooltip = Kumulativní veličina udávající
jak dlouho je zdroj zneplatněn (stav DISABLED)
+view_resource_monitor_availability_disabled_tooltip = Procentuální podíl udávající jak
dlouho je zdroj zneplatněn v porovnání s celkovým časem.
+view_resource_monitor_availability_down = Neběží
+view_resource_monitor_availability_down_tooltip = Procentuální podíl udávající jak dlouho
zdroj neběží v porovnání s celkovým časem.
view_resource_monitor_availability_downtime = Downtime
-view_resource_monitor_availability_downtime_tooltip = The cumulative amount of time the
resource has been DOWN
-view_resource_monitor_availability_loadFailed = Failed to load availability history
+view_resource_monitor_availability_downtime_tooltip = Kumulativní veličina udávající jak
dlouho zdroj neběží (stav DOWN)
+view_resource_monitor_availability_loadFailed = Nepodařilo se načíst historii
dostupnosti
view_resource_monitor_availability_mtbf = MTBF
-view_resource_monitor_availability_mtbf_tooltip = Mean Time Before Failure - in short,
this indicates the average time spent in the UP state prior to going DOWN
+view_resource_monitor_availability_mtbf_tooltip = Mean Time Before Failure - průměrná
doba strávené ve stavu UP předtím, než se přešlo do stavu DOWN
view_resource_monitor_availability_mttr = MTTR
-view_resource_monitor_availability_mttr_tooltip = Mean Time To Recovery - in short, this
indicates the average time spent in the DOWN state prior to going UP again
-view_resource_monitor_availability_numDisabled = Number of Times Disabled
-view_resource_monitor_availability_numDisabled_tooltip = The total number of times this
resource has entered the DISABLED state
-view_resource_monitor_availability_numFailures = Number of Failures
-view_resource_monitor_availability_numFailures_tooltip = The total number of times this
resource has entered the DOWN state
-view_resource_monitor_availability_summaryError = Failed to load resource availability
summary
-view_resource_monitor_availability_unknown = This resource was in an unknown state for
{0}
+view_resource_monitor_availability_mttr_tooltip = Mean Time To Recovery - průměrná doba
strávené ve stavu DOWN předtím, než se přešlo do stavu UP
+view_resource_monitor_availability_numDisabled = Počet zneplatnění
+view_resource_monitor_availability_numDisabled_tooltip = Celkové množství kolikrát tento
zdroj vstoupil do stavu DISABLED (zneplatněný)
+view_resource_monitor_availability_numFailures = Počet selhání
+view_resource_monitor_availability_numFailures_tooltip = Celkové množství kolikrát tento
zdroj vstoupil do stavu DOWN (spadl)
+view_resource_monitor_availability_summaryError = Nelze načíst shrnutí o dostupnosti
zdroje
+view_resource_monitor_availability_unknown = Tento zdroj byl v neznámém stavu {0}
view_resource_monitor_availability_uptime = Uptime
-view_resource_monitor_availability_uptime_tooltip = The cumulative amount of time the
resource has been UP
-view_resource_monitor_calltime_average = Average
-view_resource_monitor_calltime_count = Count
-view_resource_monitor_calltime_destination = Call Destination
-view_resource_monitor_calltime_editFailed = Call time data can not be edited
-view_resource_monitor_calltime_loadFailed = Could not load call time data
-view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_availability_uptime_tooltip = Kumulativní veličina udávající jak
dlouho zdroj běží (stav UP)
+view_resource_monitor_calltime_average = Průměr
+view_resource_monitor_calltime_count = Počet
+view_resource_monitor_calltime_destination = Cíl volání
+view_resource_monitor_calltime_editFailed = Doby volání nelze editovat
+view_resource_monitor_calltime_loadFailed = Nelze načíst doby volání
+view_resource_monitor_calltime_lookupFailed = Nelze načíst zdroj pro dobu volání
view_resource_monitor_calltime_maximum = Maximum
view_resource_monitor_calltime_minimum = Minimum
-view_resource_monitor_calltime_title = Call Time Data
-view_resource_monitor_detailed_graph_label = Detailed Graph
-view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
-view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
-view_resource_monitor_graphs_loadFailed = Failed to load graph data
-view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
-view_resource_monitor_graphs_noneAvailable = No graphs available
-view_resource_monitor_schedules_title = Resource Metric Collection Schedules
-view_resource_monitor_table_avg = Average
-view_resource_monitor_table_last = Last
+view_resource_monitor_calltime_title = Data dob volání\n
+view_resource_monitor_detailed_graph_label = Detailní graf
+view_resource_monitor_graph_instructions = Najeďte myší na bod s daty v grafu
+view_resource_monitor_graph_live_tooltip = Klikněte pro aktuální graf s aktuálními
hodnotami
+view_resource_monitor_graphs_loadFailed = Nepodařilo se nahrát data pro graf
+view_resource_monitor_graphs_lookupFailed = Nepodařilo se nalézt zdroj pro graf
+view_resource_monitor_graphs_noneAvailable = Žádné grafy nejsou dostupné
+view_resource_monitor_schedules_title = Rozvrhy sběru metrik pro zdroj
+view_resource_monitor_table_avg = Průměr
+view_resource_monitor_table_last = Poslední
view_resource_monitor_table_max = Maximum
view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_cleanup = After addressing the issue, you will need
to delete the message below to clear the 'managed component error' icon from the
previous screen.
-view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
-view_resource_title_tagUpdateFailed = Failed to update resource tags
-view_searchBar_defaultPattern = name your pattern
-view_searchBar_instructional_failSuggest = Failed to generate suggestions, see server log
for possible errors
-view_searchBar_instructional_noSuggest = No matches, enter a different pattern
-view_searchBar_instructional_refresh = Failed to retrieve saved searches, please refresh
page
-view_searchBar_savedSearch_delete = Successfully deleted saved search [{0}]
-view_searchBar_savedSearch_failDelete = Failed to delete saved search with name [{0}]
-view_searchBar_savedSearch_failFind = Failed to find saved search with name [{0}]
-view_searchBar_savedSearch_failRename = Failed to rename saved search with name [{0}]
-view_searchBar_savedSearch_failSave = Failed to create saved search with name [{0}]
-view_searchBar_savedSearch_rename = Successfully renamed saved search to [{0}]
-view_searchBar_savedSearch_save = Successfully created saved search [{0}]
-view_searchGUI_loginStatus = Unable to determine login status, check server status
-view_selector_assigned = Assigned {0}
-view_selector_available = Available {0}
-view_subTab_error_disabled = Cannot select disabled subTab [{0}].
-view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
-view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
-view_summaryOverviewForm_field_description = Description
-view_summaryOverviewForm_field_location = Location
-view_summaryOverviewForm_field_name = Name
-view_summaryOverviewForm_field_type = Type
-view_summaryOverviewForm_field_version = Version
-view_summaryOverviewForm_header_summary = Summary
-view_summaryOverviewForm_label_plugin = Plugin:
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
-view_summaryOverview_header_detectedErrors = Detected Errors
-view_summaryOverview_title_errorDetailsWindow = Error Details
-view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
-view_tableSection_backButton = Back to List
-view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
-view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
-view_table_drawFail = Failed to draw Table [{0}].
-view_table_matchingRows = Matching Rows: {0} (selected: {1})
-view_table_totalRows = Total Rows: {0} (selected: {1})
-view_table_totalRowsUnknown = Total Rows: ?
-view_tabs_common_activity = Activity
+view_resource_title_component_errors_cleanup = After addressing the issue, you will need
to delete the message below to clear the 'managed component error' icon from the
previous screen.???
+view_resource_title_component_errors_tooltip = Zobrazí chyby řízených komponent (managed
component). Klikněte pro detaily.
+view_resource_title_tagUpdateFailed = Nepodařilo se změnit tagy zdroje
+view_searchBar_defaultPattern = pojmenujte svůj vzor
+view_searchBar_instructional_failSuggest = Nepodařilo se vygenerovat návrhy, podívejte se
do logu serveru kvůli možným chybám.
+view_searchBar_instructional_noSuggest = Nic nenalezeno, vložte jiný vzor
+view_searchBar_instructional_refresh = Nepodařilo se získat "uložená hledání",
prosím obnovte si stránku.
+view_searchBar_savedSearch_delete = Úspěšně smazáno "uložené hledání" [{0}]\n
+view_searchBar_savedSearch_failDelete = Nepodařilo se smazat "uložené hledání"
se jménem [{0}]
+view_searchBar_savedSearch_failFind = Nepodařilo se nalézt "uložené hledání" se
jménem [{0}]
+view_searchBar_savedSearch_failRename = Nepodařilo se přejmenovat "uložené
hledání" se jménem [{0}]
+view_searchBar_savedSearch_failSave = Nepodařilo se vytvořit "uložené hledání"
se jménem [{0}]
+view_searchBar_savedSearch_rename = Úspěšně přejmenováno "uložené hledání" na
[{0}]
+view_searchBar_savedSearch_save = Úspěšně vytvořeno "uložené hledání" [{0}]
+view_searchGUI_loginStatus = Nelze určit stav přihlašování, zkontrolujte stav serveru
+view_selector_assigned = Přidělené {0}
+view_selector_available = Dostupné {0}
+view_subTab_error_disabled = Nelze vybrat zneplatněnou podzáložku [{0}].
+view_summaryDashboard_resetConfirm = Obnovit na standardní dashboard (přepíše lokální
nastavení)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Nepodařilo se změnit popis
zdroje s id {0} z [{1}] na [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Nepodařilo se změnit lokaci zdroje
s id {0} z [{1}] na [{2}].
+view_summaryOverviewForm_error_nameChangeFailure = Nepodařilo se změnit jméno zdroje s id
{0} z [{1}] na [{2}].
+view_summaryOverviewForm_error_traitsLoadFailure = Nepodařilo se načíst vlastnosti pro
{0}.
+view_summaryOverviewForm_field_description = Popis
+view_summaryOverviewForm_field_location = Lokace
+view_summaryOverviewForm_field_name = Jméno
+view_summaryOverviewForm_field_type = Typ
+view_summaryOverviewForm_field_version = Verze
+view_summaryOverviewForm_header_summary = Shrnutí
+view_summaryOverviewForm_label_plugin = Zásuvné moduly:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Popis zdroje s id {0} bylo
změněno z [{1}] na [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Lokace zdroje s id {0} bylo
změněno z [{1}] na [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Jméno zdroje s id {0} bylo změněno z
[{1}] na [{2}].
+view_summaryOverview_header_detectedErrors = Detekované chyby
+view_summaryOverview_title_errorDetailsWindow = Detaily o chybě
+view_summaryOverview_tooltip_detectedErrors = Klikněte na příslušné řádky, abyste uviděli
chybu.
+view_tableSection_backButton = Zpět na seznam
+view_tableSection_error_badId = Nelze zobrazit detail pro [{0}]. Neplatné 'id':
[{0}]. Prosím nahlašte tuto chybu.
+view_tableSection_error_noId = Záznam tabulky [{0}] nemá atribut 'id'. Prosím
nahlašte tuto chybu.
+view_table_drawFail = Chyba při vykreslení tabulky [{0}].
+view_table_matchingRows = Odpovídajících řádků: {0} (vybráno: {1})
+view_table_totalRows = Celkem řádků: {0} (vybráno: {1})
+view_table_totalRowsUnknown = Celkem řádků: ?
+view_tabs_common_activity = Aktivita
view_tabs_common_agent = Agent
-view_tabs_common_availability = Availability
-view_tabs_common_calltime = Calltime
-view_tabs_common_child_history = Child History
-view_tabs_common_child_resources = Child Resources
-view_tabs_common_connectionSettings = Connection Settings
-view_tabs_common_connectionSettingsHistory = Connection Settings History
-view_tabs_common_content = Content
-view_tabs_common_current = Current
+view_tabs_common_availability = Dostupnost
+view_tabs_common_calltime = Calltime???
+view_tabs_common_child_history = Historie potomků
+view_tabs_common_child_resources = Potomci zdroje
+view_tabs_common_connectionSettings = Nastavení připojení
+view_tabs_common_connectionSettingsHistory = Historie nastavení připojení
+view_tabs_common_content = Obsah
+view_tabs_common_current = Aktuální
view_tabs_common_dashboard = Dashboard
-view_tabs_common_deployed = Deployed
+view_tabs_common_deployed = Nasazeno
view_tabs_common_drift = Drift
-view_tabs_common_events = Events
-view_tabs_common_graphs = Graphs
-view_tabs_common_group_members = Group Members
-view_tabs_common_group_membership = Group Membership
-view_tabs_common_groups = Groups
-view_tabs_common_history = History
-view_tabs_common_inventory = Inventory
-view_tabs_common_members = Members
-view_tabs_common_monitoring = Monitoring
-view_tabs_common_overview = Overview
-view_tabs_common_schedule = Schedule
-view_tabs_common_schedules = Schedules
-view_tabs_common_subscriptions = Subscriptions
-view_tabs_common_tables = Tables
-view_tabs_common_timeline = Timeline
-view_tabs_common_traits = Traits
-view_tabs_invalidSubTab = Invalid subtab: {0}
-view_tabs_invalidTab = Invalid tab: {0}
-view_tagCloud_deleteTag = Delete Tag
-view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
-view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
-view_tagCloud_error_fetchFailure = Failed to load tags.
-view_tagCloud_error_tagUsedCount = Tag used {0} times.
-view_taggedResources_title = Tagged Resources
-view_tags_error_1 = Failed to load Tags
-view_tags_tags = Tags
-view_tags_tooltip_1 = Click to remove this Tag
-view_tags_tooltip_2 = Click to edit Tags
-view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g.
it:env=QA, or owner=John)
-view_testTop_description = This section contains pages for testing various GUI
components.
+view_tabs_common_events = Události
+view_tabs_common_graphs = Grafy
+view_tabs_common_group_members = Členové skupiny
+view_tabs_common_group_membership = Přislušnost skupině
+view_tabs_common_groups = Skupiny
+view_tabs_common_history = Historie
+view_tabs_common_inventory = Inventář
+view_tabs_common_members = Členové
+view_tabs_common_monitoring = Monitorování
+view_tabs_common_overview = Přehled
+view_tabs_common_schedule = Rozvrh
+view_tabs_common_schedules = Rozvrhy
+view_tabs_common_subscriptions = Odběry
+view_tabs_common_tables = Tabulky
+view_tabs_common_timeline = Časová osa
+view_tabs_common_traits = Vlastnosti
+view_tabs_invalidSubTab = Neplatná podzáložka: {0}
+view_tabs_invalidTab = Neplatná záložka: {0}
+view_tagCloud_deleteTag = Smazat tag
+view_tagCloud_deleteTagFailure = Nepodařilo se smazat tag [{0}]
+view_tagCloud_deleteTagSuccess = Úspěšně byl smazán tag [{0}]
+view_tagCloud_error_fetchFailure = Chyba při načítání tagů
+view_tagCloud_error_tagUsedCount = Tag použit {0} krát.
+view_taggedResources_title = Onálepkované zdroje
+view_tags_error_1 = Chyba při načítání tagů
+view_tags_tags = Tagy (nálepky)
+view_tags_tooltip_1 = Klikněte pro odstranění tagů
+view_tags_tooltip_2 = Klikněte pro přidání tagů
+view_tags_tooltip_3 = Vložte tag ve formátu: (namespace:)(semantic=)tagname (tzn.
it:env=QA, nebo owner=Jan)
+view_testTop_description = Tato sekce obsahuje stránky pro testování různých GUI
komponent
view_testTop_title = Test
-view_titleBar_common_addedFav = You have added [{0}] as a favorite
-view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
-view_titleBar_common_clickToAddFav = Click to add this as a favorite
-view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
-view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
-view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
-view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
-view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
-view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
-view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
-view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
-view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
-view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
-view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
-view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
-view_tree_common_contextMenu_groupGraph = Group Metric Graph
-view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
-view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
-view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
-view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
-view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
-view_tree_common_contextMenu_loadFailed_operations = Failure to start wizard for running
operations
-view_tree_common_contextMenu_measurements = Measurements
-view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
-view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
-view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
-view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
-view_tree_common_contextMenu_type_name_label = Type: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
-view_tree_common_loadFailed_children = Failed to load children for node
-view_tree_common_loadFailed_create = Failed to create view for this node
-view_tree_common_loadFailed_descendants = Failed to load descendants for tree
-view_tree_common_loadFailed_generic = Failed to load data for tree
-view_tree_common_loadFailed_group = Failed to load group with id [{0}]
-view_tree_common_loadFailed_groupTree = Failed to load group tree
-view_tree_common_loadFailed_node = Failed to load data for this node
-view_tree_common_loadFailed_root = Failed to load root for tree
-view_tree_common_loadFailed_selection = Failed to select this node
-view_tree_common_loadFailed_update = Failed to update view for this node
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
-view_type_parentId = Parent ID
-view_type_resourceTypes = Resource Types
-view_type_typeTreeLoadFailure = Failed to load resource type tree data
-view_upload_alreadyUploaded = File has already been uploaded
-view_upload_bundleDistFile = Distribution File
-view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
-view_upload_error_file = Error uploading file
-view_upload_error_fileName = Error uploading file [{0}]
-view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
-view_upload_error_packageVersionFile = Error uploading Package Version File
-view_upload_error_results = Error uploading file, unexpected results: [{0}]
-view_upload_inProgress = Can not submit, upload is currently in progress
-view_upload_prompt_1 = Please select a file to upload [{0}]
-view_upload_prompt_2 = File to Upload
-view_upload_success = File successfully uploaded
-view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
-view_upload_tooltip_1b = Select a file to upload, then click Next
-view_upload_tooltip_2 = File upload had previously failed
+view_titleBar_common_addedFav = [{0}] byl přidán jako oblíbený
+view_titleBar_common_addedFavFailure = Nepodařilo se přidat [{0}] do oblíbených
+view_titleBar_common_clickToAddFav = Klikněte pro přidání do oblíbených
+view_titleBar_common_clickToRemoveFav = Klikněte pro odstranění z oblíbených
+view_titleBar_common_loadTagsFailure = Nepodařilo se načíst tagy pro [{0}]
+view_titleBar_common_removedFav = Byla odstraněna oblíbená položka [{0}]
+view_titleBar_common_removedFavFailure = Nepodařilo se odstranit oblíbenou položku [{0}]
+view_titleBar_common_updateTagsFailure = Nepodařilo se změnit tagy pro [{0}]
+view_titleBar_common_updateTagsSuccessful = Tagy [{0}] pro byly změněny
+view_titleBar_group_failInfo = Nepodařilo se získat obecné informace o skupině [{0}] s ID
[{1}]
+view_titleBar_group_summary_collapsedTooltip = Klikněte pro zobrazení více detailů pro
tuto skupinu
+view_titleBar_group_summary_expandedTooltip = Klikněto pro skrytí detailu pro tuto
skupinu
+view_tree_common_contextMenu_addChartToDashboard = Přidat graf na dashboard [{0}]
+view_tree_common_contextMenu_editPluginConfiguration = Editovat [{0}] konfigurací
zásuvných modulů
+view_tree_common_contextMenu_editResourceConfiguration = Editovat [{0}] konfigurací
zdroje
+view_tree_common_contextMenu_groupGraph = Graf skupinových metrik
+view_tree_common_contextMenu_loadFail_children = Nepodařilo se načíst manuální přidání
potomka pro platformu.
+view_tree_common_contextMenu_loadFail_dashboards = Nepodařilo se načíst uživatelovi
dashboardy
+view_tree_common_contextMenu_loadFail_group = Nepodařilo se načíst skupinu pro kontextové
menu
+view_tree_common_contextMenu_loadFailed_dashboard = Nepodařilo se načíst uživatelovi
dashboardy
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Nepodařilo se načíst manuální
přidání potomka pro platformu.
+view_tree_common_contextMenu_loadFailed_operations = Nepodařilo se spustit průvodce pro
spouštění operací
+view_tree_common_contextMenu_measurements = Měření
+view_tree_common_contextMenu_resourceConfiguration = Nastavení zdroje
+view_tree_common_contextMenu_resourceGraph = Graf metrik zdrojů
+view_tree_common_contextMenu_saveChartToDashboardFailure = Nepodařilo se uložit
dashboard
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = Dashboard byl uložen [{0}]
+view_tree_common_contextMenu_type_name_label = Typ: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group???
+view_tree_common_loadFailed_children = Nepodařilo se načíst potomky pro uzel
+view_tree_common_loadFailed_create = Nepodařilo se vytvořit view pro tento uzel
+view_tree_common_loadFailed_descendants = Nepodařilo se načíst potomky pro strom
+view_tree_common_loadFailed_generic = Nepodařilo se načíst data pro strom
+view_tree_common_loadFailed_group = Nepodařilo se načíst skupinu s id [{0}]
+view_tree_common_loadFailed_groupTree = Nepodařilo se načíst strom skupiny
+view_tree_common_loadFailed_node = Nepodařilo se načíst data pro tento uzel
+view_tree_common_loadFailed_root = Nepodařilo se načíst kořen stromu
+view_tree_common_loadFailed_selection = Nepodařilo se označit tento uzel
+view_tree_common_loadFailed_update = Nepodařilo seobnovit view pro tento uzel
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]???
+view_type_parentId = ID rodiče
+view_type_resourceTypes = Typy zdrojů
+view_type_typeTreeLoadFailure = Nepodařilo se nahrát typ zdroje (tree data)
+view_upload_alreadyUploaded = Soubor už byl nahrán.
+view_upload_bundleDistFile = Distribuční soubor
+view_upload_error_bundleDistFile = Chyba při nahrávání souboru s distribučním balíkem
+view_upload_error_file = Chyba při nahrávání souboru
+view_upload_error_fileName = Chyba při nahrávání souboru [{0}]
+view_upload_error_fileName_2 = Chyba při nahrávání souboru [{0}], zkontrolujte cestu k
souboru.
+view_upload_error_packageVersionFile = Chyba při nahrávání souboru s verzí balíku
+view_upload_error_results = Chyba při nahrávání souboru, nečekané výsledky: [{0}]
+view_upload_inProgress = Nelze zpracovat, upload nyní probíhá.
+view_upload_prompt_1 = Prosím vyberte soubor k nahrání [{0}]
+view_upload_prompt_2 = Soubor k nahrání
+view_upload_success = Soubor byl úspěšně nahrán
+view_upload_tooltip_1a = Vyberte soubor k uploadu a klikněte na Upload nebo Další
+view_upload_tooltip_1b = Vyberte soubor k uploadu a klikněte na Další
+view_upload_tooltip_2 = Upload souboru minule selhal
view_upload_upload = Upload
-view_upload_uploadFile = UploadFile
-widget_colorPicker_tooltip = Click to select a new color
-widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
-widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
-widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
-widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
-widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
-widget_jobTriggerEditor_field_cronExpression = Cron Expression
-widget_jobTriggerEditor_field_mode = Schedule using
-widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
-widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
-widget_jobTriggerEditor_field_startType = Run
-widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
-widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
-widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
-widget_jobTriggerEditor_tab_examples = Examples
-widget_jobTriggerEditor_tab_format = Format
-widget_jobTriggerEditor_value_calendar = Calendar
-widget_jobTriggerEditor_value_cronExpression = Cron Expression
-widget_jobTriggerEditor_value_for = For
-widget_jobTriggerEditor_value_in = in
-widget_jobTriggerEditor_value_indefinitely = Indefinitely
-widget_jobTriggerEditor_value_later = Later
-widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
-widget_jobTriggerEditor_value_now = Now
-widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+view_upload_uploadFile = Upload souboru
+widget_colorPicker_tooltip = Klikněte pro výběr nové barvy
+widget_durationItem_inputUnitLessThanTargetUnit = Vstupní jednotka je menší než cílová
jednotka.
+widget_durationItem_unitTypeNotSupported = Typ jednotek [{0}] není podporován třídou
DurationItem.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = spouštět danou operaci tolikrát nebo
dokud neuběhne určená doba
+widget_jobTriggerEditor_fieldHelp_repeatInterval = jak často má být operace spouštěna
+widget_jobTriggerEditor_fieldHelp_startDelay = spustit operaci po uplynutí tohoto
časového období
+widget_jobTriggerEditor_field_cronExpression = Cron výraz
+widget_jobTriggerEditor_field_mode = Naplánovat použitím
+widget_jobTriggerEditor_field_repeatInterval_later = Opakovat každých
+widget_jobTriggerEditor_field_repeatInterval_now = Spustit teď a každých
+widget_jobTriggerEditor_field_startType = Spustit
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = Čas ukončení musí být
později než čas spuštění.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = Čas ukončení musí být v
budoucnosti.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = Čas spuštění musí být v
budoucnosti.
+widget_jobTriggerEditor_tab_examples = Příklady
+widget_jobTriggerEditor_tab_format = Formát
+widget_jobTriggerEditor_value_calendar = Kalendář
+widget_jobTriggerEditor_value_cronExpression = Cron výraz
+widget_jobTriggerEditor_value_for = Pro
+widget_jobTriggerEditor_value_in = v
+widget_jobTriggerEditor_value_indefinitely = Neomezeněkrát
+widget_jobTriggerEditor_value_later = Později
+widget_jobTriggerEditor_value_laterAndRepeat = Později & Opakovat
+widget_jobTriggerEditor_value_now = Teď
+widget_jobTriggerEditor_value_nowAndRepeat = Teď & Opakovat
widget_jobTriggerEditor_value_on = on
-widget_jobTriggerEditor_value_until = Until
-widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
-widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
-widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
-widget_recordEditor_error_operation = Operation failed. An error occurred
-widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
-widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
-widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} created.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
-widget_recordEditor_info_recordUpdatedConcise = {0} updated.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
-widget_recordEditor_title_edit = Edit {0} [{1}]
-widget_recordEditor_title_new = Create New {0}
-widget_recordEditor_title_view = View {0} [{1}]
-widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
-widget_resourceFactoryWizard_archPrompt = Package Architecture
-widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Template
-widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Configuration Template
-widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
-widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
-widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
-widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
-widget_resourceFactoryWizard_editConfigStepName = Deployment Options
-widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
-widget_resourceFactoryWizard_execute2 = Failed to create a new resource
-widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
-widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
-widget_resourceFactoryWizard_importFailure = Failed to manually import resource
-widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
-widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
-widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
-widget_resourceFactoryWizard_infoStepName = Resource Information
-widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
-widget_resourceFactoryWizard_namePrompt = New Resource Name
-widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
-widget_resourceFactoryWizard_uploadFailure = Failed to upload file
-widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
-widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
-widget_resourceFactoryWizard_versionPrompt = Package Version
-widget_resourceSelector_groupCategory = Group Category
-widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
-widget_resourceSelector_pleaseSelectResource = Please select a resource
-widget_resourceSelector_selectMultipleResources = Select Resources
-widget_resourceSelector_selectResource = Select a Resource
-widget_typeCache_loadFail = Failed to load resource type metadata
-widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
-widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
-widget_typeTree_loadFail = Failed to load resource types
+widget_jobTriggerEditor_value_until = Dokud
+widget_recordEditor_error_invalidViewPath = Neplatná cesta: [{0}]
+widget_recordEditor_error_multipleRecords = Bylo vráceno více záznamů - očekáván byl
právě jeden.
+widget_recordEditor_error_noRecords = Žádné záznamy nebyly vráceny - očekáván byl práve
jeden.
+widget_recordEditor_error_operation = Operace selhala. Stala se chyba.
+widget_recordEditor_error_operationInvalidValues = Operace selhala - jedno nebo více polí
má neplatné hodnoty
+widget_recordEditor_error_permissionCreate = [{0}] nemohl být vytvořen, Nemáte požadovaná
oprávnění.
+widget_recordEditor_error_unsupportedOperationType = Nepovolený typ operace: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} vytvořeno.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] vytvořeno.
+widget_recordEditor_info_recordUpdatedConcise = {0} změněno.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] změněno.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} smazáno.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} smazáno: {2}.
+widget_recordEditor_title_edit = Editovat {0} [{1}]
+widget_recordEditor_title_new = Vytvořit nový {0}
+widget_recordEditor_title_view = Zobrazit {0} [{1}]
+widget_recordEditor_warn_validation = Jeden nebo více polí má neplatné hodnoty. [{0}]
nemůže být uložen dokud nebudou hodnoty v pořádku.
+widget_resourceFactoryWizard_archPrompt = Architektura bálíčku
+widget_resourceFactoryWizard_configTemplatePrompt = Šablona nastavení zdroje
+widget_resourceFactoryWizard_contentTemplatePrompt = Šablona nastavení nasazení
+widget_resourceFactoryWizard_createSubmit = Požadavek na vytvoření zdroje se jménem [{0}]
byl úspěšně vložen. Může trvat několik minut než se objeví v inventáři.
+widget_resourceFactoryWizard_createSubmitType = Požadavek na vytvoření zdroje typu [{0}]
byl úspěšně vložen. Může trvat několik minut než se objeví v inventáři.
+widget_resourceFactoryWizard_createWizardTitle = Vytvořit nový zdroj typu [{0}]
+widget_resourceFactoryWizard_createWizardWindowTitle = Pruvodce vytvoření zdroje
+widget_resourceFactoryWizard_editConfigStepName = Volby nasazení
+widget_resourceFactoryWizard_execute1 = Nepodařilo se vytvořit nový zdroj - chybí verze
balíku
+widget_resourceFactoryWizard_execute2 = Nepodařilo se vytvořit nový zdroj
+widget_resourceFactoryWizard_failedToDeleteVersion = Nepodařilo se vymazat verzi balíku
+widget_resourceFactoryWizard_failedToGetType = Nepodařilo se zjistit typ dat dat daného
zdroje.
+widget_resourceFactoryWizard_importFailure = Nezdařilo se manuálně importovat zdroj
+widget_resourceFactoryWizard_importSubmitted = Požadavek na import nového zdroje typu
[{0}] byl vložen.
+widget_resourceFactoryWizard_importWizardTitle = Import zdroje typu [{0}]
+widget_resourceFactoryWizard_importWizardWindowTitle = Průvodce importu zdroje
+widget_resourceFactoryWizard_infoStepName = Informace o zdroji
+widget_resourceFactoryWizard_infoStep_loadFail = Nepodařilo se získat dostupné
architektury
+widget_resourceFactoryWizard_namePrompt = Nové jméno zdroje
+widget_resourceFactoryWizard_templatePrompt = Šablona pro nastavení připojení
+widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.\n???\n
+widget_resourceFactoryWizard_uploadFailure = Nepodařilo se nahrát soubor
+widget_resourceFactoryWizard_uploadFileStepName = Nahrát obsah souboru zdroje
+widget_resourceFactoryWizard_uploadInProgress = Upload právě probíhá... Může to trvat
několik minut.
+widget_resourceFactoryWizard_versionPrompt = Verze balíčku
+widget_resourceSelector_groupCategory = Kategorie skupiny
+widget_resourceSelector_pleaseSelectMultipleResource = Prosím, vyberte jeden nebo více
zdrojů
+widget_resourceSelector_pleaseSelectResource = Prosím, vyberte zdroj
+widget_resourceSelector_selectMultipleResources = Vyber zdroje
+widget_resourceSelector_selectResource = Vyber zdroj
+widget_typeCache_loadFail = Nepodařilo se načíst metadata typu zdroje.
+widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]\nNeplatné URL.
Neznámy typ šablony: [{0}]
+widget_typeTree_badTypeId = Neplatné URL. Špatný typ zdroje ID: [{0}]
+widget_typeTree_loadFail = Nepodařilo se načíst typy zdrojů
commit cf4221ff4bf9f4a1048f72a52956f1208d22cdf2
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Mon May 21 17:12:25 2012 +0200
l16n 1st part
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
new file mode 100644
index 0000000..979f48b
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_cs.properties
@@ -0,0 +1,2028 @@
+# suppress inspection "UnusedProperty" for whole file
+#
+# RHQ GUI i18n Messages - Locale: DE
+#
+# This file should be UTF-8 encoded.
+#
+# Developers: See the following wiki page for how to work with this file:
+#
+#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
+###################################
+common_alert_high = Vysoká
+common_alert_low = Nízká
+common_alert_medium = Střední
+common_buildInfo_gwtVersion = 2.4.0
+common_button_ack = Potvrdit
+common_button_ack_all = Potvrdit všechny
+common_button_add = Přidat
+common_button_advanced = Rozšířené...
+common_button_apply = Použít
+common_button_cancel = Storno
+common_button_close = Zavřít
+common_button_compare = Porovnat
+common_button_create_child = Vytvořit potomka
+common_button_delete = Smazat
+common_button_delete_all = Smazat vše
+common_button_disable = Zakázat
+common_button_dump_sysInfo_to_log = Vypsat systémové info
+common_button_edit = Editovat
+common_button_enable = Povolit
+common_button_execute = Spustit
+common_button_finish = Ukončit
+common_button_fixedWidth = Pevná šířka
+common_button_import = Import
+common_button_new = Nový
+common_button_next = Další
+common_button_ok = OK
+common_button_previous = Předchozí
+common_button_purge = Smazat
+common_button_purgeAll = Smazat vše
+common_button_refresh = Obnovit
+common_button_reports_export = Export
+common_button_reset = Reset
+common_button_save = Uložit
+common_button_scaleToFit = Přizpůsobit velikost
+common_button_schedule = Naplánovat
+common_button_search = Prohledat
+common_button_set = Nastavit
+common_button_showDetails = Zobrazi detaily...
+common_button_uninventory = Odstranit z inventáře
+common_calendar_april_short = dub
+common_calendar_august_short = srp
+common_calendar_december_short = pro
+common_calendar_february_short = úno
+common_calendar_january_short = led
+common_calendar_july_short = črc
+common_calendar_june_short = črn
+common_calendar_march_short = bře
+common_calendar_may_short = kvě
+common_calendar_november_short = lis
+common_calendar_october_short = říj
+common_calendar_september_short = zář
+common_label_ago = před {0}
+common_label_all = ALL
+common_label_all_resources = všechny zdroje
+common_label_day = den
+common_label_error = Chyba
+common_label_filters = Filtry
+common_label_hour = hodina
+common_label_item = položka
+common_label_items = položky
+common_label_month = měsíc
+common_label_none = žádný
+common_label_none2 = žádný
+common_label_role = role
+common_label_roles = role
+common_label_scheduled_operations = naplánované operace
+common_label_selected_resources = vybrané zdroje
+common_label_unlimited = neomezeno
+common_label_user = uživatel
+common_label_users = uživatelé
+common_label_week = týden
+common_label_yesterday = včera
+common_msg_areYouSure = Jste si jistí?
+common_msg_asyncTimeout = {0}. Stalo se to, protože serveru trvalo příliš dlouho k
vyřízení požadavku. Prosím, vemte na vědomí, že server může stále vyřizovat Váš požadavek.
Můžete zkontrolovat logy serveru, zda nenajdete něco neobvyklého.
+common_msg_changeAutoDetected = Change auto-detected???
+common_msg_deleteConfirm = Jste si jistí, že chcete smazat # vybraných {0}?
+common_msg_emphasizedNotePrefix = POZNÁMKA:
+common_msg_loading = Nahrávám...
+common_msg_noItemsToShow = Žádné položky k zobrazení
+common_msg_notYetImplemented = Ještě nebylo implementováno
+common_msg_see_more = více...
+common_msg_step_x_of_y = Krok {0} z {1}
+common_severity_debug = Ladění
+common_severity_error = Chyba
+common_severity_fatal = Fatální
+common_severity_info = Informační
+common_severity_warn = Varování
+common_status_canceled = Zrušeno
+common_status_deferred = Odloženo
+common_status_failed = Selhalo
+common_status_inprogress = Probíhá
+common_status_nochange = Žádná změna
+common_status_partial = Částecně
+common_status_success = Úspěch
+common_status_timedOut = Vypršelo
+common_status_unknown = Neznámý
+common_title_add_column = Přidat sloupec
+common_title_add_graph_to_view = Přidat graf do monitorovacího pohledu
+common_title_add_portlet = Přidat portlet
+common_title_address = Adresa
+common_title_alerts = Výstrahy
+common_title_alerts_range = Alert Range ???
+common_title_ancestry = Původ
+common_title_availability = Dostupnost
+common_title_available_resources = Dostupné zdroje
+common_title_average_metrics = Průměrné metriky za minutu
+common_title_background = Pozadí
+common_title_bundle = Balík
+common_title_bundles = Balíky
+common_title_category = Kategorie
+common_title_change_refresh_time = Obnovovací interval
+common_title_columns = Sloupce
+common_title_compare_metrics = Porovnávací metriky
+common_title_compatibleGroups = Kompatibilní skupiny
+common_title_compatibleGroups_total = Celkem kompatibilních skupin
+common_title_component_errors = Chyby komponent
+common_title_config_update_status = Obnovit stav
+common_title_configuration = Konfigurace
+common_title_count = Počet
+common_title_createTime = Datum vytvoření
+common_title_custom = Vlastní
+common_title_dashboard_name = Jméno pro dashboard
+common_title_dateCreated = Datum vytvoření
+common_title_dateRange = Období
+common_title_default = Výchozí
+common_title_definition = Definice
+common_title_definitions = Definice
+common_title_description = Popis
+common_title_details = Detaily
+common_title_display = Displej
+common_title_display_name = Jméno displeje
+common_title_duration = Duration
+common_title_edit = Edit?
+common_title_edit_mode = Edit Mode
+common_title_enabled = Enabled?
+common_title_end = End
+common_title_generalProp = General Properties
+common_title_group = Group
+common_title_group_def_total = Group Definition Total
+common_title_group_member_health = Group Member Health
+common_title_groups = Groups
+common_title_help = Help
+common_title_host = Host
+common_title_id = ID
+common_title_id_parent = Parent ID
+common_title_in_compliance = In Compliance?
+common_title_interval = Interval
+common_title_inventory = Inventory
+common_title_inventorySummary = Inventory Summary
+common_title_kind = Kind
+common_title_lastUpdated = Last Updated
+common_title_lastUpdatedBy = Last Updated By
+common_title_ldapGroups = LDAP Groups
+common_title_mashup = Mashup
+common_title_members_reporting = Members Reporting
+common_title_message = Message
+common_title_metric = Metric
+common_title_metric_chart = Metric Chart
+common_title_mixedGroups = Mixed Groups
+common_title_mixedGroups_total = Mixed Group Total
+common_title_name = Name
+common_title_new_dashboard = New Dashboard
+common_title_numeric_metrics = Numeric Metrics
+common_title_numeric_type = Numeric Type
+common_title_operation = Operation
+common_title_operation_status = Operation Status
+common_title_operations = Operations
+common_title_operations_range = Operation Range
+common_title_over = Over
+common_title_password = Password
+common_title_path = Path
+common_title_permissions = Permissions
+common_title_platform = Platform
+common_title_platform_total = Platform Total
+common_title_plugin = Plugin
+common_title_port = Port
+common_title_providers = Providers
+common_title_recent_alerts = Recent Alerts
+common_title_recent_bundle_deployments = Recent Bundle Deployments
+common_title_recent_configuration_updates = Recent Configuration Updates
+common_title_recent_drifts = Recent Drift
+common_title_recent_event_counts = Recent Event Counts
+common_title_recent_measurements = Recent Measurements
+common_title_recent_oob_metrics = Recent Out of Bound metrics
+common_title_recent_operations = Recent Operations
+common_title_recent_pkg_history = Recent Package History
+common_title_recently_added = Recently Added
+common_title_remove_column = Remove Column
+common_title_repositories = Repositories
+common_title_resource = Resource
+common_title_resourceGroups = Resource Groups
+common_title_resource_group = Resource Group
+common_title_resource_id = Resource ID
+common_title_resource_inventory = Resource Inventory
+common_title_resource_key = Resource Key
+common_title_resource_name = Resource Name
+common_title_resource_type = Resource Type
+common_title_resources = Resources
+common_title_results_count = Results Count
+common_title_results_count_tooltip = Displays this number of results
+common_title_role = Role
+common_title_roles = Roles
+common_title_scheduled_operations = Scheduled Operations
+common_title_search = Search
+common_title_selected_resources = Selected Resources
+common_title_server = Server
+common_title_server_total = Server Total
+common_title_service = Service
+common_title_service_total = Service Total
+common_title_settings = Settings
+common_title_show = Show
+common_title_sort_order = Sort Order
+common_title_sort_order_tooltip = Sets sort order for results.
+common_title_start = Start
+common_title_status = Status
+common_title_stop = Stop
+common_title_summary = Summary
+common_title_tag_cloud = Tag Cloud
+common_title_the = The
+common_title_timestamp = Date/Time
+common_title_total = Total
+common_title_type = Type
+common_title_units = Units
+common_title_user = User
+common_title_users = Users
+common_title_value = Value
+common_title_version = Version
+common_title_view_mode = View Mode
+common_title_web_address = Web Address
+common_title_welcome = Welcome
+common_unit_abbrev_bits = b
+common_unit_abbrev_bytes = B
+common_unit_abbrev_celsius = C
+common_unit_abbrev_days = d
+common_unit_abbrev_fahrenheight = F
+common_unit_abbrev_gigabits = Gb
+common_unit_abbrev_gigabytes = GB
+common_unit_abbrev_hours = h
+common_unit_abbrev_jiffys = j
+common_unit_abbrev_kelvin = K
+common_unit_abbrev_kilobits = Kb
+common_unit_abbrev_kilobytes = KB
+common_unit_abbrev_megabits = Mb
+common_unit_abbrev_megabytes = MB
+common_unit_abbrev_microseconds = us
+common_unit_abbrev_milliseconds = ms
+common_unit_abbrev_minutes = m
+common_unit_abbrev_nanoseconds = ns
+common_unit_abbrev_percentage = %
+common_unit_abbrev_petabits = Pb
+common_unit_abbrev_petabytes = PB
+common_unit_abbrev_seconds = s
+common_unit_abbrev_terabits = Tb
+common_unit_abbrev_terabytes = TB
+common_unit_days = days
+common_unit_days2 = days
+common_unit_hours = hours
+common_unit_milliseconds = milliseconds
+common_unit_minute = minute
+common_unit_minutes = minutes
+common_unit_months = months
+common_unit_seconds = seconds
+common_unit_times = times
+common_unit_weeks = weeks
+common_unit_years = years
+common_val_for = for
+common_val_n1st = {0}st
+common_val_n2nd = {0}nd
+common_val_n3rd = {0}rd
+common_val_na = N/A
+common_val_never = Never
+common_val_no = No
+common_val_no_lower = no
+common_val_none = None
+common_val_nth = {0}th
+common_val_yes = Yes
+common_val_yes_lower = yes
+dataSource_ContentRepoTree_error_load = Error loading repositories
+dataSource_ContentRepoTree_field_parentId = Parent ID
+dataSource_bundle_loadFailed = Failed to load Bundle data
+dataSource_configurationHistory_clickToSeeError = Double click to see error message...
+dataSource_configurationHistory_currentConfig = This is the current configuration
+dataSource_configurationHistory_dateCompleted = Date Completed
+dataSource_configurationHistory_dateSubmitted = Date Submitted
+dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
+dataSource_configurationHistory_updateType = Update Type
+dataSource_configurationHistory_updateType_group = Group
+dataSource_configurationHistory_updateType_individual = Individual
+dataSource_definitions_loadFailed = Failed to load metric definitions
+dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
+dataSource_measurementOob_field_factor = Out of Range Factor (%)
+dataSource_measurementOob_field_formattedBaseband = Band
+dataSource_measurementOob_field_formattedOutlier = Outlier
+dataSource_measurementOob_field_parentName = Parent
+dataSource_measurementOob_field_resourceName = Resource
+dataSource_measurementOob_field_scheduleName = Metric
+dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
+dataSource_operationHistory_field_createdTime = Created Time
+dataSource_operationHistory_field_operationName = Operation Name
+dataSource_operationHistory_field_startedTime = Started Time
+dataSource_operationHistory_field_subject = Requester
+dataSource_operationSchedule_field_description = Notes
+dataSource_operationSchedule_field_id = Schedule ID
+dataSource_operationSchedule_field_nextFireTime = Next Execution
+dataSource_operationSchedule_field_operationDisplayName = Operation
+dataSource_operationSchedule_field_operationName = Operation
+dataSource_operationSchedule_field_subject = Owner
+dataSource_operationSchedule_field_timeout = Timeout (in seconds)
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = Memory
+dataSource_platforms_field_swap = Swap
+dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
+dataSource_problemResources_field_available = Current Availability
+dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
+dataSource_recentOperations_field_location = Location
+dataSource_recentOperations_field_operation = Operation
+dataSource_recentOperations_field_resource = Resource
+dataSource_recentOperations_field_status = Status
+dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
+dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
+dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
+dataSource_resourceErrors_field_errorType = Error Type
+dataSource_resourceErrors_field_summary = Summary
+dataSource_resourceErrors_field_timeOccured = Time
+dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
+dataSource_resources_field_discoveryTime = Discovery Time
+dataSource_resources_field_importTime = Import Time
+dataSource_resources_field_key = Key
+dataSource_resources_field_lastModifiedTime = Last Modified Time
+dataSource_resources_field_lastModifier = Last Modifier
+dataSource_resources_field_location = Location
+dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
+dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
+dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = no
+dataSource_rpc_yes = yes
+dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
+dataSource_scheduledOperations_field_location = Location
+dataSource_scheduledOperations_field_operation = Operation
+dataSource_scheduledOperations_field_resource = Resource
+dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
+dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
+dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
+dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
+dataSource_schedules_field_resourceGroupId = Group ID
+dataSource_schedules_loadFailed = Failed to load metric schedules
+dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
+dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
+dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
+dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
+dataSource_traits_field_definitionID = Definition ID
+dataSource_traits_field_lastChanged = Last Changed
+dataSource_traits_field_primaryKey = Primary Key
+dataSource_traits_field_trait = Trait
+dataSource_traits_group_field_groupId = Group ID
+dataSource_users_delete = Deleted user [{0}]
+dataSource_users_deleteFailed = Failed to delete user [{0}]
+dataSource_users_field_department = Department
+dataSource_users_field_emailAddress = Email Address
+dataSource_users_field_factive = Login Enabled?
+dataSource_users_field_firstName = First Name
+dataSource_users_field_id = ID
+dataSource_users_field_lastName = Last Name
+dataSource_users_field_ldap = LDAP Login?
+dataSource_users_field_name = User Name
+dataSource_users_field_passwordVerify = Verify Password
+dataSource_users_field_phoneNumber = Phone Number
+dataSource_users_invalidEmailAddress = Invalid email address.
+dataSource_users_passwordsDoNotMatch = Passwords do not match.
+datasource_roles_field_ldapGroups = LDAP Groups
+datasource_roles_field_subjects = Subjects
+datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
+datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
+datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
+datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+favorites = Favorites
+favorites_groups = Favorite Groups
+favorites_recentlyViewed = Recently Viewed
+favorites_resources = Favorite Resources
+filter_from_date = From
+filter_to_date = To
+group_tree_groupOfResourceType = Group of [{0}]
+group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
+util_ancestry_parentAncestry = Parent Ancestry for:
+util_errorHandler_nullException = exception was null
+util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
+util_rpcManager_activeRequests = {0} Active Requests
+util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
+util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
+util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
+util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
+util_userSession_logoutFail = Failed to logout.
+util_widgetsField_unlimited = Unlimited
+view_aboutBox_allRightsReserved = All Rights Reserved.
+view_aboutBox_buildNumber = Build Number:
+view_aboutBox_failedToLoad = Failed to load product information.
+view_aboutBox_homepage = Homepage
+view_aboutBox_jbossByRedHat = JBoss by Red Hat
+view_aboutBox_title = About {0}
+view_aboutBox_version = Version:
+view_adminConfig_agentPlugins = Agent Plugins
+view_adminConfig_alertDefTemplates = Alert Definition Templates
+view_adminConfig_downloads = Downloads
+view_adminConfig_driftDefTemplates = Drift Definition Templates
+view_adminConfig_metricTemplates = Metric Collection Templates
+view_adminConfig_serverPlugins = Server Plugins
+view_adminConfig_systemSettings = System Settings
+view_adminContent_contentSources = Content Sources
+view_adminRoles_assignedGroups = Assigned Resource Groups
+view_adminRoles_assignedSubjects = Assigned Subjects
+view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
+view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
+view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
+view_adminRoles_failRoles = Failed to fetch roles.
+view_adminRoles_globalPerms = Global Permissions
+view_adminRoles_ldapGroups = LDAP Groups
+view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
+view_adminRoles_noLdap = The LDAP security integration is not configured. To configure
LDAP, go to <a {0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_globalPermissions = Global Permissions
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
+view_adminRoles_permissions_isAuthorized = Authorized?
+view_adminRoles_permissions_isRead = Read?
+view_adminRoles_permissions_isWrite = Write?
+view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
+view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles - implies all other permissions
+view_adminRoles_permissions_permDesc_manageSettings = can modify the {0} Server
configuration and perform any Server-related functionality
+view_adminRoles_permissions_permDesc_viewUsers = can view other users, with the exception
of their assigned roles
+view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
+view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
+view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions
and alert history
+view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and
available packages; view package installation history
+view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift definitions
and drift history
+view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
+view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
+view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration;
delete Resource configuration revision history items
+view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
+view_adminRoles_permissions_permWriteDesc_createChildResources = create new child
Resources (for child Resources of types that are creatable)
+view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources;
delete Resources (for Resources of types that are deletable)
+view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
+view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
+view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
+view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete drift
definitions; and manage drift instances
+view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
+view_adminRoles_permissions_perm_configure = Configure
+view_adminRoles_permissions_perm_control = Control
+view_adminRoles_permissions_perm_createChildResources = Create Child Resources
+view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
+view_adminRoles_permissions_perm_inventory = Inventory
+view_adminRoles_permissions_perm_manageAlerts = Manage Alerts
+view_adminRoles_permissions_perm_manageBundles = Manage Bundles
+view_adminRoles_permissions_perm_manageContent = Manage Content
+view_adminRoles_permissions_perm_manageDrift = Manage Drift
+view_adminRoles_permissions_perm_manageEvents = Manage Events
+view_adminRoles_permissions_perm_manageInventory = Manage Inventory
+view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
+view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
+view_adminRoles_permissions_perm_manageSecurity = Manage Security
+view_adminRoles_permissions_perm_manageSettings = Manage Settings
+view_adminRoles_permissions_perm_viewUsers = View Users
+view_adminRoles_permissions_read = Read:
+view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
+view_adminRoles_permissions_resourcePermissions = Resource Permissions
+view_adminRoles_permissions_write = Write:
+view_adminRoles_resourcePerms = Resource Permissions
+view_adminRoles_roleAdded = Role [{0}] added.
+view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
+view_adminRoles_roleDeleted = Role [{0}] deleted.
+view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
+view_adminRoles_roleUpdated = Role [{0}] updated.
+view_adminTemplates_definedBy = Defined By
+view_adminTemplates_disabledTemplates = Disabled Templates
+view_adminTemplates_editAlertTemplate = Edit Alert Template
+view_adminTemplates_editTemplates = Edit Templates
+view_adminTemplates_enabledTemplates = Enabled Templates
+view_adminTemplates_platformServices = Platform Services
+view_adminTemplates_platforms = Platforms
+view_adminTemplates_pluginTemplates = Plugin Templates
+view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
+view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
+view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
+view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
+view_adminTemplates_servers = Servers
+view_adminTemplates_userTemplates = User Templates
+view_adminTopology_affinityGroups = Affinity Groups
+view_adminTopology_agents = Agents
+view_adminTopology_partitionEvents = Partition Events
+view_adminTopology_remoteAgentInstall = Remote Agent Install
+view_adminTopology_servers = Servers
+view_adminUsersDetails_dataTypeName = user
+view_admin_administration = Administration
+view_admin_configuration = Configuration
+view_admin_content = Content
+view_admin_downloads_agentDownload = Agent Download
+view_admin_downloads_agent_buildNumber = Agent Build
+view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = Link
+view_admin_downloads_agent_link_value = Download Agent {0} ({1})
+view_admin_downloads_agent_loadError = Cannot get agent version info
+view_admin_downloads_agent_md5 = Agent MD5
+view_admin_downloads_agent_version = Agent Version
+view_admin_downloads_bundleDownload = Bundle Deployer Download
+view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of {0} bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
+view_admin_downloads_bundle_link_label = Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_cliAlertScriptsDownload = CLI Alert Scripts Download
+view_admin_downloads_cliAlertScripts_help = CLI alert scripts are pre-canned scripts that
can be used for creating scripted alert notifications. The scripts will usually require
some tweaking before they can be used as a notification on a particular alert definition.
+view_admin_downloads_cliAlertScripts_loadError = Cannot get info on available CLI alert
scripts for download
+view_admin_downloads_cliAlertScripts_none = No CLI alert scripts are available for
download
+view_admin_downloads_cliDownload = Command Line Client Download
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the {0} Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
+view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_version = CLI Version
+view_admin_downloads_connectorsDownload = Connectors Download
+view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_landing = From this section, the {0} global settings can be administered. This
includes configuring security, setting up plugins, and managing {0} Servers and Agents.
+view_admin_measTemplates_updateExisting_title = Update Existing Schedules
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_plugins_agent = Agent
+view_admin_plugins_agentDeleteConfirm = <b>Warning!</b><br/>\nThe
following agent plugins are about to be deleted:<br/>\n{0}<br/>\nAre you sure
you want to delete these?
+view_admin_plugins_agentDisableConfirm = <b>Warning!</b><br/>\nThe
following agent plugins are about to be disabled:<br/>\n{0}<br/>\nAre you sure
you want to disable these?
+view_admin_plugins_deletedAgentPlugins = Deleted agent plugins: {0}
+view_admin_plugins_deletedAgentPluginsFailure = Failed to delete agent plugins.
+view_admin_plugins_deployed = Deployed?
+view_admin_plugins_disabledAgentPlugins = Disabled agent plugins: {0}
+view_admin_plugins_disabledAgentPluginsFailure = Failed to disable agent plugins.
+view_admin_plugins_disabledServerPlugins = Disabled server plugins: {0}
+view_admin_plugins_disabledServerPluginsFailure = Failed to disable server plugins.
+view_admin_plugins_enabledAgentPlugins = Enabled agent plugins: {0}
+view_admin_plugins_enabledAgentPluginsFailure = Failed to enable agent plugins.
+view_admin_plugins_enabledServerPlugins = Enabled server plugins: {0}
+view_admin_plugins_enabledServerPluginsFailure = Failed to enable server plugins.
+view_admin_plugins_hideDeleted = Hide Deleted
+view_admin_plugins_hideUndeployed = Hide Undeployed
+view_admin_plugins_loadFailure = Failed to load plugin data
+view_admin_plugins_purgedAgentPlugins = Preparing to purge agent plugins {0}. This may
take a few minutes since all type definitions from the plugins must first be purged from
the system. The plugins will still be visible on this page until they have been purged.
Please note that you must not re-install the plugin while the purge is running, otherwise
failures will occur. Therefore, please wait before attempting to re-install the plugin
into the system until this purge is complete.
+view_admin_plugins_purgedAgentPluginsFailure = Failed to purge agent plugins.
+view_admin_plugins_purgedServerPlugins = Purged server plugins: {0}.
+view_admin_plugins_purgedServerPluginsFailure = Failed to purge server plugins.
+view_admin_plugins_restartMasterPC = Restart Master Plugin Container
+view_admin_plugins_restartMasterPCComplete = Master plugin container has been restarted.
+view_admin_plugins_restartMasterPCFailure = Failed to restart the master plugin
container
+view_admin_plugins_restartMasterPCStarted = Restarting the master plugin container...
+view_admin_plugins_scan = Scan For Updates
+view_admin_plugins_scanComplete = Finished scanning for updated plugins
+view_admin_plugins_scanFailure = Failed to scan for updated plugins.
+view_admin_plugins_server = Server
+view_admin_plugins_serverConfig = Plugin Configuration
+view_admin_plugins_serverConfig_badSettings = Please enter valid settings
+view_admin_plugins_serverConfig_saveFailed = Failed to save the settings
+view_admin_plugins_serverConfig_settingsSaved = The settings have been saved.
+view_admin_plugins_serverControls = Controls
+view_admin_plugins_serverControls_badParams = Please enter valid parameters
+view_admin_plugins_serverControls_clickForError = Click for the error message
+view_admin_plugins_serverControls_invokeFailure = Failed to invoke the control
+view_admin_plugins_serverControls_name = Control
+view_admin_plugins_serverControls_parameters = Parameters
+view_admin_plugins_serverControls_results = Results
+view_admin_plugins_serverDisableConfirm = <b>Warning!</b><br/>\nThe
following server plugins are about to be disabled:<br/>\n{0}<br/>\nAre you
sure you want to disable these?
+view_admin_plugins_serverScheduleJobs = Scheduled Jobs
+view_admin_plugins_serverUndeployConfirm = <b>Warning!</b><br/>\nThe
following server plugins are about to be undeployed:<br/>\n{0}<br/>\nAre you
sure you want to undeploy these?
+view_admin_plugins_showDeleted = Show Deleted
+view_admin_plugins_showUndeployed = Show Undeployed
+view_admin_plugins_undeploy = Undeploy
+view_admin_plugins_undeployedServerPlugins = Undeployed server plugins: {0}
+view_admin_plugins_undeployedServerPluginsFailure = Failed to undeploy server plugins.
+view_admin_plugins_upload = Upload Plugin
+view_admin_security = Security
+view_admin_systemSettings_ActiveDriftServerPlugin_desc = The drift server plugin that
manages the persistence of drift-related entities and content.
+view_admin_systemSettings_ActiveDriftServerPlugin_name = Active Drift Server Plugin
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days. Maximum value is 'Baseline Dataset'.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_DriftFilePurge_desc = How old unused and orphaned drift files
must be before being purged from backend storage. This is specified in days.
+view_admin_systemSettings_DriftFilePurge_name = Delete Unused Drift Files Older Than
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
+view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
+view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
+view_admin_systemSettings_JAASProvider_name = Enable LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = Username
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
+view_admin_systemSettings_LDAPBindPW_name = Password
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPGroupUsePosixGroup_desc = Defines whether to use PosixGroup
symantics for group membership check. With PosixGroups the Group Member Filter is usually
set to 'memberUid' and the Group Filter to 'objectclass=posixGroup'.
+view_admin_systemSettings_LDAPGroupUsePosixGroup_name = Is PosixGroup
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
+view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
+view_admin_systemSettings_dumpToLogFailed = Writing of system info to server log file
failed
+view_admin_systemSettings_dumpedToLog = System info was successfully written to server
log file
+view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
+view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
+view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
+view_admin_systemSettings_group_drift = Drift Server Configuration Settings
+view_admin_systemSettings_group_general = General Configuration Properties
+view_admin_systemSettings_group_ldap = LDAP Configuration Properties
+view_admin_systemSettings_saveFailure = Failed to save the system settings
+view_admin_systemSettings_savedSettings = You successfully saved the system properties
+view_admin_systemSettings_serverDetails = Server Details
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
+view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
+view_admin_systemSettings_serverDetails_dbName = Database Product Name
+view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
+view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
+view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_serverDetails_time = Server Local Time
+view_admin_systemSettings_serverDetails_tz = Server Time Zone
+view_admin_topology = Topology
+view_alert_common_tab_conditions = Conditions
+view_alert_common_tab_conditions_expression = Fire alert when
+view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
+view_alert_common_tab_conditions_modal_title = Add Condition
+view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
+view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
+view_alert_common_tab_conditions_text = Condition
+view_alert_common_tab_conditions_type_availability = Availability Change
+view_alert_common_tab_conditions_type_availability_down = Went down
+view_alert_common_tab_conditions_type_availability_up = Came up
+view_alert_common_tab_conditions_type_drift = Drift Detection
+view_alert_common_tab_conditions_type_drift_configpaths = Drift Detection for files that
match "{0}" and for drift definition [{1}]
+view_alert_common_tab_conditions_type_drift_onlyconfig = Drift Detection for drift
definition [{0}]
+view_alert_common_tab_conditions_type_drift_onlypaths = Drift Detection for files that
match "{0}"
+view_alert_common_tab_conditions_type_event = Event Detection
+view_alert_common_tab_conditions_type_event_matching = with event source matching
+view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
+view_alert_common_tab_conditions_type_metric_baseline_verb = of
+view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
+view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_common_tab_conditions_type_metric_change = Metric Value Change
+view_alert_common_tab_conditions_type_metric_range_inside_exclusive = Metric Value Range:
[{0}] between [{1}] and [{2}], exclusive
+view_alert_common_tab_conditions_type_metric_range_inside_inclusive = Metric Value Range:
[{0}] between [{1}] and [{2}], inclusive
+view_alert_common_tab_conditions_type_metric_range_outside_exclusive = Metric Value
Range: [{0}] outside [{1}] and [{2}], exclusive
+view_alert_common_tab_conditions_type_metric_range_outside_inclusive = Metric Value
Range: [{0}] outside [{1}] and [{2}], inclusive
+view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
+view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
+view_alert_common_tab_conditions_type_operation = Operation Execution
+view_alert_common_tab_conditions_type_operation_status = with result status
+view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
+view_alert_common_tab_dampening = Dampening
+view_alert_common_tab_dampening_category_consecutive_count = Consecutive
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
+view_alert_common_tab_dampening_category_duration_count = Time Period
+view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
+view_alert_common_tab_dampening_category_none = None
+view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
+view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
+view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
+view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
+view_alert_common_tab_dampening_duration_period_label = Time Period
+view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
+view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
+view_alert_common_tab_general = General Properties
+view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
+view_alert_common_tab_notifications = Notifications
+view_alert_common_tab_notifications_message = Message
+view_alert_common_tab_notifications_sender = Sender
+view_alert_common_tab_notifications_status = Status
+view_alert_common_tab_recovery = Recovery
+view_alert_definition_condition_editor_availabilityDuration = Availability Duration
+view_alert_definition_condition_editor_availabilityDuration_tooltip = Specify the
availability state change and the duration that state must persist in order to trigger the
condition. The duration is in minutes and should be long enough, several minutes, to give
the agent time to detect another availability state change that may correct the problem.
+view_alert_definition_condition_editor_availabilityDuration_tooltip_duration = The number
of minutes the resource must be at the given availability before the condition is met.
+view_alert_definition_condition_editor_availability_tooltip = Specify the availability
state change that will trigger the condition.
+view_alert_definition_condition_editor_availability_value = Availability
+view_alert_definition_condition_editor_common_avg = Average
+view_alert_definition_condition_editor_common_max = Maximum
+view_alert_definition_condition_editor_common_min = Minimum
+view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
+view_alert_definition_condition_editor_drift_configname_regex = Drift Definition Name
+view_alert_definition_condition_editor_drift_configname_regex_tooltip = If specified,
this is the drift definition name that was responsible for the drift that was detected.
This can optionally be a regular expression if you wish to match multiple drift definition
names.
+view_alert_definition_condition_editor_drift_pathname_regex = Pathname Regular
Expression
+view_alert_definition_condition_editor_drift_pathname_regex_tooltip = If specified, this
is a regular expression that must match the pathnames of those files that drifted.
+view_alert_definition_condition_editor_drift_tooltip = This condition is triggered when
drift has been detected.
+view_alert_definition_condition_editor_event_regex = Regular Expression
+view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
+view_alert_definition_condition_editor_event_severity = Event Severity
+view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
+view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
+view_alert_definition_condition_editor_metric_baseline_value = Baseline
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
+view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
+view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
+view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
+view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
+view_alert_definition_condition_editor_metric_nometrics = When using the ALL conjunction,
you cannot use the same metric in multiple conditions and this alert uses all available
metrics in currently existing conditions.
+view_alert_definition_condition_editor_metric_range_comparator = Comparator
+view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive = Inside,
exclusive
+view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive = Inside,
inclusive
+view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive =
Outside, exclusive
+view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive =
Outside, inclusive
+view_alert_definition_condition_editor_metric_range_comparator_tooltip = Determines if a
metric value should trigger this condition when inside the range or outside of it. If
inclusive, the value is considered to be in the range if its value equals a low or high
threshold value. If exclusive, the value is not considered in the range if it equals the
low or high value.
+view_alert_definition_condition_editor_metric_range_hivalue = High Value
+view_alert_definition_condition_editor_metric_range_hivalue_tooltip = The high threshold
value of the range.
+view_alert_definition_condition_editor_metric_range_lovalue = Low Value
+view_alert_definition_condition_editor_metric_range_lovalue_tooltip = The low threshold
value of the range.
+view_alert_definition_condition_editor_metric_range_tooltip = Compares a metric value to
a given low-high value range.
+view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
+view_alert_definition_condition_editor_metric_threshold_name = Metric
+view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_value = Metric Value
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Trait
+view_alert_definition_condition_editor_metricswarning = You cannot have multiple
conditions that use the same metric when using the ALL conjunction. This alert definition
has multiple conditions that use the metric [{0}].
+view_alert_definition_condition_editor_operation_status = Operation Status
+view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
+view_alert_definition_condition_editor_operator_availability_durationDown = Stays Down
+view_alert_definition_condition_editor_operator_availability_durationNotUp = Stays Not
Up
+view_alert_definition_condition_editor_operator_availability_goesDisabled = Goes
disabled
+view_alert_definition_condition_editor_operator_availability_goesDown = Goes down
+view_alert_definition_condition_editor_operator_availability_goesNotUp = Goes not up
+view_alert_definition_condition_editor_operator_availability_goesUnknown = Goes unknown
+view_alert_definition_condition_editor_operator_availability_goesUp = Goes up
+view_alert_definition_condition_editor_option_availability = Availability Change
+view_alert_definition_condition_editor_option_drift = Drift Detection
+view_alert_definition_condition_editor_option_event = Event Detection
+view_alert_definition_condition_editor_option_label = Condition Type
+view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
+view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
+view_alert_definition_condition_editor_option_metric_range = Measurement Value Range
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
+view_alert_definition_condition_editor_option_operation = Operation Execution
+view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
+view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
+view_alert_definition_for_group = View Group Definition
+view_alert_definition_for_type = View Template
+view_alert_definition_notification_cliScript_editor_anotherUser = Another User
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
+view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
+view_alert_definition_notification_editor_field_configuration = Configuration
+view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
+view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
+view_alert_definition_notification_editor_field_sender = Sender
+view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
+view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
+view_alert_definition_notification_editor_none_available = No alert senders available
+view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
+view_alert_definition_notification_editor_sender = Notification Sender
+view_alert_definition_notification_editor_title_add = Add Notification
+view_alert_definition_notification_editor_title_edit = Edit Notification
+view_alert_definition_notification_operation_editor_common_operation = Operation
+view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
+view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
+view_alert_definition_notification_operation_editor_mode_this = This Resource
+view_alert_definition_notification_operation_editor_mode_title = Resource Selection Mode
+view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
+view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
+view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
+view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
+view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
+view_alert_definition_notification_operation_editor_specific_pick_button = Pick
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
+view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
+view_alert_definition_notification_operation_editor_specific_resource = Resource
+view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
+view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
+view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
+view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
+view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
+view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
+view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
+view_alert_definition_recovery_editor_none_available = None
+view_alert_definition_recovery_editor_recovery_alert = Recover Alert
+view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
+view_alert_definitions_create_failure = Alert definition creation failed
+view_alert_definitions_create_success = Alert definition successfully created
+view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
+view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
+view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
+view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
+view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
+view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
+view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
+view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
+view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
+view_alert_definitions_loadFailed = Failed to fetch alert definition data
+view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
+view_alert_definitions_table_title_group = Group Alert Definitions
+view_alert_definitions_table_title_resource = Resource Alert Definitions
+view_alert_definitions_update_failure = Alert definition update failed
+view_alert_definitions_update_success = Alert definition successfully updated
+view_alert_details_field_ack_at = Acknowledged at
+view_alert_details_field_ack_by = Acknowledged by
+view_alert_details_field_recovery_info = Recovery Info
+view_alert_details_loadFailed = Failed to fetch alert details
+view_alerts_ack_confirm = Acknowledge the selected alert(s)?
+view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
+view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
+view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
+view_alerts_ack_success = Successfully acknowledged {0} alerts
+view_alerts_delete_confirm = Delete the selected alert(s)?
+view_alerts_delete_confirm_all = Delete all alerts from this source?
+view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
+view_alerts_delete_failure_all = Failed to delete all alerts from this source
+view_alerts_delete_success = Successfully deleted {0} alerts
+view_alerts_field_ack_status = Status
+view_alerts_field_ack_status_ack = Ack ({0})
+view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
+view_alerts_field_ack_status_noAck = No Ack
+view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
+view_alerts_field_ack_subject = Acknowledge Subject
+view_alerts_field_ack_time = Acknowledge Time
+view_alerts_field_condition_text = Condition Text
+view_alerts_field_condition_text_many = Multiple Conditions
+view_alerts_field_condition_text_none = No Conditions
+view_alerts_field_condition_value = Condition Value
+view_alerts_field_enabled = Enabled
+view_alerts_field_modified_time = Modified Time
+view_alerts_field_parent = Parent
+view_alerts_field_priority = Priority
+view_alerts_field_protected = Protected
+view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
+view_alerts_loadFailed = Failed to fetch alerts data
+view_alerts_table_filter_priority = Priority Filter
+view_alerts_table_title_group = Group Alert History
+view_alerts_table_title_resource = Resource Alert History
+view_autoDiscoveryQ_committed = Committed
+view_autoDiscoveryQ_confirmSelect = Also select the platform children?
+view_autoDiscoveryQ_confirmSelectAll = Also select the children of each platform?
+view_autoDiscoveryQ_deleted = Deleted
+view_autoDiscoveryQ_deselectAll = Deselect All
+view_autoDiscoveryQ_field_discoveryTime = Discovery Time
+view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
+view_autoDiscoveryQ_field_parentId = Parent ID
+view_autoDiscoveryQ_ignore = Ignore
+view_autoDiscoveryQ_ignoreFailure = Failed to ignore Resources
+view_autoDiscoveryQ_ignoreInProgress = Ignoring the selected Resources...
+view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
Resources.
+view_autoDiscoveryQ_ignored = Ignored
+view_autoDiscoveryQ_importFailure = Failed to import Resources
+view_autoDiscoveryQ_importInProgress = Importing the selected Resources...
+view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
Resources.
+view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
+view_autoDiscoveryQ_newAndIgnored = New and Ignored
+view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
+view_autoDiscoveryQ_selectAll = Select All
+view_autoDiscoveryQ_showStatus = Show
+view_autoDiscoveryQ_title = Autodiscovery Queue
+view_autoDiscoveryQ_unignore = Unignore
+view_autoDiscoveryQ_unignoreFailure = Failed to unignore Resources
+view_autoDiscoveryQ_unignoreInProgress = Unignoring the selected Resources...
+view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
Resources.
+view_autoDiscoveryQ_uninventoried = Uninventoried
+view_bundleVersion_loadFailure = Failed to load bundle version data
+view_bundle_bundle = Bundle
+view_bundle_bundleDeployment = Bundle Deployment
+view_bundle_bundleDeployments = Bundle Deployments
+view_bundle_bundleDestinations = Bundle Destinations
+view_bundle_bundleFiles = Bundle Files
+view_bundle_bundleType = Bundle Type
+view_bundle_bundleVersion = Bundle Version
+view_bundle_bundleVersions = Bundle Versions
+view_bundle_bundles = Bundles
+view_bundle_createWizard_bundleDistro = Bundle Distribution
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
+view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
+view_bundle_createWizard_createFailure = Failed to create the bundle
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_recipeOption = Recipe
+view_bundle_createWizard_title = Create Bundle
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
+view_bundle_createWizard_uploadOption = Upload
+view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_bundle_createWizard_urlOption = URL
+view_bundle_createWizard_windowTitle = Bundle Creation Wizard
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
+view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted. However, this will not
remove any content from remote machines.
+view_bundle_deploy = Deploy
+view_bundle_deployDir = Deploy Directory
+view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
+view_bundle_deployWizard_deploying = Deploying...
+view_bundle_deployWizard_deploymentCreated = Created Deployment...
+view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
+view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
+view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
+view_bundle_deployWizard_error_5 = Failed to Create Deployment!
+view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
+view_bundle_deployWizard_error_7 = Failed to get deployment name.
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
+view_bundle_deployWizard_getDestStep = New Destination
+view_bundle_deployWizard_getDest_deployDir = Deployment Directory
+view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will be
deployed. This directory will be the same for all deployments on all resources but it is
relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
+view_bundle_deployWizard_getDest_desc = Destination Description
+view_bundle_deployWizard_getDest_destBaseDirName = Base Location
+view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
+view_bundle_deployWizard_getDest_name = Destination Name
+view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
+view_bundle_deployWizard_getInfoStep = Provide Deployment Information
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
+view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
+view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
+view_bundle_deployWizard_getOptionsStep = Deploy Options
+view_bundle_deployWizard_getOptions_deployLater = Deploy Later
+view_bundle_deployWizard_getOptions_deployNow = Deploy Now
+view_bundle_deployWizard_getOptions_deployTime = Deployment Time
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
+view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
+view_bundle_deployWizard_selectVersion_select = Select Version from List:
+view_bundle_deployWizard_title = Bundle Deployment Wizard
+view_bundle_deploy_action = Action
+view_bundle_deploy_backButton = Back to Destination
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment? This only deletes it from the database; all bundle content that was deployed
on remote machines will remain.
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
+view_bundle_deploy_deployedBy = Deployed By
+view_bundle_deploy_deploymentPlatforms = Deployment Resource
+view_bundle_deploy_installDetails = Install Details
+view_bundle_deploy_loadBundleFailure = Failed to find bundle
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
+view_bundle_deploy_loadFailure = Failed to load bundle deployment
+view_bundle_deploy_name = Deployment Name
+view_bundle_deploy_selectARow = Select a row to show installation details
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
+view_bundle_deploy_time = Deployment Time
+view_bundle_deployed = Deployed
+view_bundle_deployments = Deployments
+view_bundle_dest_backToBundle = Back to Bundle
+view_bundle_dest_baseDirName = Base Location
+view_bundle_dest_created = Created
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
+view_bundle_dest_deployDir = Deploy Directory
+view_bundle_dest_group = Group
+view_bundle_dest_lastDeployedVersion = Last Deployed Version
+view_bundle_dest_lastDeploymentDate = Last Deployment Date
+view_bundle_dest_lastDeploymentStatus = Last Deployment Status
+view_bundle_dest_loadFailure = Failed to load bundle destinations
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
+view_bundle_destinations = Destinations
+view_bundle_fileListView_fileSize = File Size
+view_bundle_fileListView_loadFailure = Failed to load bundle file data
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_files = Files
+view_bundle_latestVersion = Latest Version
+view_bundle_list_backToAll = Back to All Bundles
+view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
This will delete all of their versions, destinations and deployments from the database.
However, this will not remove any content from remote machines.
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_destinationsCount = Destinations Count
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
+view_bundle_list_error3 = Failed to load bundle
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
+view_bundle_list_tagUpdateFailure = Failed to update bundle tags
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
+view_bundle_list_versionsCount = Versions Count
+view_bundle_purge = Purge
+view_bundle_recipe = Recipe
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
+view_bundle_revert = Revert
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
+view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
+view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From] {0} [REVERT To]
{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
+view_bundle_revertWizard_revertStep_reverting = Reverting...
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
+view_bundle_revertWizard_title = Bundle Revert
+view_bundle_revertWizard_windowTitle = Bundle Revert Wizard
+view_bundle_tree_loadFailure = Failed to load bundle data
+view_bundle_version_backToBundle = Back to Bundle
+view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
+view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
+view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
This will not remove any content from remote machines.
+view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
+view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
+view_bundle_version_loadFailure = Failed to load bundle version
+view_bundle_versions = Versions
+view_configCompare_comparingConfigs = Comparing Configurations
+view_configCompare_configCompare = Configuration Comparison
+view_configEdit_addItem = Add Item to List
+view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
+view_configEdit_confirm_2 = Are you sure you want to delete this row?
+view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+view_configEdit_editRow = Edit Row
+view_configEdit_enterPropName = Enter the name of the property to be added.
+view_configEdit_error_1 = Configuration is not supported by this Resource.
+view_configEdit_error_2 = Connection settings are not supported by this Resource.
+view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already
used in the set.
+view_configEdit_files = Files
+view_configEdit_hideAll = Hide All
+view_configEdit_jumpToSection = Jump to Section
+view_configEdit_msg_1 = Added property [{0}] to the set.
+view_configEdit_msg_2 = Removed properties from the set.
+view_configEdit_msg_3 = [{0} {1}] deleted from list.
+view_configEdit_msg_4 = Item added to list.
+view_configEdit_properties = Properties
+view_configEdit_tooltip_1 = Delete the selected items from the list.
+view_configEdit_tooltip_2 = Add an item to the list.
+view_configEdit_viewRow = View Row
+view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
+view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
+view_configurationDetails_error_updateFailure = Failed to update configuration.
+view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
+view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
+view_configurationDetails_noConfigurationFetched = No configuration was retrieved. This
means that either the plugin failed to load the configuration or that configuration
collection is merely switched off in the connection settings.
+view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
+view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
+view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
+view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
+view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
+view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
+view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
+view_configurationHistoryList_rollback = Rollback
+view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
+view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
+view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
+view_configurationHistoryList_table_statusFailure = This configuration update failed
+view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
+view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
+view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
+view_configurationHistoryList_title = Configuration History
+view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
+view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
+view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings update
initiated.
+view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings update
initiated for Resource [{0}].
+view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
+view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
+view_core_loggedOut = Logged out
+view_core_noRecentAlerts = There are no recent alerts to report
+view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts
report
+view_core_serverUnreachable = The server is unreachable and may be down
+view_core_uncaught = Globally uncaught exception
+view_dashboardManager_deleteFail = Failed to delete dashboard.
+view_dashboardManager_deleted = Successfully deleted dashboard {0}
+view_dashboardManager_error = Failed to save dashboard to server
+view_dashboardManager_saved = Saved dashboard {0} to server
+view_dashboardManager_success = Saved dashboard
+view_dashboard_favorites_error1 = Failed to load favorite Resources.
+view_dashboardsManager_error1 = Failed to add new dashboard
+view_dashboardsManager_message_title_details = <h1>Welcome to
{0}</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>
+view_dashboards_confirm1 = Are you sure you want to delete
+view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
+view_dashboards_portlets_refresh_multiple_min = {0} minutes
+view_dashboards_portlets_refresh_none = No Refresh
+view_dashboards_portlets_refresh_one_min = 1 minute
+view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
+view_dashboards_title = Dashboard
+view_drift_button_detectNow = Detect Now
+view_drift_button_pinToDef = Pin to Definition
+view_drift_button_pinToDef_confirm = Pinning will set this snapshot as snapshot 0 for the
definition. All other existing snapshots will be removed from the definition. The
definition will be be marked as pinned and subsequent drift will always be reported
against the pinned snapshot. Pin this snapshot to the definition?
+view_drift_button_pinToTemplate = Pin to Template
+view_drift_button_pinToTemplate_confirm = After pinning, this snapshot will be set to the
initial snapshot for all definitions created using the template. If pinned to an existing
template then the template''s existing definitions will be pinned to the new
initial snapshot and their existing snapshots will be removed. Continue to template
selection?
+view_drift_carousel_sizeFilterLabel = Snapshot Display Max
+view_drift_carousel_startFilterLabel = Snapshot Start
+view_drift_category_fileAdded = File Added
+view_drift_category_fileChanged = File Changed
+view_drift_category_fileNew = Newly Detected
+view_drift_category_fileRemoved = File Removed
+view_drift_confirm_deleteAllDefs = Delete all drift detection definitions?
+view_drift_confirm_deleteDefs = Delete the selected drift detection definition(s)?
+view_drift_confirm_deleteTemplate = Warning! Deleting this template will also cause all
attached drift definitions to be deleted as well. Those attached definitions along with
all of their snapshots will be permanently removed from the system. Detached definitions
will not be removed. Are you sure you want to continue?
+view_drift_failure_deleteDefs = Failed to delete some or all drift detection
definitions.
+view_drift_failure_deleteTemplates = Failed to delete some or all of the drift templates
+view_drift_failure_detectNow = Failed to submit drift detection run request
+view_drift_failure_load = Failed to fetch drift instances
+view_drift_failure_pinToDef = Failed to pin snapshot to definition
+view_drift_success_defUpdated = Drift detection definition updated and will affect the
next detection run as applicable.
+view_drift_success_delete = Successfully deleted {0} drift instances
+view_drift_success_deleteDefs = Successfully deleted {0} drift detection definitions
+view_drift_success_deleteTemplate = Successfully deleted {0} drift templates
+view_drift_success_detectNow = Successfully submitted drift detection run request
+view_drift_success_pinToDef = Successfully pinned snapshot {0} to drift definition.
+view_drift_success_templateUpdated = Drift template updated and changes pushed to
attached definitions.
+view_drift_table_attached = Attached?
+view_drift_table_baseDir = Base Directory
+view_drift_table_driftHandlingMode = Drift Handling
+view_drift_table_driftHandlingMode_normal = normal
+view_drift_table_driftHandlingMode_plannedChanges = planned changes
+view_drift_table_hover_defNotPinned = The drift definition is not pinned Click to view
the initial snapshot.
+view_drift_table_hover_defPinned = The drift definition is pinned to its initial
snapshot. Click to view the initial snapshot.
+view_drift_table_hover_edit = Click to view or edit the drift definition or template
properties.
+view_drift_table_hover_outOfCompliance_drift = There is drift
+view_drift_table_hover_outOfCompliance_noBaseDir = The base directory does not exist
+view_drift_table_hover_templateNotPinned = The drift template is not pinned to a
snapshot.
+view_drift_table_hover_templatePinned = The drift template is pinned to a snapshot.
Click to view the pinned snapshot.
+view_drift_table_newFile = New File
+view_drift_table_oldFile = Old File
+view_drift_table_pinned = Pinned?
+view_drift_table_resourceDef = Resource Drift Detection Definition
+view_drift_table_resourceHistory = Resource Drift History
+view_drift_table_snapshot = Snapshot
+view_drift_table_snapshotTime = Snapshot Time
+view_drift_table_template = Template
+view_drift_table_title_initialSnapshot = Initial Snapshot for Definition [{0}] : Pinned =
[{1}]
+view_drift_table_title_snapshot = Snapshot [{0}] for Definition [{1}]
+view_drift_table_title_templateSnapshot = Pinned Snapshot for Template [{0}]
+view_drift_wizard_addDef_failure = Failed to add new drift detection definition [{0}]
+view_drift_wizard_addDef_infoStepHelp = Each drift detection definition describes a set
of files for which drift monitoring will be performed. The definition can be enabled and
disabled, defines the detection run interval, and specifies a base directory and optional
file filters. For each resource type offering drift detection there will be one or more
predefined templates to use as a starting definition, which can then be edited.
+view_drift_wizard_addDef_infoStepName = Select the Template for the new Drift Detection
Definition
+view_drift_wizard_addDef_success = Successfully added new drift detection definition
[{0}]. Agent(s) will be updated.
+view_drift_wizard_addDef_templatePrompt = Drift Definition Templates
+view_drift_wizard_addDef_title = Add Drift Detection Definition for Resource of Type
[{0}]
+view_drift_wizard_addDef_windowTitle = Add Drift Detection Definition Wizard
+view_drift_wizard_addTemplate_failure = Failed to add new drift template [{0}]
+view_drift_wizard_addTemplate_infoStepHelp = Each drift template is derived from an
existing template. This provides a quick way to build new templates that are similar to
existing templates, or originate with plugin defined templates. Like a drift definition,
the template describes a set of files for which drift monitoring will be performed.
Depending on the situation a definition derived from the template may or may not be
allowed to alter the file set, or change other settings. Template names must be unique
within a resource type.
+view_drift_wizard_addTemplate_infoStepName = Select the Starting Template
+view_drift_wizard_addTemplate_success = Successfully added new drift template [{0}].
+view_drift_wizard_addTemplate_title = Add Drift Definition Template for Type [{0}]
+view_drift_wizard_addTemplate_windowTitle = Add Drift Definition Template Wizard
+view_drift_wizard_pinTemplate_confirmNotPinned = Once pinned each current and future
drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue pinning
the template to the snapshot?
+view_drift_wizard_pinTemplate_confirmPinned = Warning! This template is already pinned.
The template can be re-pinned to this new snapshot. Once re-pinned each current and
future drift definition for the template will have its initial snapshot set to the
template''s pinned snapshot. Existing definitions for this template will be reset
to the new initial snapshot, and all exsiting snapshots will be removed. Continue
re-pinning the template with this new snapshot?
+view_drift_wizard_pinTemplate_duplicate_name_error = Template name must be unique
+view_drift_wizard_pinTemplate_failure = Failed to pin snapshot to drift template [{0}]
+view_drift_wizard_pinTemplate_infoStepExistingTemplate = Pin to ExistingTemplate
+view_drift_wizard_pinTemplate_infoStepHelp = Once pinned each current and future drift
definition for that template will have its initial snapshot set to the template''s
pinned snapshot. And the definition itself will be marked as pinned. This is used to
detect drift from an expected file set. Note that existing definitions for this template
will be reset to the new initial snapshot, and all exsiting snapshots will be removed.
+view_drift_wizard_pinTemplate_infoStepName = Select the Template to be Pinned
+view_drift_wizard_pinTemplate_infoStepNewTemplate = Pin to New Template (derived from the
snapshot''s Drift Definition)
+view_drift_wizard_pinTemplate_infoStepRadioHelp = The snapshot can be pinned to a new or
existing drift template. The ''New Template" option allows the user to
promote a trusted definition and snapshot, at the resource level, to the type level. The
new template can then be applied to members of the type. The new template is initially a
copy of the snapshot''s drift definition but can then be edited in the next step.
The name should be changed and must be a unique drift template name for the type. The
"Existing Template" option allows the user to pin, or re-pin, an existing
template with the selected snapshot. To be valid, the existing template must monitor the
same directories as the snapshot''s definition. The selection box displays only
valid existing templates. If there are no valid existing templates this option can not be
selected.
+view_drift_wizard_pinTemplate_infoStepRadioTitle = Template Selection
+view_drift_wizard_pinTemplate_infoStepSelectBlocked = There are no existing templates
that monitor the same directories as the snapshot''s definition. Select the
"New Template" option to continue.
+view_drift_wizard_pinTemplate_infoStepSelectTitle = Existing Templates
+view_drift_wizard_pinTemplate_success = Successfully pinned the drift template [{0}].
+view_drift_wizard_pinTemplate_title = Pin Snapshot [{0}] of Definition [{1}] to a Drift
Template for type [{2}]
+view_drift_wizard_pinTemplate_windowTitle = Pin Drift Definition Template Wizard
+view_dynagroup_children = DynaGroup Children
+view_dynagroup_compatible = Compatible
+view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
+view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
+view_dynagroup_definitionLoadFailure = Failed to load group definitions
+view_dynagroup_definitions = DynaGroup Definitions
+view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
+view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
+view_dynagroup_editing = Editing [{0}]
+view_dynagroup_exprBuilder_addExpression = Add Expression
+view_dynagroup_exprBuilder_comparisonType = Comparison Type
+view_dynagroup_exprBuilder_comparisonType_contains = contains
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_equals = equals
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
+view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
+view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
+view_dynagroup_exprBuilder_expression = Expression
+view_dynagroup_exprBuilder_expressionType = Expression Type
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
+view_dynagroup_exprBuilder_expressionType_resource = Resource
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
+view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
+view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
+view_dynagroup_exprBuilder_expressionType_trait = Trait
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --No plugins--
+view_dynagroup_exprBuilder_noProperties = --No properties--
+view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
+view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
+view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
+view_dynagroup_exprBuilder_propertyName = Property Name
+view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
+view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
+view_dynagroup_exprBuilder_resource = Resource
+view_dynagroup_exprBuilder_resourceType = Resource Type
+view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+view_dynagroup_exprBuilder_savedExpression = Saved Expression
+view_dynagroup_exprBuilder_title = Expression Builder
+view_dynagroup_exprBuilder_unset = Unset
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
+view_dynagroup_expression = Expression
+view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
+view_dynagroup_expressionSet = Expression Set
+view_dynagroup_lastCalculationTime = Last Calculation Time
+view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
+view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
+view_dynagroup_mixed = Mixed
+view_dynagroup_newGroupDefinition = New Group Definition
+view_dynagroup_nextCalculationTime = Next Calculation Time
+view_dynagroup_permDenied = You do not have permission to view group definitions
+view_dynagroup_recalcFailure = Failed to recalculate this group definition
+view_dynagroup_recalcFailureSelection = Failed to recalculate the selected group
definitions
+view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
+view_dynagroup_recalculate = Recalculate
+view_dynagroup_recalculationInterval = Recalculation Interval (min)
+view_dynagroup_recursive = Recursive
+view_dynagroup_saveAndRecalculate = Save & Recalculate
+view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
+view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
+view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_groupConfigEdit_member = Member
+view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
+view_groupConfigEdit_saveReminder = You changed some settings - do not forget to save
those changes or they will be lost.\n
+view_groupConfigEdit_setAll = Set all values to:
+view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
+view_groupConfigEdit_unset = Unset
+view_groupConfigEdit_valsDiff = member values differ
+view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
+view_groupCreateWizard_createFailure = Failed to create the resource group [{0}] : {1}
+view_groupCreateWizard_createStepName = Group Settings
+view_groupCreateWizard_createStep_group_exists = Group with name [{0}] already exists
+view_groupCreateWizard_createStep_recursive = Recursive
+view_groupCreateWizard_createSuccessful_concise = You have created a new resource group
with name [{0}].
+view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
+view_groupCreateWizard_membersStepName = Select Members
+view_groupCreateWizard_title = Create Group
+view_groupCreateWizard_windowTitle = Create Group
+view_groupInventoryMembers_button_updateMembership = Update Membership...
+view_groupInventoryMembers_title_updateMembership = Update Membership
+view_group_detail_failLoad = Failed to load group for group with ID [{0}]
+view_group_detail_failLoadComp = Group with id [{0}] does not exist or is not accessible
+view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
+view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
+view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
+view_group_meas_schedules_title = Group Metric Collection Schedules
+view_group_membership_failFetch = Failed to fetch Resource Group
+view_group_membership_saveFailure = Failed to update membership of group [{0}]
+view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
+view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
+view_group_operationScheduleDetails_field_execute = Execute
+view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
+view_group_operationScheduleDetails_memberResource = Member Resource
+view_group_operationScheduleDetails_value_parallel = in parallel
+view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
+view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
+view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
+view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
+view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
+view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
+view_group_pluginConfig_members_statusDetails = Status Details
+view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
+view_group_pluginConfig_members_statusSuccess = This configuration update was successful
+view_group_pluginConfig_members_title = Group Connection Settings Member Histories
+view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
+view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
+view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_pluginConfig_table_statusDetails = Status Details
+view_group_pluginConfig_table_statusFailure = This group configuration update failed
+view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
+view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
+view_group_pluginConfig_table_title = Group Connection Settings History
+view_group_pluginConfig_table_viewMemberHistory = View Member History
+view_group_pluginConfig_table_viewSettings = View Settings
+view_group_pluginConfig_view_groupProperties = Group Properties
+view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
+view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
+view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
+view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
+view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
+view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
+view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
+view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
+view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
+view_group_resConfig_members_statusDetails = Status Details
+view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_resConfig_members_statusNochange = No changes were made to this configuration
+view_group_resConfig_members_statusSuccess = This configuration update was successful
+view_group_resConfig_members_title = Group Resource Configuration Member Histories
+view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
+view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_resConfig_table_failFetch = Failed to get group resource config history
+view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_resConfig_table_statusDetails = Status Details
+view_group_resConfig_table_statusFailure = This group configuration update failed
+view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
+view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_resConfig_table_statusSuccess = This group configuration update was
successful
+view_group_resConfig_table_title = Group Resource Configuration History
+view_group_resConfig_table_viewMemberHistory = View Member History
+view_group_resConfig_table_viewSettings = View Settings
+view_group_resConfig_view_groupProperties = Group Properties
+view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
+view_group_summary_compatible = Compatible
+view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
+view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
+view_group_summary_dynamic = Dynamic
+view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
+view_group_summary_groupDefinition = Group Definition
+view_group_summary_memberCount = Member Count
+view_group_summary_memberType = Member Type
+view_group_summary_mixed = Mixed
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
+view_group_summary_recursive = Recursive
+view_helpTop_description = This section provides access to documentation, tutorials,
version, and other helpful information.
+view_help_section_product = Product
+view_help_section_product_about = About
+view_inventory_adq = Discovery Queue
+view_inventory_allGroups = All Groups
+view_inventory_allResources = All Resources
+view_inventory_collectionInterval = Collection Interval
+view_inventory_dynagroupDefs = Dynagroup Definitions
+view_inventory_eventDetails_loadFailed = An error occurred loading the event details
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
+view_inventory_eventHistory_details = Details
+view_inventory_eventHistory_detailsFilter = Details Filter
+view_inventory_eventHistory_groupEventHistory = Group Event History
+view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
+view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
+view_inventory_eventHistory_resourceEventHistory = Resource Event History
+view_inventory_eventHistory_severity = Severity
+view_inventory_eventHistory_severityFilter = Severity Filter
+view_inventory_eventHistory_sourceFilter = Source Filter
+view_inventory_eventHistory_sourceLocation = Source Location
+view_inventory_eventHistory_timestamp = Timestamp
+view_inventory_groups = Groups
+view_inventory_groups_children = Children
+view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
+view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
+view_inventory_groups_descendants = Descendants
+view_inventory_groups_loadFailed = Failed to load group composite data
+view_inventory_mixed = mixed
+view_inventory_platforms = Platforms
+view_inventory_problemGroups = Problem Groups
+view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
+view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
+view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_deleteSuccessful = A request to perform the resource deletion
has been submitted successfully to the agent(s).
+view_inventory_resources_disableConfirm = Are you sure you want to disable the selected
resources? While disabled availabilities reported from the agent will be ignored.
Disabling can be useful for resources that are expected to be down as part of normal
operations or maintenance.
+view_inventory_resources_disableFailed = Failed to disable the selected resources.
+view_inventory_resources_disableSuccessful = You have successfully disabled the selected
resources and their children, [{0}] resources.
+view_inventory_resources_enableConfirm = Are you sure you want to enable the selected
resources? When enabled the availability will be set to UNKNOWN until the agents next
report availability for the resources. The agents will be requested to report the current
availabilities at their earliest convenience.
+view_inventory_resources_enableFailed = Failed to enable the selected resources.
+view_inventory_resources_enableSuccessful = You have successfully enabled the selected
resources and their children, [{0}] resources.
+view_inventory_resources_loadFailed = Failed to load resource composite data
+view_inventory_resources_members = Member Resources
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
+view_inventory_sectionHelp = From this section, newly discovered Resources, inventoried
Resources, and Groups can be viewed and managed.
+view_inventory_servers = Servers
+view_inventory_serversTop = Servers - Top Level Imports
+view_inventory_services = Services
+view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
+view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
+view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
+view_inventory_summary_agent_last_title = Last Received Availability Report
+view_inventory_summary_agent_status_title = Agent Communications Status
+view_inventory_summary_agent_title = Agent Managing this Resource
+view_inventory_unavailableServers = Unavailable Servers
+view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
+view_login_invalidEmail = Invalid e-mail address
+view_login_login = Login
+view_login_logout = Logout
+view_login_noBackend = The backend datasource is unavailable.
+view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.
+view_login_noUser = The username or password provided does not match our records.
+view_login_prompt = Please Login
+view_login_registerLater = (Cancel - Complete registration later.)
+view_login_registerLdapSuccess = Successfully registered the new LDAP User.
+view_login_registerUser = Register User
+view_login_welcomeMsg = Welcome to {0}! <br/><br/> Enter/update the following
fields to complete your registration process.<br/> Once you click "OK",
you will be logged in.<br/><br/>
+view_measureRange_last = Time Range - Previous
+view_measureRange_simple = Simple...
+view_measureRange_start = Time Range - Start
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
+view_measureTable_live_title = Live Data
+view_measure_nan = --no data available--
+view_measurementOob_title = Suspect Metrics
+view_menuBar_logout = Logout
+view_messageCenter_clearAllMessages = Clear All Messages
+view_messageCenter_lastNMessages = Last {0} Messages
+view_messageCenter_maxMessages = Max Messages
+view_messageCenter_messageBarShowDetails = Show Details
+view_messageCenter_messageDetail = Detail
+view_messageCenter_messageSeverity = Severity
+view_messageCenter_messageTime = Time
+view_messageCenter_messageTitle = Message Center
+view_messageCenter_noRecentMessages = No Recent Messages
+view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_metric_traits = Traits
+view_metric_viewTraitHistory = Value History for Trait [{0}]
+view_operationHistoryDetails_dateCompleted = Date Completed
+view_operationHistoryDetails_dateSubmitted = Date Submitted
+view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
+view_operationHistoryDetails_noResults = This operation does not return any results.
+view_operationHistoryDetails_operation = Operation
+view_operationHistoryDetails_parameters = Parameters
+view_operationHistoryDetails_requestor = Requestor
+view_operationHistoryDetails_results = Results
+view_operationHistoryDetails_status = Status
+view_operationHistoryList_button_forceDelete = Force Delete
+view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_notYetStarted = not yet started
+view_operationHistoryList_title = Operation History
+view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
+view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
+view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
+view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
+view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the {0} Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
+view_operationScheduleDetails_field_description = Description
+view_operationScheduleDetails_field_parameters = Parameters
+view_operationScheduleDetails_field_timeout = Timeout
+view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
+view_operationScheduleDetails_operationSchedule = Operation Schedule
+view_portlet_autodiscovery_setting_platforms = discovered platforms
+view_portlet_configure_definitionDesc = The configuration settings for the portlet.
+view_portlet_configure_definitionTitle = Portlet Configuration
+view_portlet_configure_needed = Click the Settings button to configure this portlet.
+view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
+view_portlet_defaultName_autodiscovery = Discovery Queue
+view_portlet_defaultName_favoriteResources = Favorite Resources
+view_portlet_defaultName_groupMetric = Resource Group Metric Graph
+view_portlet_defaultName_group_alerts = Group: Alerts
+view_portlet_defaultName_group_bundles = Group: Bundle Deployments
+view_portlet_defaultName_group_config_updates = Group: Configuration Updates
+view_portlet_defaultName_group_events = Group: Event Counts
+view_portlet_defaultName_group_metrics = Group: Metrics
+view_portlet_defaultName_group_oobs = Group: OOB Conditions
+view_portlet_defaultName_group_operations = Group: Operations
+view_portlet_defaultName_group_pkg_hisory = Group: Package History
+view_portlet_defaultName_inventorySummary = Inventory Summary
+view_portlet_defaultName_mashup = Mashup
+view_portlet_defaultName_message = Message
+view_portlet_defaultName_operations = Recent Operations
+view_portlet_defaultName_platformSummary = Platform Utilization
+view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
+view_portlet_defaultName_recentAlerts = Recent Alerts
+view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
+view_portlet_defaultName_resourceMetric = Resource Metric Graph
+view_portlet_defaultName_resource_alerts = Resource: Alerts
+view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
+view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
+view_portlet_defaultName_resource_events = Resource: Event Counts
+view_portlet_defaultName_resource_metrics = Resource: Measurements
+view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
+view_portlet_defaultName_resource_operations = Resource: Operations
+view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
+view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
+view_portlet_graph_configure_resource_graph = The resource to graph
+view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
+view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
+view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
+view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
+view_portlet_help_none = There is no help available for this portlet.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
+view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
+view_portlet_help_recentDrifts = This portlet displays recent file drift on the current
user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
+view_portlet_inventory_error1 = Failed to retrieve inventory summary
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_message_title = The message to display.
+view_portlet_operations_config_completed = completed operations
+view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
+view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
+view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
+view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
+view_portlet_operations_config_show_last = show Last
+view_portlet_operations_config_show_next = show Next
+view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
+view_portlet_platform_platform_error_1 = Failed to load platform metrics
+view_portlet_platform_type_error_1 = Could not load type data
+view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
+view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
+view_portlet_problemResources_config_display_range2 = From {0} to {1}
+view_portlet_problemResources_maxDisplaySetting = maximum resources.
+view_portlet_recentAlerts_config_members = Select Members
+view_portlet_recentAlerts_config_priority_label = priority Alerts,
+view_portlet_recentAlerts_config_when = within the past
+view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
+view_portlet_recentlyAdded_error1 = Failed to load recently added resources
+view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
+view_portlet_results_empty = No results found using specified criteria.
+view_remoteAgentInstall_agentStatus = Agent Status
+view_remoteAgentInstall_agentStatusDefault = -Click Update Status Button-
+view_remoteAgentInstall_buttonFindAgent = Find Agent
+view_remoteAgentInstall_connInfo = Connection Information
+view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
+view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
+view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
+view_remoteAgentInstall_error_4 = Failed to install agent
+view_remoteAgentInstall_error_5 = Failed to start agent
+view_remoteAgentInstall_error_6 = Failed to stop agent
+view_remoteAgentInstall_installAgent = Install Agent
+view_remoteAgentInstall_installInfo = Agent Installation Information
+view_remoteAgentInstall_installPath = Agent Install Path
+view_remoteAgentInstall_owner = Owner
+view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
+view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
+view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
+view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
+view_remoteAgentInstall_result = Result
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = Start Agent
+view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
+view_remoteAgentInstall_step = Step
+view_remoteAgentInstall_stopAgent = Stop Agent
+view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
+view_remoteAgentInstall_success = Agent installation complete
+view_remoteAgentInstall_updateStatus = Update Status
+view_reportsTop_description = This section provides access to global reports.
+view_reportsTop_title = Reports
+view_reports_alertDefinitions = Alert Definitions
+view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
+view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
+view_reports_driftCompliance = Drift Compliance
+view_reports_inventorySummary_failFetch = Failed to get inventory summary
+view_reports_platforms = Platform Utilization
+view_reports_subsystems = Subsystems
+view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
+view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
+view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
+view_resource_inventory_activity_changed_by = Changed by
+view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
+view_resource_inventory_activity_no_recent_alerts = No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history = No configuration change
history
+view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob = No OOB conditions found
+view_resource_inventory_activity_no_recent_operations = No recent operation history
+view_resource_inventory_activity_no_recent_pkg_history = No recent package history
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
+view_resource_monitor_availability_availability = Availability
+view_resource_monitor_availability_availability_tooltip = Percentage of time the resource
has been UP compared to the times it was down and disabled
+view_resource_monitor_availability_currentAsOf = This data is current as of {0}
+view_resource_monitor_availability_currentStatus = Current Status
+view_resource_monitor_availability_currentStatus_value = This resource has been {0} since
{1}
+view_resource_monitor_availability_disabled = Disabled
+view_resource_monitor_availability_disabledTime = Disabled Time
+view_resource_monitor_availability_disabledTime_tooltip = The cumulative amount of time
the resource has been DISABLED
+view_resource_monitor_availability_disabled_tooltip = Percentage of time the resource has
been DISABLED compared to the times it was up and down
+view_resource_monitor_availability_down = Down
+view_resource_monitor_availability_down_tooltip = Percentage of time the resource has
been DOWN compared to the times it was up and disabled
+view_resource_monitor_availability_downtime = Downtime
+view_resource_monitor_availability_downtime_tooltip = The cumulative amount of time the
resource has been DOWN
+view_resource_monitor_availability_loadFailed = Failed to load availability history
+view_resource_monitor_availability_mtbf = MTBF
+view_resource_monitor_availability_mtbf_tooltip = Mean Time Before Failure - in short,
this indicates the average time spent in the UP state prior to going DOWN
+view_resource_monitor_availability_mttr = MTTR
+view_resource_monitor_availability_mttr_tooltip = Mean Time To Recovery - in short, this
indicates the average time spent in the DOWN state prior to going UP again
+view_resource_monitor_availability_numDisabled = Number of Times Disabled
+view_resource_monitor_availability_numDisabled_tooltip = The total number of times this
resource has entered the DISABLED state
+view_resource_monitor_availability_numFailures = Number of Failures
+view_resource_monitor_availability_numFailures_tooltip = The total number of times this
resource has entered the DOWN state
+view_resource_monitor_availability_summaryError = Failed to load resource availability
summary
+view_resource_monitor_availability_unknown = This resource was in an unknown state for
{0}
+view_resource_monitor_availability_uptime = Uptime
+view_resource_monitor_availability_uptime_tooltip = The cumulative amount of time the
resource has been UP
+view_resource_monitor_calltime_average = Average
+view_resource_monitor_calltime_count = Count
+view_resource_monitor_calltime_destination = Call Destination
+view_resource_monitor_calltime_editFailed = Call time data can not be edited
+view_resource_monitor_calltime_loadFailed = Could not load call time data
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_calltime_maximum = Maximum
+view_resource_monitor_calltime_minimum = Minimum
+view_resource_monitor_calltime_title = Call Time Data
+view_resource_monitor_detailed_graph_label = Detailed Graph
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
+view_resource_monitor_graphs_loadFailed = Failed to load graph data
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
+view_resource_monitor_graphs_noneAvailable = No graphs available
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_min = Minimum
+view_resource_title_component_errors_cleanup = After addressing the issue, you will need
to delete the message below to clear the 'managed component error' icon from the
previous screen.
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
+view_resource_title_tagUpdateFailed = Failed to update resource tags
+view_searchBar_defaultPattern = name your pattern
+view_searchBar_instructional_failSuggest = Failed to generate suggestions, see server log
for possible errors
+view_searchBar_instructional_noSuggest = No matches, enter a different pattern
+view_searchBar_instructional_refresh = Failed to retrieve saved searches, please refresh
page
+view_searchBar_savedSearch_delete = Successfully deleted saved search [{0}]
+view_searchBar_savedSearch_failDelete = Failed to delete saved search with name [{0}]
+view_searchBar_savedSearch_failFind = Failed to find saved search with name [{0}]
+view_searchBar_savedSearch_failRename = Failed to rename saved search with name [{0}]
+view_searchBar_savedSearch_failSave = Failed to create saved search with name [{0}]
+view_searchBar_savedSearch_rename = Successfully renamed saved search to [{0}]
+view_searchBar_savedSearch_save = Successfully created saved search [{0}]
+view_searchGUI_loginStatus = Unable to determine login status, check server status
+view_selector_assigned = Assigned {0}
+view_selector_available = Available {0}
+view_subTab_error_disabled = Cannot select disabled subTab [{0}].
+view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
+view_summaryOverviewForm_field_description = Description
+view_summaryOverviewForm_field_location = Location
+view_summaryOverviewForm_field_name = Name
+view_summaryOverviewForm_field_type = Type
+view_summaryOverviewForm_field_version = Version
+view_summaryOverviewForm_header_summary = Summary
+view_summaryOverviewForm_label_plugin = Plugin:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
+view_summaryOverview_header_detectedErrors = Detected Errors
+view_summaryOverview_title_errorDetailsWindow = Error Details
+view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
+view_tableSection_backButton = Back to List
+view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
+view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
+view_table_drawFail = Failed to draw Table [{0}].
+view_table_matchingRows = Matching Rows: {0} (selected: {1})
+view_table_totalRows = Total Rows: {0} (selected: {1})
+view_table_totalRowsUnknown = Total Rows: ?
+view_tabs_common_activity = Activity
+view_tabs_common_agent = Agent
+view_tabs_common_availability = Availability
+view_tabs_common_calltime = Calltime
+view_tabs_common_child_history = Child History
+view_tabs_common_child_resources = Child Resources
+view_tabs_common_connectionSettings = Connection Settings
+view_tabs_common_connectionSettingsHistory = Connection Settings History
+view_tabs_common_content = Content
+view_tabs_common_current = Current
+view_tabs_common_dashboard = Dashboard
+view_tabs_common_deployed = Deployed
+view_tabs_common_drift = Drift
+view_tabs_common_events = Events
+view_tabs_common_graphs = Graphs
+view_tabs_common_group_members = Group Members
+view_tabs_common_group_membership = Group Membership
+view_tabs_common_groups = Groups
+view_tabs_common_history = History
+view_tabs_common_inventory = Inventory
+view_tabs_common_members = Members
+view_tabs_common_monitoring = Monitoring
+view_tabs_common_overview = Overview
+view_tabs_common_schedule = Schedule
+view_tabs_common_schedules = Schedules
+view_tabs_common_subscriptions = Subscriptions
+view_tabs_common_tables = Tables
+view_tabs_common_timeline = Timeline
+view_tabs_common_traits = Traits
+view_tabs_invalidSubTab = Invalid subtab: {0}
+view_tabs_invalidTab = Invalid tab: {0}
+view_tagCloud_deleteTag = Delete Tag
+view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
+view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
+view_tagCloud_error_fetchFailure = Failed to load tags.
+view_tagCloud_error_tagUsedCount = Tag used {0} times.
+view_taggedResources_title = Tagged Resources
+view_tags_error_1 = Failed to load Tags
+view_tags_tags = Tags
+view_tags_tooltip_1 = Click to remove this Tag
+view_tags_tooltip_2 = Click to edit Tags
+view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g.
it:env=QA, or owner=John)
+view_testTop_description = This section contains pages for testing various GUI
components.
+view_testTop_title = Test
+view_titleBar_common_addedFav = You have added [{0}] as a favorite
+view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
+view_titleBar_common_clickToAddFav = Click to add this as a favorite
+view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
+view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
+view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
+view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
+view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
+view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
+view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
+view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
+view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
+view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
+view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
+view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
+view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
+view_tree_common_contextMenu_loadFailed_operations = Failure to start wizard for running
operations
+view_tree_common_contextMenu_measurements = Measurements
+view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
+view_tree_common_loadFailed_children = Failed to load children for node
+view_tree_common_loadFailed_create = Failed to create view for this node
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree
+view_tree_common_loadFailed_generic = Failed to load data for tree
+view_tree_common_loadFailed_group = Failed to load group with id [{0}]
+view_tree_common_loadFailed_groupTree = Failed to load group tree
+view_tree_common_loadFailed_node = Failed to load data for this node
+view_tree_common_loadFailed_root = Failed to load root for tree
+view_tree_common_loadFailed_selection = Failed to select this node
+view_tree_common_loadFailed_update = Failed to update view for this node
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
+view_type_parentId = Parent ID
+view_type_resourceTypes = Resource Types
+view_type_typeTreeLoadFailure = Failed to load resource type tree data
+view_upload_alreadyUploaded = File has already been uploaded
+view_upload_bundleDistFile = Distribution File
+view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
+view_upload_error_file = Error uploading file
+view_upload_error_fileName = Error uploading file [{0}]
+view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
+view_upload_error_packageVersionFile = Error uploading Package Version File
+view_upload_error_results = Error uploading file, unexpected results: [{0}]
+view_upload_inProgress = Can not submit, upload is currently in progress
+view_upload_prompt_1 = Please select a file to upload [{0}]
+view_upload_prompt_2 = File to Upload
+view_upload_success = File successfully uploaded
+view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
+view_upload_tooltip_1b = Select a file to upload, then click Next
+view_upload_tooltip_2 = File upload had previously failed
+view_upload_upload = Upload
+view_upload_uploadFile = UploadFile
+widget_colorPicker_tooltip = Click to select a new color
+widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
+widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
+widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
+widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
+widget_jobTriggerEditor_field_cronExpression = Cron Expression
+widget_jobTriggerEditor_field_mode = Schedule using
+widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
+widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
+widget_jobTriggerEditor_field_startType = Run
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
+widget_jobTriggerEditor_tab_examples = Examples
+widget_jobTriggerEditor_tab_format = Format
+widget_jobTriggerEditor_value_calendar = Calendar
+widget_jobTriggerEditor_value_cronExpression = Cron Expression
+widget_jobTriggerEditor_value_for = For
+widget_jobTriggerEditor_value_in = in
+widget_jobTriggerEditor_value_indefinitely = Indefinitely
+widget_jobTriggerEditor_value_later = Later
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_value_now = Now
+widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+widget_jobTriggerEditor_value_on = on
+widget_jobTriggerEditor_value_until = Until
+widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
+widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
+widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
+widget_recordEditor_error_operation = Operation failed. An error occurred
+widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
+widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
+widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} created.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+widget_recordEditor_title_edit = Edit {0} [{1}]
+widget_recordEditor_title_new = Create New {0}
+widget_recordEditor_title_view = View {0} [{1}]
+widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
+widget_resourceFactoryWizard_archPrompt = Package Architecture
+widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Template
+widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Configuration Template
+widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
+widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
+widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
+widget_resourceFactoryWizard_editConfigStepName = Deployment Options
+widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
+widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
+widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
+widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
+widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
+widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
+widget_resourceFactoryWizard_infoStepName = Resource Information
+widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
+widget_resourceFactoryWizard_namePrompt = New Resource Name
+widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
+widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the {0} Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = Failed to upload file
+widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
+widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
+widget_resourceFactoryWizard_versionPrompt = Package Version
+widget_resourceSelector_groupCategory = Group Category
+widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
+widget_resourceSelector_pleaseSelectResource = Please select a resource
+widget_resourceSelector_selectMultipleResources = Select Resources
+widget_resourceSelector_selectResource = Select a Resource
+widget_typeCache_loadFail = Failed to load resource type metadata
+widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
+widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
+widget_typeTree_loadFail = Failed to load resource types
commit 5e5b9d9581e18b389046753b3c5e8d03067da42f
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Tue May 22 12:07:02 2012 +0200
[BZ 822905] - modified the unit tests for checking that the resource upgrade
is actually disabled after resource upgrade.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index becc7da..9fd5340 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1113,8 +1113,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
// inventory with the server side as well as to disallow any other
server-agent traffic during
// the upgrade phase. Not to mention the fact that no thread pools are
initialized yet by the
// time the upgrade kicks in..
- if (!resourceUpgradeDelegate.enabled()
- && (!syncedResources.isEmpty() || !unknownResourceIds.isEmpty()
|| !modifiedResourceIds.isEmpty())) {
+ if (!isResourceUpgradeActive() && (!syncedResources.isEmpty() ||
!unknownResourceIds.isEmpty() ||
+ !modifiedResourceIds.isEmpty())) {
performAvailabilityChecks(true);
this.inventoryThreadPoolExecutor.schedule((Callable<? extends
Object>) this.serviceScanExecutor, configuration.getChildResourceDiscoveryDelay(),
TimeUnit.SECONDS);
@@ -1205,7 +1205,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
//only actually schedule the scanning when we are finished with resource upgrade.
The resource upgrade
//happens before any scanning infrastructure is established.
- if (!resourceUpgradeDelegate.enabled() && scan) {
+ if (!isResourceUpgradeActive() && scan) {
log.info("Deleted resource #[" + resourceId + "] - this will
trigger a server scan now");
inventoryThreadPoolExecutor.submit((Callable<InventoryReport>)
this.serverScanExecutor);
}
@@ -2310,6 +2310,16 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
/**
+ * The resource upgrade should only occur during the {@link #initialize()} method and
should be
+ * switched off at all other times.
+ *
+ * @return true if resource upgrade is currently active, false otherwise
+ */
+ public boolean isResourceUpgradeActive() {
+ return resourceUpgradeDelegate.enabled();
+ }
+
+ /**
* Always use this before accessing the event listeners because this ensures
* thread safety.
*
@@ -2904,7 +2914,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
private void refreshResourceComponentState(ResourceContainer container, boolean
pluginConfigUpdated) {
- if (resourceUpgradeDelegate.enabled()) {
+ if (isResourceUpgradeActive()) {
//don't do anything during upgrade. The resources are only started during
the upgrade process.
return;
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTest.java
index f35965a..4ef4042 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/upgrade/ResourceUpgradeTest.java
@@ -107,6 +107,8 @@ public class ResourceUpgradeTest extends ResourceUpgradeTestBase {
assertEquals(discoveredResource.getResourceKey(), "resource-key-v2");
assertEquals(discoveredResource.getName(), "resource-name-v2");
assertEquals(discoveredResource.getDescription(),
"resource-description-v2");
+
+ checkUpgradeInactive();
}
@Test
@@ -171,6 +173,8 @@ public class ResourceUpgradeTest extends ResourceUpgradeTestBase {
assertEquals(discoveredResource.getResourceKey(), "resource-key-v1");
assertEquals(discoveredResource.getName(), "resource-name-v1");
assertEquals(discoveredResource.getDescription(),
"resource-description-v1");
+
+ checkUpgradeInactive();
}
@Test
@@ -226,6 +230,8 @@ public class ResourceUpgradeTest extends ResourceUpgradeTestBase {
assertFalse(marker.exists(),
"The upgrade seems to have occured even though there shouldn't have
been a resource to upgrade.");
+
+ checkUpgradeInactive();
}
@Test
@@ -272,6 +278,8 @@ public class ResourceUpgradeTest extends ResourceUpgradeTestBase {
assertFalse(marker.exists(),
"The discovery of the resource type with a failed upgraded resource must
not be executed but it was.");
+
+ checkUpgradeInactive();
}
private FakeServerInventory initialSyncAndDiscovery(String key, final InventoryStatus
requiredInventoryStatus)
@@ -349,5 +357,12 @@ public class ResourceUpgradeTest extends ResourceUpgradeTestBase {
assertTrue(marker.exists(),
"The upgrade success marker file wasn't found. This means the
upgrade didn't actually run.");
+
+ checkUpgradeInactive();
+ }
+
+ private void checkUpgradeInactive() {
+ InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ assertFalse(im.isResourceUpgradeActive(), "Resource upgrade shouldn't be
active once plugin container has initialized");
}
}
commit 0c9c18cf98a9207887172633fcadddfafd941eb8
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon May 21 15:58:37 2012 -0400
[820700] Add a negative test to justify cherry-picking the fix for this bug.
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
index b42a25c..7298914 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
@@ -1047,6 +1047,91 @@ public class AvailabilityManagerTest extends AbstractEJB3Test {
}
}
+ /**
+ * See if merging in AvailabilityReports from the agent work if it includes a stale
resource
+ *
+ * @throws Exception in case of error
+ */
+ @Test(enabled = ENABLE_TESTS)
+ public void testMergeReportWithStaleResource() throws Exception {
+ EntityManager em = beginTx();
+
+ try {
+ Availability avail;
+ AvailabilityReport report;
+
+ setupResource(em);
+ commitAndClose(em);
+ em = null;
+
+ long allAvailCount = setUpAvailabilities(em);
+
+ // we now have 1:00 UP, 1:20 DOWN, 1:40 UP
+ Subject overlord = LookupUtil.getSubjectManager().getOverlord();
+ avail = availabilityManager.getCurrentAvailabilityForResource(overlord,
theResource.getId());
+ assert avail.getAvailabilityType() == UP;
+ assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord,
theResource.getId()) == UP;
+
+ // add something after the start of last, but still be UP (result: nothing
added)
+ Long currentStartTime = avail.getStartTime();
+ avail = new Availability(theResource, (currentStartTime + 3600000), UP);
+ report = new AvailabilityReport(false, theAgent.getName());
+ report.addAvailability(avail);
+
+ // add something with a stale, non-existent resource. It should be ignored,
logging a message,
+ // and the rest of the report should be processed.
+ avail = new Availability(new Resource(898989), (currentStartTime + 3600000),
UP);
+ report.addAvailability(avail);
+
+ Thread.sleep(1000);
+ availabilityManager.mergeAvailabilityReport(report);
+
+ // the agent should have been updated, but no new rows in availability were
added
+ Agent agent =
LookupUtil.getAgentManager().getAgentByName(theAgent.getName());
+ Date lastReport = new Date(agent.getLastAvailabilityReport());
+ assert lastReport != null;
+ assert countAvailabilitiesInDB(null) == allAvailCount;
+ avail = availabilityManager.getCurrentAvailabilityForResource(overlord,
theResource.getId());
+
+ // should have returned availability3
+ // NOTE: availability3 never got an ID assigned, so we can't compare by
id
+ // assert avail.getId() == availability3.getId();
+ assert avail.getStartTime().equals(availability3.getStartTime());
+ assert avail.getAvailabilityType() == availability3.getAvailabilityType();
+ assert Math.abs(avail.getStartTime() - availability3.getStartTime()) <
1000;
+ assert avail.getEndTime() == null;
+ assert availability3.getEndTime() == null;
+
+ // change start after the start of last (result: add new avail row)
+ avail = new Availability(theResource, (currentStartTime + 7200000), DOWN);
+ report = new AvailabilityReport(false, theAgent.getName());
+ report.addAvailability(avail);
+ Thread.sleep(1000);
+ availabilityManager.mergeAvailabilityReport(report);
+
+ // the agent should have been updated and a new row in availability was added
(resource is now DOWN)
+ agent = LookupUtil.getAgentManager().getAgentByName(theAgent.getName());
+ assert new Date(agent.getLastAvailabilityReport()).after(lastReport);
+ assert countAvailabilitiesInDB(null) == (allAvailCount + 1);
+ assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord,
theResource.getId()) == DOWN;
+ Availability queriedAvail =
availabilityManager.getCurrentAvailabilityForResource(overlord,
+ theResource.getId());
+ assert queriedAvail.getId() > 0;
+ assert queriedAvail.getAvailabilityType() == avail.getAvailabilityType();
+ assert Math.abs(queriedAvail.getStartTime() - avail.getStartTime()) <
1000;
+ assert queriedAvail.getEndTime() == null;
+ assert avail.getEndTime() == null;
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw e;
+ } finally {
+ if (em != null) {
+ getTransactionManager().rollback();
+ em.close();
+ }
+ }
+ }
+
@Test(enabled = ENABLE_TESTS)
public void testMergeReportPerformance() throws Exception {
EntityManager em = beginTx();
commit 371b28e25d7ffef5d98f9da1f2646acd129c91ee
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon May 21 15:18:06 2012 -0400
[BZ 822713] Adding support for disabling tags in the UI
Tags are not supported in JON. We need a way to disable them at build
time. This commit adds a property to Messages.properties which is
filtered at build time and read by CoreGUI so that it can be determined
whether or not tags should be enabled.
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index f721fbe..c1db8e5 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -74,6 +74,8 @@
<!-- The locale that GWT should fallback to if the user specified an
unsupported locale via the 'locale' query
string parameter. -->
<gwt.fallback.locale>en</gwt.fallback.locale>
+
+ <enable.tags>true</enable.tags>
</properties>
<dependencies>
@@ -506,6 +508,18 @@
</build>
</profile>
+ <profile>
+ <id>disable-tags</id>
+ <activation>
+ <property>
+ <name>brew</name>
+ </property>
+ </activation>
+ <properties>
+ <enable.tags>false</enable.tags>
+ </properties>
+ </profile>
+
</profiles>
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index a1de5c6..1f2f25f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -112,7 +112,7 @@ public class CoreGUI implements EntryPoint,
ValueChangeHandler<String>, Event.Na
//spinder [BZ 731864] defining variable that can be set at build time to
enable/disable TAG ui components.
// This will be set to 'false' on the release branch.
- private static boolean enableTagsForUI = true;
+ private static boolean enableTagsForUI = Boolean.valueOf(MSG.enable_tags());
public static boolean isTagsEnabledForUI() {
return enableTagsForUI;
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index aab13dd..e38158d 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -2023,3 +2023,9 @@ widget_typeCache_loadFail = Failed to load resource type metadata
widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
widget_typeTree_loadFail = Failed to load resource types
+
+# The enable_tags property is not included here for localization. Since tags are not
+# supported for JON, we need a way to disable tags for JON builds. The enable_tags
property
+# which can be filtered at build time is read by CoreGUI to determine whether or not
tags
+# should be enabled in the UI.
+enable_tags = ${enable.tags}
commit 8b1a1ee940772540046ae5a9637491b70eecf9c8
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon May 21 15:01:42 2012 -0400
[BZ 822861] older tomcat versions (like Tomcat 5) do not even have this executorName
MBean attribute, make sure we account for this.
diff --git
a/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatConnectorDiscoveryComponent.java
b/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatConnectorDiscoveryComponent.java
index 8af6862..1591a5e 100644
---
a/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatConnectorDiscoveryComponent.java
+++
b/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatConnectorDiscoveryComponent.java
@@ -122,13 +122,15 @@ public class TomcatConnectorDiscoveryComponent extends
MBeanResourceDiscoveryCom
String connectorON =
pluginConfiguration.getSimpleValue(TomcatConnectorComponent.OBJECT_NAME_PROP, null);
if (connectorON != null) {
EmsBean connectorBean = connection.getBean(connectorON);
- EmsAttribute executorNameAttrib =
connectorBean.getAttribute("executorName");
- Object executorNameValue = executorNameAttrib.getValue();
- if (executorNameValue != null) {
- String executorName = executorNameValue.toString();
- if (!executorName.isEmpty() &&
!executorName.equalsIgnoreCase("Internal")) {
- pluginConfiguration.put(new PropertySimple(
- TomcatConnectorComponent.PLUGIN_CONFIG_SHARED_EXECUTOR,
executorName));
+ EmsAttribute executorNameAttrib =
connectorBean.getAttribute("executorName"); // older tomcat versions won't
have this attrib
+ if (executorNameAttrib != null) {
+ Object executorNameValue = executorNameAttrib.getValue();
+ if (executorNameValue != null) {
+ String executorName = executorNameValue.toString();
+ if (!executorName.isEmpty() &&
!executorName.equalsIgnoreCase("Internal")) {
+ pluginConfiguration.put(new PropertySimple(
+ TomcatConnectorComponent.PLUGIN_CONFIG_SHARED_EXECUTOR,
executorName));
+ }
}
}
}
commit 617c3a96b5b95525085ef0d8de7bc677fa17949f
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon May 21 14:41:28 2012 -0400
make sure the port offsets used by the itest AS7 instances are fully configurable
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index c08845a..d5b85e1 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -377,7 +377,7 @@
<fileset dir="${jboss7.home}/bin"
includes="*.sh"/>
</chmod>
<replace dir="${jboss7.home}"
- includes="standalone/configuration/standalone.xml,
domain/configuration/host.xml"
+ includes="standalone/configuration/standalone*.xml,
domain/configuration/host*.xml"
token="<inet-address "
value="<loopback-address "/>
</target>
</configuration>
@@ -430,6 +430,10 @@
<value>${jboss.standalone.portOffset}</value>
</property>
<property>
+ <name>jboss.domain.portOffset</name>
+ <value>${jboss.domain.portOffset}</value>
+ </property>
+ <property>
<name>jboss.standalone.nativeManagementPort</name>
<value>${jboss.standalone.nativeManagementPort}</value>
</property>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
index 9836a2d..0d23c26 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
@@ -106,8 +106,7 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
// "port" prop
String portString = pluginConfig.getSimpleValue("port", null);
Integer port = (portString != null) ? Integer.valueOf(portString) : null;
- String portOffsetString = System.getProperty(getPortOffsetSystemPropertyName());
- int portOffset = (portOffsetString != null) ? Integer.valueOf(portOffsetString) :
0;
+ int portOffset = getPortOffset();
Integer expectedPort = portOffset + 9990;
assertEquals(port, expectedPort, "Plugin config prop [port].");
@@ -138,6 +137,11 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
Assert.assertEquals(args, getExpectedStartScriptArgs(), "Plugin config prop
[startScriptArgs]");
}
+ protected int getPortOffset() {
+ String portOffsetString = System.getProperty(getPortOffsetSystemPropertyName());
+ return (portOffsetString != null) ? Integer.valueOf(portOffsetString) : 0;
+ }
+
protected void validateStartScriptEnv(Map<String, String> env) {
Assert.assertTrue(env.size() <= 4, env.toString());
@@ -249,8 +253,6 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
+ " processes: " + processes);
}
- protected abstract int getPortOffset();
-
private List<ProcessInfo> getServerProcesses() {
SystemInfo systemInfo = SystemInfoFactory.createSystemInfo();
return systemInfo
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
index 16c99c7..95a90e3 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
@@ -94,20 +94,16 @@ public class DomainServerComponentTest extends
AbstractServerComponentTest {
}
@Override
- protected int getPortOffset() {
- return 50000;
- }
-
- @Override
protected List<String> getExpectedStartScriptArgs() {
+ int portOffset = getPortOffset();
String [] args = new String[] {
"-Djboss.bind.address.management=127.0.0.1",
"-Djboss.bind.address=127.0.0.1",
"-Djboss.bind.address.unsecure=127.0.0.1",
- "-Djboss.socket.binding.port-offset=50000",
- "-Djboss.management.native.port=59999",
- "-Djboss.management.http.port=59990",
- "-Djboss.management.https.port=59943"
+ "-Djboss.socket.binding.port-offset=" + portOffset,
+ "-Djboss.management.native.port=" + (portOffset + 9999),
+ "-Djboss.management.http.port=" + (portOffset + 9990),
+ "-Djboss.management.https.port=" + (portOffset + 9943)
};
return Arrays.asList(args);
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
index e2ea581..4e0e954 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
@@ -163,7 +163,8 @@ public class StandaloneServerComponentTest extends
AbstractServerComponentTest {
"-Djboss.bind.address.management=127.0.0.1",
"-Djboss.bind.address=127.0.0.1",
"-Djboss.bind.address.unsecure=127.0.0.1",
- "-Djboss.socket.binding.port-offset=40000" };
+ "-Djboss.socket.binding.port-offset=" + getPortOffset()
+ };
return Arrays.asList(args);
}
@@ -172,9 +173,4 @@ public class StandaloneServerComponentTest extends
AbstractServerComponentTest {
super.killServerProcesses();
}
- @Override
- protected int getPortOffset() {
- return 40000;
- }
-
}
commit 569f7164c537e2966a6ba71a7e080404d719e82a
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon May 21 13:40:46 2012 -0400
[BZ 823558] another fix to the original fix - start() now initializes this.connection
before calling getAvailability() (
https://bugzilla.redhat.com/show_bug.cgi?id=823558)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 0d3b21d..b737e41 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -66,6 +66,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
* Base component for functionality that is common to Standalone Servers and Host
Controllers.
*
* @author Heiko W. Rupp
+ * @author Ian Springer
*/
public abstract class BaseServerComponent<T extends ResourceComponent<?>>
extends BaseComponent<T>
implements MeasurementFacet {
@@ -85,10 +86,10 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
super.start(resourceContext);
serverPluginConfig = new ServerPluginConfiguration(pluginConfiguration);
- validateServerAttributes();
connection = new ASConnection(serverPluginConfig.getHostname(),
serverPluginConfig.getPort(),
serverPluginConfig.getUser(), serverPluginConfig.getPassword());
- lastAvail = getAvailability();
+ @SuppressWarnings("UnusedDeclaration")
+ AvailabilityType avail = getAvailability();
logFileEventDelegate = new LogFileEventResourceComponentHelper(context);
logFileEventDelegate.startLogFileEventPollers();
startScriptConfig = new StartScriptConfiguration(pluginConfiguration);
commit 6c34875be9b2a1bc9494d95c7835be437f567118
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon May 21 13:13:32 2012 -0400
[BZ 823558] a small fix to the original fix - getAvailability() now throws
InvalidPluginConfigurationException when validation of server attributes fails
(
https://bugzilla.redhat.com/show_bug.cgi?id=823558)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 2abe6a4..0d3b21d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -101,18 +101,24 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
@Override
public AvailabilityType getAvailability() {
+ AvailabilityType avail;
try {
- @SuppressWarnings("UnusedDeclaration")
- String launchType = readAttribute("launch-type");
- if (lastAvail != AvailabilityType.UP) {
+ readAttribute("launch-type");
+ avail = AvailabilityType.UP;
+ } catch (Exception e) {
+ avail = AvailabilityType.DOWN;
+ }
+
+ try {
+ if ((avail == AvailabilityType.UP) && (lastAvail !=
AvailabilityType.UP)) {
validateServerAttributes();
log.info(getResourceDescription() + " has just come UP.");
}
- lastAvail = AvailabilityType.UP;
- } catch (Exception e) {
- lastAvail = AvailabilityType.DOWN;
+ } finally {
+ lastAvail = avail;
}
- return lastAvail;
+
+ return avail;
}
private void validateServerAttributes() throws InvalidPluginConfigurationException {
commit bf140eb62ee72b2b37e12bc2f9c6bb0e045c84ec
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon May 21 12:13:22 2012 -0400
[BZ 823558] check that server's basedir has not changed since discovery needs to
be added to server components' start() method
(
https://bugzilla.redhat.com/show_bug.cgi?id=823558)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 5f9aee4..49dfc1d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -137,6 +137,10 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
return (res != null && res.isSuccess()) ? AvailabilityType.UP :
AvailabilityType.DOWN;
}
+ protected String getResourceDescription() {
+ return context.getResourceType() + " [" + context.getResourceKey() +
"]";
+ }
+
private BaseServerComponent findServerComponent() {
BaseComponent<?> component = this;
while ((component != null) && !(component instanceof
BaseServerComponent)) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 340d260..2abe6a4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -78,14 +78,17 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
private LogFileEventResourceComponentHelper logFileEventDelegate;
private StartScriptConfiguration startScriptConfig;
private ServerPluginConfiguration serverPluginConfig;
+ private AvailabilityType lastAvail;
@Override
public void start(ResourceContext<T> resourceContext) throws
InvalidPluginConfigurationException, Exception {
super.start(resourceContext);
serverPluginConfig = new ServerPluginConfiguration(pluginConfiguration);
+ validateServerAttributes();
connection = new ASConnection(serverPluginConfig.getHostname(),
serverPluginConfig.getPort(),
serverPluginConfig.getUser(), serverPluginConfig.getPassword());
+ lastAvail = getAvailability();
logFileEventDelegate = new LogFileEventResourceComponentHelper(context);
logFileEventDelegate.startLogFileEventPollers();
startScriptConfig = new StartScriptConfiguration(pluginConfiguration);
@@ -98,39 +101,79 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
@Override
public AvailabilityType getAvailability() {
- // Validate the mode (e.g. STANDALONE or DOMAIN).
- String runtimeMode;
try {
- runtimeMode = readAttribute("launch-type");
+ @SuppressWarnings("UnusedDeclaration")
+ String launchType = readAttribute("launch-type");
+ if (lastAvail != AvailabilityType.UP) {
+ validateServerAttributes();
+ log.info(getResourceDescription() + " has just come UP.");
+ }
+ lastAvail = AvailabilityType.UP;
} catch (Exception e) {
- return AvailabilityType.DOWN;
- }
- if(!getMode().name().equals(runtimeMode)) {
- throw new InvalidPluginConfigurationException("The original mode
discovered for this AS7 server was " +
- getMode() + ", but the server is now reporting its mode is
[" + runtimeMode + "].");
+ lastAvail = AvailabilityType.DOWN;
}
+ return lastAvail;
+ }
- // Now validate the product type (e.g. AS or EAP).
- String discoveredTypeString =
context.getPluginConfiguration().getSimpleValue("productType",
- JBossProductType.AS.name());
- JBossProductType discoveredType =
JBossProductType.valueOf(discoveredTypeString);
-
- String productName;
+ private void validateServerAttributes() throws InvalidPluginConfigurationException {
+ // Validate the base dir (e.g. /opt/jboss-as-7.1.1.Final/standalone).
+ File runtimeBaseDir;
+ File baseDir;
try {
- productName = readAttribute("product-name");
+ String runtimeBaseDirString = readAttribute(getEnvironmentAddress(),
getBaseDirAttributeName());
+ // Canonicalize both paths before comparing them!
+ runtimeBaseDir = new File(runtimeBaseDirString).getCanonicalFile();
+ baseDir = serverPluginConfig.getBaseDir().getCanonicalFile();
} catch (Exception e) {
- return AvailabilityType.DOWN;
+ runtimeBaseDir = null;
+ baseDir = null;
+ log.error("Failed to validate base dir for " +
getResourceDescription() + ".", e);
+ }
+ if ((runtimeBaseDir != null) && (baseDir != null)) {
+ if(!runtimeBaseDir.equals(baseDir)) {
+ throw new InvalidPluginConfigurationException("The server listening
on "
+ + serverPluginConfig.getHostname() + ":" +
serverPluginConfig.getPort()
+ + " has base dir [" + runtimeBaseDir + "], but the
base dir we expected was [" + baseDir
+ + "]. Perhaps the management hostname or port has been
changed for the server with base dir ["
+ + baseDir + "].");
+ }
}
- JBossProductType runtimeType = (productName != null &&
!productName.isEmpty()) ?
- JBossProductType.getValueByProductName(productName) :
JBossProductType.AS;
- if (discoveredType != runtimeType) {
- throw new InvalidPluginConfigurationException("The original product type
discovered for this AS7 server was "
- + discoveredType
- + ", but the server is now reporting its product type is ["
+ runtimeType + "].");
+ // Validate the mode (e.g. STANDALONE or DOMAIN).
+ String runtimeMode;
+ try {
+ runtimeMode = readAttribute("launch-type");
+ } catch (Exception e) {
+ runtimeMode = null;
+ log.error("Failed to validate mode for " + getResourceDescription()
+ ".", e);
+ }
+ if (runtimeMode != null) {
+ String mode = getMode().name();
+ if(!runtimeMode.equals(mode)) {
+ throw new InvalidPluginConfigurationException("The original mode
discovered for this AS7 server was " +
+ getMode() + ", but the server is now reporting its mode is
[" + runtimeMode + "].");
+ }
}
- return AvailabilityType.UP;
+ // Validate the product type (e.g. AS or EAP).
+ JBossProductType runtimeType;
+ try {
+ String runtimeTypeString = readAttribute("product-name");
+ runtimeType = (runtimeTypeString != null &&
!runtimeTypeString.isEmpty()) ?
+ JBossProductType.getValueByProductName(runtimeTypeString) :
JBossProductType.AS;
+ } catch (Exception e) {
+ runtimeType = null;
+ log.error("Failed to validate product type for " +
getResourceDescription() + ".", e);
+ }
+ if (runtimeType != null) {
+ String typeString =
context.getPluginConfiguration().getSimpleValue("productType",
+ JBossProductType.AS.name());
+ JBossProductType type = JBossProductType.valueOf(typeString);
+ if (runtimeType != type) {
+ throw new InvalidPluginConfigurationException("The original product
type discovered for this AS7 server was "
+ + type + ", but the server is now reporting its product type
is [" + runtimeType + "].");
+ }
+ }
}
public ServerPluginConfiguration getServerPluginConfiguration() {
@@ -518,6 +561,9 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
@NotNull
protected abstract Address getHostAddress();
+ @NotNull
+ protected abstract String getBaseDirAttributeName();
+
protected void collectConfigTrait(MeasurementReport report,
MeasurementScheduleRequest request) {
String config;
try {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java
index b6281e6..565add2 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java
@@ -21,6 +21,8 @@ package org.rhq.modules.plugins.jbossas7;
import java.util.HashSet;
import java.util.Set;
+import org.jetbrains.annotations.NotNull;
+
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.measurement.MeasurementReport;
@@ -204,15 +206,23 @@ public class HostControllerComponent<T extends
ResourceComponent<?>> extends Bas
return report;
}
+ @NotNull
@Override
protected Address getEnvironmentAddress() {
return ENVIRONMENT_ADDRESS;
}
+ @NotNull
@Override
protected Address getHostAddress() {
// TODO is the local controller always on host=master?? AS7-3678
return HOST_ADDRESS;
}
+ @NotNull
+ @Override
+ protected String getBaseDirAttributeName() {
+ return "domain-base-dir";
+ }
+
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
index 6ffd44e..f024530 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java
@@ -21,6 +21,8 @@ package org.rhq.modules.plugins.jbossas7;
import java.util.HashSet;
import java.util.Set;
+import org.jetbrains.annotations.NotNull;
+
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
@@ -138,15 +140,23 @@ public class StandaloneASComponent<T extends
ResourceComponent<?>> extends BaseS
super.updateResourceConfiguration(report);
}
+ @NotNull
@Override
protected Address getEnvironmentAddress() {
return ENVIRONMENT_ADDRESS;
}
+ @NotNull
@Override
protected Address getHostAddress() {
// In standalone mode, the root address is the host address.
return getAddress();
}
+ @NotNull
+ @Override
+ protected String getBaseDirAttributeName() {
+ return "base-dir";
+ }
+
}
commit a2b225c09a3a95f796f31136715ed607bea8de83
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 21 17:02:29 2012 +0200
BZ 822886 - Prevent a NPE if a context is not deployed (e.g. no app deployed)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NamingComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NamingComponent.java
index e95c512..81d1999 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NamingComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/NamingComponent.java
@@ -56,6 +56,10 @@ public class NamingComponent extends BaseComponent implements
OperationFacet {
private PropertyList fillMap(Map<String, Map> contexts, String name, boolean
isAppCtx) {
PropertyList pl = new PropertyList(name);
+ if (contexts == null) { // e.g. no applications deployed
+ return pl;
+ }
+
for (String entry : contexts.keySet() ) {
Map<String,Object> map = contexts.get(entry);
if (map==null)
commit fca1adccb16df561a7bca116eac33f7962d01e78
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 18 17:24:43 2012 -0400
use 2-space indent, rather than 1-space
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 988b1e5..a532c3a 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -320,7 +320,7 @@ public class Domain2Descriptor {
* iv)children
*
* @param indent
- * @param childMap
+ * @param metaDataNode
*/
private void listPropertiesAndChildren(int indent, Map<String, Object>
metaDataNode) {
if (metaDataNode == null) {
@@ -1012,7 +1012,7 @@ public class Domain2Descriptor {
private void doIndent(int indent, StringBuilder sb) {
for (int i = 0; i < indent; i++) {
- sb.append(' ');
+ sb.append(" "); // 2 spaces
}
}
commit 6269b9fe5ea39693b1a105387ad73fa3e6e4a70d
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 18 17:22:13 2012 -0400
reformat XML
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 127e633..0911e5e 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -203,7 +203,7 @@
</resource-configuration>
'>
- <!ENTITY logLevel '
+ <!ENTITY logLevel '
<c:simple-property name="level" required="false"
type="string" readOnly="false" description="The log level
specifying which message levels will be logged by this. Message levels lower than this
value will be discarded.">
<c:property-options>
<c:option value="ALL"/>
@@ -223,9 +223,9 @@
</c:simple-property>
'>
- <!ENTITY logFilter '
+ <!ENTITY logFilter '
<!--
- <c:simple-property name="filter" required="false"
description="Defines a simple filter type." >
+ <c:simple-property name="filter" required="false"
description="Defines a simple filter type.">
<c:property-options>
<c:option value="accept"/>
<c:option value="all"/>
@@ -245,13 +245,13 @@
<c:simple-property name="agent-lib" required="false"
type="string" readOnly="false" description="The JVM agent
lib."/>
<c:simple-property name="agent-path" required="false"
type="string" readOnly="false" description="The JVM agent
path."/>
<c:simple-property name="env-classpath-ignored"
required="false" type="boolean" readOnly="false"
description="Ignore the environment classpath."/>
- <c:list-property name="environment-variables"
required="false" description="The JVM environment variables." >
+ <c:list-property name="environment-variables"
required="false" description="The JVM environment variables.">
<c:simple-property name="environment-variable"
type="string"/>
</c:list-property>
<c:simple-property name="heap-size" required="false"
type="string" readOnly="false" description="The initial heap size
allocated by the JVM."/>
<c:simple-property name="java-agent" required="false"
type="string" readOnly="false" description="The java
agent."/>
<c:simple-property name="java-home" required="false"
type="string" readOnly="false" description="The java
home"/>
- <c:list-property name="jvm-options" required="false"
description="The JVM options. Those can not be changed after initial creation of the
definition." readOnly="true" >
+ <c:list-property name="jvm-options" required="false"
description="The JVM options. Those can not be changed after initial creation of the
definition." readOnly="true">
<c:simple-property name="jvm-option"
type="string"/>
</c:list-property>
<c:simple-property name="max-heap-size" required="false"
type="string" readOnly="false" description="The maximum heap size
that can be allocated by the JVM."/>
@@ -266,7 +266,7 @@
</c:simple-property>
'>
- <!ENTITY logFile '
+ <!ENTITY logFile '
<c:map-property name="file" required="true"
readOnly="false" description="The file description consisting of the path
and optional relative to path.">
<c:simple-property name="path" required="true"
readOnly="false" description="The filesystem path."/>
<c:simple-property name="relative-to" required="false"
readOnly="false" description="The name of another previously named path, or
of one of the standard paths provided by the system. If
'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this
attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root
directory of the JBoss AS distribution</li><li>user.home
- user's home directory</li><li>user.dir
- user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root
directory for an individual server
instance</li><li>jboss.server.data.dir - directory the
server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the
server will use for log file
storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory
under which a host controller will create the working area for individual server
instances</li></ul>">
@@ -285,7 +285,7 @@
</c:map-property>
'>
-<!ENTITY datasourceMetrics '
+ <!ENTITY datasourceMetrics '
<metric property="PreparedStatementCacheCurrentSize"
description="The number of prepared and callable statements currently cached in the
statement cache"/>
<metric property="PreparedStatementCacheMissCount"
measurementType="trendsup" description="The number of times that a
statement request could not be satisfied with a statement from the cache"/>
<metric property="PreparedStatementCacheAddCount"
description="The number of statements added to the statement cache"/>
@@ -309,7 +309,7 @@
<metric property="max-pool-size" displayName="Max Pool Size
setting" defaultOn="true" defaultInterval="14400000"
description="The max pool size setting"/>
'>
-<!ENTITY datasourceEnableDisableOperations '
+ <!ENTITY datasourceEnableDisableOperations '
<operation name="enable" description="Enables the
data-source">
<results>
<c:simple-property name="operationResult"/>
@@ -322,7 +322,7 @@
</operation>
'>
-<!ENTITY datasourceTestFlushOperations '
+ <!ENTITY datasourceTestFlushOperations '
<operation name="flush-all-connection-in-pool"
description="Flushes the pool for all connections">
<results>
<c:simple-property name="operationResult"/>
@@ -342,7 +342,7 @@
</operation>
'>
-<!ENTITY datasourceReadWriteConfiguration '
+ <!ENTITY datasourceReadWriteConfiguration '
<resource-configuration>
<c:simple-property name="connection-url" required="true"
type="string" readOnly="true" description="The JDBC driver
connection URL"/>
<c:simple-property name="driver-name" required="true"
type="string" description="Name of the (existing) JDBC driver to use"
readOnly="true">
@@ -365,7 +365,7 @@
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="Indicates Subject
(from security domain) are used to distinguish connections in the pool. The content of the
security-domain is the name of the JAAS security manager that will handleauthentication.
This name correlates to the JAAS login-config.xml descriptor application-policy/name
attribute."/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="re-authentication plugin implementation provided for specific purpose
(i.e vendor)"/>
<!--
- <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)" >
+ <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -418,7 +418,7 @@
</resource-configuration>
'>
-<!ENTITY datasourceReadOnlyConfiguration '
+ <!ENTITY datasourceReadOnlyConfiguration '
<resource-configuration>
<c:simple-property name="connection-url" required="true"
type="string" readOnly="true" description="The JDBC driver
connection URL"/>
<c:simple-property name="driver-name" required="true"
type="string" description="Name of the (existing) JDBC driver to use"
readOnly="true">
@@ -441,7 +441,7 @@
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="Indicates Subject
(from security domain) are used to distinguish connections in the pool. The content of the
security-domain is the name of the JAAS security manager that will handleauthentication.
This name correlates to the JAAS login-config.xml descriptor application-policy/name
attribute."/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="re-authentication plugin implementation provided for specific purpose
(i.e vendor)"/>
<!--
- <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)" >
+ <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -495,7 +495,7 @@
'>
-<!ENTITY xaDatasourceReadWriteConfiguration '
+ <!ENTITY xaDatasourceReadWriteConfiguration '
<resource-configuration>
<c:simple-property name="xa-datasource-class"
required="true" type="string" readOnly="true"
description="The fully qualified name of the javax.sql.XADataSource
implementation"/>
<c:simple-property name="jndi-name" required="true"
type="string" readOnly="true" description="Specifies the JNDI
name for the datasource"/>
@@ -522,7 +522,7 @@
<c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="true"
description="recovery plugin implementation provided for specific purpose (i.e
vendor)"/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="re-authentication plugin implementation provided for specific purpose
(i.e vendor)"/>
<!--
- <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)" >
+ <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -557,21 +557,21 @@
<c:simple-property name="check-valid-connection-sql"
required="false" type="string" readOnly="true"
description="Specify an SQL statement to check validity of a pool connection. This
may be called when managed connection is taken from pool for use."/>
<c:simple-property name="exception-sorter-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a boolean
isExceptionFatal(SQLException e) method to validate is an exception should be broadcast to
all javax.resource.spi.ConnectionEventListener as a connectionErrorOccurred"/>
<!--
- <c:map-property name="exception-sorter-properties"
description="exceptionsorter properties" >
+ <c:map-property name="exception-sorter-properties"
description="exceptionsorter properties">
read-only
configuration
</c:map-property>
-->
<c:simple-property name="stale-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides a
boolean isStaleConnection(SQLException e) method which if it it returns true will wrap the
exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException"/>
<!--
- <c:map-property
name="stale-connection-checker-properties"
description="staleconnectionchecker properties" >
+ <c:map-property
name="stale-connection-checker-properties"
description="staleconnectionchecker properties">
read-only
configuration
</c:map-property>
-->
<c:simple-property name="valid-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides a
SQLException isValidConnection(Connection e) method to validate is a connection is valid.
An exception means the connection is destroyed. This overrides the
check-valid-connection-sql when present."/>
<!--
- <c:map-property
name="valid-connection-checker-properties"
description="validconnectionchecker properties" >
+ <c:map-property
name="valid-connection-checker-properties"
description="validconnectionchecker properties">
read-only
configuration
</c:map-property>
@@ -587,7 +587,7 @@
<c:simple-property name="recovery-password"
required="false" type="string" readOnly="true"
description="password used to try connection recovery"/>
<c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="true"
description="security-domain used to try connection recovery"/>
<!--
- <c:map-property name="recovery-plugin-properties"
description="recovery plugin properties passed to the implementation provided for
specific purpose (i.e vendor)" >
+ <c:map-property name="recovery-plugin-properties"
description="recovery plugin properties passed to the implementation provided for
specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -605,7 +605,7 @@
</resource-configuration>
'>
-<!ENTITY xaDatasourceReadOnlyConfiguration '
+ <!ENTITY xaDatasourceReadOnlyConfiguration '
<resource-configuration>
<c:simple-property name="xa-datasource-class"
required="true" type="string" readOnly="true"
description="The fully qualified name of the javax.sql.XADataSource
implementation"/>
<c:simple-property name="jndi-name" required="true"
type="string" readOnly="true" description="Specifies the JNDI
name for the datasource"/>
@@ -632,7 +632,7 @@
<c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="true"
description="recovery plugin implementation provided for specific purpose (i.e
vendor)"/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="re-authentication plugin implementation provided for specific purpose
(i.e vendor)"/>
<!--
- <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)" >
+ <c:map-property name="reauth-plugin-properties"
description="properties for reauthentication plugin passed to the implementation
provided for specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -667,21 +667,21 @@
<c:simple-property name="check-valid-connection-sql"
required="false" type="string" readOnly="true"
description="Specify an SQL statement to check validity of a pool connection. This
may be called when managed connection is taken from pool for use."/>
<c:simple-property name="exception-sorter-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a boolean
isExceptionFatal(SQLException e) method to validate is an exception should be broadcast to
all javax.resource.spi.ConnectionEventListener as a connectionErrorOccurred"/>
<!--
- <c:map-property name="exception-sorter-properties"
description="exceptionsorter properties" >
+ <c:map-property name="exception-sorter-properties"
description="exceptionsorter properties">
read-only
configuration
</c:map-property>
-->
<c:simple-property name="stale-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides a
boolean isStaleConnection(SQLException e) method which if it it returns true will wrap the
exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException"/>
<!--
- <c:map-property
name="stale-connection-checker-properties"
description="staleconnectionchecker properties" >
+ <c:map-property
name="stale-connection-checker-properties"
description="staleconnectionchecker properties">
read-only
configuration
</c:map-property>
-->
<c:simple-property name="valid-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides a
SQLException isValidConnection(Connection e) method to validate is a connection is valid.
An exception means the connection is destroyed. This overrides the
check-valid-connection-sql when present."/>
<!--
- <c:map-property
name="valid-connection-checker-properties"
description="validconnectionchecker properties" >
+ <c:map-property
name="valid-connection-checker-properties"
description="validconnectionchecker properties">
read-only
configuration
</c:map-property>
@@ -697,7 +697,7 @@
<c:simple-property name="recovery-password"
required="false" type="string" readOnly="true"
description="password used to try connection recovery"/>
<c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="true"
description="security-domain used to try connection recovery"/>
<!--
- <c:map-property name="recovery-plugin-properties"
description="recovery plugin properties passed to the implementation provided for
specific purpose (i.e vendor)" >
+ <c:map-property name="recovery-plugin-properties"
description="recovery plugin properties passed to the implementation provided for
specific purpose (i.e vendor)">
read-only
configuration
</c:map-property>
@@ -715,15 +715,13 @@
</resource-configuration>
'>
-]>
+ ]>
<plugin name="&pluginName;"
displayName="JBoss Application Server 7.x"
description="provides monitoring and management of JBossAS 7.x and JBoss
EAP/JDG 6.x"
package="org.rhq.modules.plugins.jbossas7"
xmlns="urn:xmlns:rhq-plugin"
- xmlns:c="urn:xmlns:rhq-configuration"
- >
-
+ xmlns:c="urn:xmlns:rhq-configuration">
<!-- TODO I think we should introduce an abstract AS7 plugin that contains some base
functionality and then
~~ additional 'Personalities' for the kinds of servers (PM, SM, Standalone
AS, Managed AS)
@@ -732,8 +730,7 @@
<server name="JBossAS7 Host Controller"
discovery="HostControllerDiscovery"
class="HostControllerComponent"
- description="Domain controller (delegate) for this host"
- >
+ description="Domain controller (delegate) for this host">
<plugin-configuration>
<c:simple-property name="hostname" default="localhost"
required="true" description="Host name of the domain API"/>
@@ -855,21 +852,21 @@
</resource-configuration>
<drift-definition
- name="Template-Base Files"
- description="Monitor base application server files for drift. It defines
monitoring for some standard sub-directories of the HOME directory. Note, it is not
recommeded to monitor all files for an application server. There are many files, and many
temp files.">
- <basedir>
- <value-context>pluginConfiguration</value-context>
- <value-name>homeDir</value-name>
- </basedir>
- <includes>
- <include path="bin" />
- <include path="appclient" />
- <include path="welcome-content"/>
- </includes>
+ name="Template-Base Files"
+ description="Monitor base application server files for drift. It defines
monitoring for some standard sub-directories of the HOME directory. Note, it is not
recommeded to monitor all files for an application server. There are many files, and many
temp files.">
+ <basedir>
+ <value-context>pluginConfiguration</value-context>
+ <value-name>homeDir</value-name>
+ </basedir>
+ <includes>
+ <include path="bin"/>
+ <include path="appclient"/>
+ <include path="welcome-content"/>
+ </includes>
</drift-definition>
<help>
- <![CDATA[
+ <![CDATA[
The server can be started, restarted, or stopped via the Start, Restart, and
Shutdown operations. The Start and
Restart operations start the server by executing the server start script, typically
domain.sh on UNIX or
domain.bat on Windows. The following connection settings can be used to configure
the start script execution:
@@ -892,8 +889,7 @@
<server name="Managed Server"
discovery="ManagedASDiscovery"
class="ManagedASComponent"
- createDeletePolicy="both"
- >
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"/>
@@ -947,11 +943,11 @@
<c:simple-property name="auto-start"
displayName="Autostart" default="false" type="boolean"/>
-<!--
- <c:simple-property name="jmv" displayName="JVM"
defaultValue="default" type="string" description="JVM definition
to use with this server">
- <c:option-source target="resource" expression="type='JVM
Definition' plugin=&pluginName;"/>
- </c:simple-property>
--->
+ <!--
+ <c:simple-property name="jmv" displayName="JVM"
defaultValue="default" type="string" description="JVM definition
to use with this server">
+ <c:option-source target="resource"
expression="type='JVM Definition' plugin=&pluginName;"/>
+ </c:simple-property>
+ -->
<c:group name="children:system-property:name+"
displayName="System-properties">
<c:list-property name="*2" displayName="Properties"
required="false" readOnly="false">
@@ -975,8 +971,7 @@
class="DeploymentComponent"
discovery="SubsystemDiscovery"
createDeletePolicy="neither"
- description="Deployed package on a managed server. Go to server
groups to manipulate it"
- >
+ description="Deployed package on a managed server. Go to server
groups to manipulate it">
<plugin-configuration>
<c:simple-property name="path" default="deployment"
readOnly="true"/>
<c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
@@ -992,7 +987,8 @@
</resource-configuration>
</service>
- </server> <!-- managed server -->
+ </server>
+ <!-- managed server -->
<service name="Profile"
description="A profile in a domain. Profiles are assigned to server
groups."
@@ -1009,8 +1005,7 @@
class="ModClusterComponent"
discovery="ModClusterDiscoveryComponent"
description="Mod_cluster support"
- singleton="true"
- >
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -1029,8 +1024,7 @@
description="A server group on this domain"
discovery="SubsystemDiscovery"
class="ServerGroupComponent"
- createDeletePolicy="both"
- >
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" default="server-group"
readOnly="true"/>
@@ -1079,13 +1073,13 @@
</c:list-property>
</c:group>
</resource-configuration>
- </service> <!-- server group -->
+ </service>
+ <!-- server group -->
<service name="Host"
description="A host involved in this domain"
discovery="SubsystemDiscovery"
- class="HostComponent"
- >
+ class="HostComponent">
<plugin-configuration>
<c:simple-property name="path" default="host"
readOnly="true"/>
</plugin-configuration>
@@ -1127,7 +1121,8 @@
</c:group>
</resource-configuration>
- </service> <!-- host -->
+ </service>
+ <!-- host -->
<service name="DomainDeployment"
class="DomainDeploymentComponent"
@@ -1170,15 +1165,14 @@
</resource-configuration>
</service>
- </server> <!-- host controller -->
+ </server> <!-- JBossAS7 Host Controller -->
<server name="JBossAS7 Standalone Server"
discovery="StandaloneASDiscovery"
class="StandaloneASComponent"
description="Standalone AS7 server"
- supportsManualAdd="true"
- >
+ supportsManualAdd="true">
<plugin-configuration>
<c:simple-property name="hostname" default="localhost"
required="true"/>
@@ -1328,25 +1322,25 @@
</resource-configuration>
<drift-definition
- name="Template-Base Files"
- description="Monitor base application server files for drift. It defines
monitoring for some standard sub-directories of the HOME directory. Note, it is not
recommeded to monitor all files for an application server. There are many files, and many
temp files.">
- <basedir>
- <value-context>pluginConfiguration</value-context>
- <value-name>homeDir</value-name>
- </basedir>
- <includes>
- <include path="bin" />
- <include path="appclient" />
- <include path="welcome-content"/>
- </includes>
+ name="Template-Base Files"
+ description="Monitor base application server files for drift. It defines
monitoring for some standard sub-directories of the HOME directory. Note, it is not
recommeded to monitor all files for an application server. There are many files, and many
temp files.">
+ <basedir>
+ <value-context>pluginConfiguration</value-context>
+ <value-name>homeDir</value-name>
+ </basedir>
+ <includes>
+ <include path="bin"/>
+ <include path="appclient"/>
+ <include path="welcome-content"/>
+ </includes>
</drift-definition>
<drift-definition
- name="Template-Deploy Files"
- description="Monitor standalone deployment dir for drift. ">
- <basedir>
- <value-context>pluginConfiguration</value-context>
- <value-name>deployDir</value-name>
- </basedir>
+ name="Template-Deploy Files"
+ description="Monitor standalone deployment dir for drift. ">
+ <basedir>
+ <value-context>pluginConfiguration</value-context>
+ <value-name>deployDir</value-name>
+ </basedir>
</drift-definition>
<bundle-target>
@@ -1357,7 +1351,7 @@
</bundle-target>
<help>
- <![CDATA[
+ <![CDATA[
The server can be started, restarted, or stopped via the Start, Restart, and
Shutdown operations. The Start and
Restart operations start the server by executing the server start script, typically
standalone.sh on UNIX or
standalone.bat on Windows. The following connection settings can be used to
configure the start script execution:
@@ -1383,8 +1377,7 @@
class="ModClusterComponent"
discovery="SubsystemDiscovery"
description="Mod_cluster support"
- singleton="true"
- >
+ singleton="true">
<runs-inside>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
@@ -1503,7 +1496,8 @@
&modclusterSharedOpsConfig;
</service>
- </server> <!-- standalone server -->
+ </server> <!-- JBossAS7 Standalone Server -->
+
<service name="JVM"
discovery="JVMDiscoveryComponent"
@@ -1523,8 +1517,7 @@
<service name="Operating System"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
- >
+ singleton="true">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="type=operating-system"/>
@@ -1539,8 +1532,7 @@
<service name="Memory"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
- >
+ singleton="true">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="type=memory"/>
@@ -1548,7 +1540,7 @@
<operation name="gc" displayName="Trigger GC"
description="Runs the garbage collector.">
<results>
- <c:simple-property name="operationResult" description="Runs
the garbage collector." />
+ <c:simple-property name="operationResult" description="Runs
the garbage collector."/>
</results>
</operation>
@@ -1567,8 +1559,7 @@
<service name="Runtime"
discovery="SubsystemDiscovery"
class="BaseComponent"
- singleton="true"
- >
+ singleton="true">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="type=runtime"/>
@@ -1579,8 +1570,7 @@
<service name="Threading"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="type=threading"/>
@@ -1640,7 +1630,7 @@
<operation name="get-thread-infos"
description="Returns the thread info for each thread whose ID is in
the input list.">
<parameters>
- <c:list-property name="ids" description="A list of thread
ids." >
+ <c:list-property name="ids" description="A list of thread
ids.">
<c:simple-property name="ids" required="true"
type="long" readOnly="false"/>
</c:list-property>
<c:simple-property name="max-depth" required="false"
type="integer" readOnly="false" defaultValue="0"
@@ -1722,7 +1712,7 @@
<metric property="valid" dataType="trait"
description="Whether this this memory manager is valid in the Java virtual
machine."/>
<resource-configuration>
- <c:list-property name="memory-pool-names"
required="true" description="The name of memory pools that this garbage
collector manages." >
+ <c:list-property name="memory-pool-names"
required="true" description="The name of memory pools that this garbage
collector manages.">
<c:simple-property name="memory-pool-names"
readOnly="true"/>
</c:list-property>
</resource-configuration>
@@ -1751,14 +1741,14 @@
<operation name="subsystem:reset-peak-usage" displayName="Reset
Peak Usage" description="Resets the peak memory usage statistic of this memory
pool to the current memory usage.">
<results>
- <c:simple-property name="operationResult"
description="Resets the peak memory usage statistic of this memory pool to the
current memory usage." />
+ <c:simple-property name="operationResult"
description="Resets the peak memory usage statistic of this memory pool to the
current memory usage."/>
</results>
</operation>
<metric property="collection-usage:init"
displayName="Collection Usage - Init" description="The amount of memory in
bytes that the Java virtual machine initially requests from the operating system for
memory management."/>
<metric property="collection-usage:used"
displayName="Collection Usage - Used" description="The amount of used
memory in bytes."/>
<metric property="collection-usage:committed"
displayName="Collection Usage - Committed" description="The amount of
memory in bytes that is committed for the Java virtual machine to use."/>
- <metric property="collection-usage:max" displayName="Collection
Usage - Max" description="The maximum amount of memory in bytes that can be used
for memory management."/>
+ <metric property="collection-usage:max" displayName="Collection
Usage - Max" description="The maximum amount of memory in bytes that can be used
for memory management."/>
<metric property="collection-usage-threshold-count"
description="The number of times that the Java virtual machine has detected that the
memory usage has reached or exceeded the collection usage threshold. A memory pool may not
support a collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
<metric property="collection-usage-threshold-exceeded"
description="Whether the memory usage of this memory pool after the most recent
collection on which the Java virtual machine has expended effort has reached or exceeded
its collection usage threshold. A memory pool may not support a collection usage
threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
<metric property="collection-usage-threshold-supported"
dataType="trait" description="Whether this memory pool supports a
collection usage threshold."/>
@@ -1779,8 +1769,8 @@
<resource-configuration>
<c:simple-property name="collection-usage-threshold"
required="false" type="long" readOnly="false"
description="The collection usage threshold value of this memory pool in bytes. A
memory pool may not support a collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
- <c:list-property name="memory-manager-names"
required="true" readOnly="true" description="The names of the
memory managers that manage this memory pool." >
- <c:simple-property name="memory-manager-names"
readOnly="true"/>
+ <c:list-property name="memory-manager-names"
required="true" readOnly="true" description="The names of the
memory managers that manage this memory pool.">
+ <c:simple-property name="memory-manager-names"
readOnly="true"/>
</c:list-property>
<c:simple-property name="usage-threshold"
required="false" type="long" readOnly="false"
description="The usage threshold value of this memory pool in bytes. A memory pool
may not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
</resource-configuration>
@@ -1791,9 +1781,9 @@
<service name="JBossWeb"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -1845,15 +1835,15 @@
<c:simple-property name="x-powered-by" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Enable advertising the JSP engine in x-powered-by. The default value is
true."/>
</c:group>
<c:group name="child:configuration=container"
displayName="Container">
-<!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
- <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false" >
- <c:map-property name="mime-mapping:collapsed" >
- <c:simple-property name="name:0" displayName="Name"
description="A MIME mapping name without the dot (e.g. 'txt')"/>
- <c:simple-property name="value:1" displayName="Value"
description="A MIME mapping value (e.g. 'text/plain' )"/>
- </c:map-property>
- </c:list-property>
--->
- <c:list-property name="welcome-file" required="false"
description="A welcome file declaration." >
+ <!-- Commented out - see
https://bugzilla.redhat.com/show_bug.cgi?id=815288
+ <c:list-property name="mime-mapping" description="A
mime-mapping definition." required="false">
+ <c:map-property name="mime-mapping:collapsed">
+ <c:simple-property name="name:0"
displayName="Name" description="A MIME mapping name without the dot (e.g.
'txt')"/>
+ <c:simple-property name="value:1"
displayName="Value" description="A MIME mapping value (e.g.
'text/plain' )"/>
+ </c:map-property>
+ </c:list-property>
+ -->
+ <c:list-property name="welcome-file" required="false"
description="A welcome file declaration.">
<c:simple-property name="welcome-file"
type="string"/>
</c:list-property>
</c:group>
@@ -1897,8 +1887,8 @@
<c:simple-property name="name" required="false"
type="string" readOnly="true" description="A unique name for the
connector."/>
<c:simple-property name="protocol" required="true"
type="string" readOnly="false" default="HTTP/1.1"
defaultValue="HTTP/1.1"
description="The web connector protocol. (e.g.
'HTTP/1.1' or 'AJP' or a name of a class implementing ProtocolHandler and
MBeanRegistration )">
- <!-- TODO let the user could enter a custom value here when the UI supports
this. -->
- <c:property-options >
+ <!-- TODO let the user could enter a custom value here when the UI supports
this. -->
+ <c:property-options>
<c:option value="HTTP/1.1"/>
<c:option value="AJP/1.3"/>
</c:property-options>
@@ -2025,16 +2015,17 @@
</c:group>
</resource-configuration>
</service>
- </service> <!-- End of VHost service -->
+ </service>
+ <!-- End of VHost service -->
- </service> <!-- End of JBossWeb service -->
+ </service> <!-- JBossWeb -->
<service name="General JCA connectors"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- description="General settings of the JCA engine. Not necessarily for
end-users">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ description="General settings of the JCA engine. Not necessarily for
end-users">
<runs-inside>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
@@ -2059,10 +2050,10 @@
<service name="Datasources (Standalone)"
- discovery="SubsystemDiscovery"
- class="DatasourceComponent"
- singleton="true"
- description="Datasources subsystem for Standalone servers.">
+ discovery="SubsystemDiscovery"
+ class="DatasourceComponent"
+ singleton="true"
+ description="Datasources subsystem for Standalone servers.">
<runs-inside>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
@@ -2073,7 +2064,7 @@
</plugin-configuration>
<!-- not needed for hot-deployed drivers - only for module ones, but I am not sure
we want to support that
- <operation name="addDriver" displayName="Add a JDBC
driver" >
+ <operation name="addDriver" displayName="Add a JDBC
driver">
<parameters>
<c:simple-property name="driver-name"
required="true"/>
<c:simple-property name="deployment-name"
required="true">
@@ -2127,10 +2118,10 @@
<service name="Datasources (Profile)"
- discovery="SubsystemDiscovery"
- class="DatasourceComponent"
- singleton="true"
- description="Datasources subsystem for profile.">
+ discovery="SubsystemDiscovery"
+ class="DatasourceComponent"
+ singleton="true"
+ description="Datasources subsystem for profile.">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -2174,10 +2165,10 @@
<service name="Datasources (Managed)"
- discovery="SubsystemDiscovery"
- class="DatasourceComponent"
- singleton="true"
- description="Datasources subsystem for Managed servers.">
+ discovery="SubsystemDiscovery"
+ class="DatasourceComponent"
+ singleton="true"
+ description="Datasources subsystem for Managed servers.">
<runs-inside>
<parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
@@ -2224,40 +2215,39 @@
</service>
- <!-- TO BE ADDED to Datasource at a later time
- <service name="JdbcDriver"
- discovery="SubsystemDiscovery"
- class="DatasourceComponent"
- singleton="true"
- >
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="jdbc-driver"/>
- </plugin-configuration>
-
-
- <resource-configuration>
- <c:simple-property name="driver-name"
required="true" type="string" readOnly="true"
description="The symbolic name of this driver used to reference it in the
register"/>
- <c:simple-property name="deployment-name"
required="false" type="string" readOnly="true"
description="The name of the deployment unit from which the driver was loaded, if it
was loaded from a deployment"/>
- <c:simple-property name="driver-module-name"
required="false" type="string" readOnly="true"
description="The name of the module from which the driver was loaded, if it was
loaded from the module path"/>
- <c:simple-property name="module-slot"
required="false" type="string" readOnly="true"
description="The slot of the module from which the driver was loaded, if it was
loaded from the module path"/>
- <c:simple-property name="driver-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the driver's implementation of
java.sql.Driver"/>
- <c:simple-property name="xa-data-source-class"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the XA datasource implementation of
javax.sql.XADataSource"/>
- <c:simple-property name="driver-major-version"
required="false" type="integer" readOnly="true"
description="The driver's major version number"/>
- <c:simple-property name="driver-minor-version"
required="false" type="integer" readOnly="true"
description="The driver's minor version number"/>
- <c:simple-property name="jdbc-compliant"
required="false" type="boolean" readOnly="true"
description="Whether or not the driver is JDBC compliant"/>
- <!–
- <c:template name="add" description="Add a jdbc
driver"> <!– See BZ 705713 TODO –>
- <c:simple-property name="driver-name"
required="true"/>
- <c:simple-property name="deployment-name"
required="true">
- <c:option-source target="resource"
expression="type=DomainDeployment"/> <!– TODO filter ?
–>
- </c:simple-property>
- <c:simple-property name="driver-class-name"
required="true"/>
- </c:template>
- –>
- </resource-configuration>
- </service>
- -->
+ <!-- TO BE ADDED to Datasource at a later time
+ <service name="JdbcDriver"
+ discovery="SubsystemDiscovery"
+ class="DatasourceComponent"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jdbc-driver"/>
+ </plugin-configuration>
+
+
+ <resource-configuration>
+ <c:simple-property name="driver-name"
required="true" type="string" readOnly="true"
description="The symbolic name of this driver used to reference it in the
register"/>
+ <c:simple-property name="deployment-name"
required="false" type="string" readOnly="true"
description="The name of the deployment unit from which the driver was loaded, if it
was loaded from a deployment"/>
+ <c:simple-property name="driver-module-name"
required="false" type="string" readOnly="true"
description="The name of the module from which the driver was loaded, if it was
loaded from the module path"/>
+ <c:simple-property name="module-slot"
required="false" type="string" readOnly="true"
description="The slot of the module from which the driver was loaded, if it was
loaded from the module path"/>
+ <c:simple-property name="driver-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the driver's implementation of
java.sql.Driver"/>
+ <c:simple-property name="xa-data-source-class"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the XA datasource implementation of
javax.sql.XADataSource"/>
+ <c:simple-property name="driver-major-version"
required="false" type="integer" readOnly="true"
description="The driver's major version number"/>
+ <c:simple-property name="driver-minor-version"
required="false" type="integer" readOnly="true"
description="The driver's minor version number"/>
+ <c:simple-property name="jdbc-compliant"
required="false" type="boolean" readOnly="true"
description="Whether or not the driver is JDBC compliant"/>
+ <!–
+ <c:template name="add" description="Add a jdbc
driver"> <!– See BZ 705713 TODO –>
+ <c:simple-property name="driver-name"
required="true"/>
+ <c:simple-property name="deployment-name"
required="true">
+ <c:option-source target="resource"
expression="type=DomainDeployment"/> <!– TODO filter ?
–>
+ </c:simple-property>
+ <c:simple-property name="driver-class-name"
required="true"/>
+ </c:template>
+ –>
+ </resource-configuration>
+ </service>
+ -->
<service name="JVM Definition (Host)"
description="A JVM Definition on Host level, that can serve as templates
for server groups and managed servers"
@@ -2275,7 +2265,8 @@
<resource-configuration>
&jvmDefinitionResourceConfigProperties;
</resource-configuration>
- </service>
+ </service>
+
<service name="JVM Definition"
description="A JVM definition that can override host and server group
level definitions with the same name"
@@ -2298,14 +2289,13 @@
</c:simple-property>
&jvmDefinitionResourceConfigProperties;
</resource-configuration>
- </service>
+ </service>
<service name="Logging"
- discovery="SubsystemDiscovery"
- class="LoggerComponent"
- singleton="true"
- >
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -2318,383 +2308,389 @@
<resource-configuration>
<c:group name="child:root-logger=ROOT" displayName="Root
logger">
- &logFilter;
- &logLevel;
- &logLevel;
- <c:list-property name="handlers" required="true"
readOnly="false"
- description="The Handlers associated with this Logger.">
- <c:simple-property name="handler" type="string"
description="The Handlers associated with this Logger."/>
- </c:list-property>
+ &logFilter;
+ &logLevel;
+ &logLevel;
+ <c:list-property name="handlers" required="true"
readOnly="false"
+ description="The Handlers associated with this
Logger.">
+ <c:simple-property name="handler" type="string"
description="The Handlers associated with this Logger."/>
+ </c:list-property>
</c:group>
</resource-configuration>
- <service name="Async Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="async-handler"/>
- </plugin-configuration>
-
- <operation name="assign-subhandler" description="Assign a
subhandler to the ASYNC handler.">
- <parameters>
- <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Assign a subhandler to the ASYNC handler." />
- </results>
- </operation>
-
- <!-- no need for 'change-log-level' since resource-config handles this
-->
-
- <operation name="disable" description="Disable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
- </results>
- </operation>
+ <service name="Async Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- <operation name="enable" description="Enable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
- </results>
- </operation>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="async-handler"/>
+ </plugin-configuration>
- <operation name="unassign-subhandler" description="Unassign a
subhandler from the ASYNC handler.">
- <parameters>
- <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Unassign a subhandler from the ASYNC handler." />
- </results>
- </operation>
+ <operation name="assign-subhandler" description="Assign a
subhandler to the ASYNC handler.">
+ <parameters>
+ <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Assign
a subhandler to the ASYNC handler."/>
+ </results>
+ </operation>
- <resource-configuration>
- &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- <c:simple-property name="overflow-action" required="true"
type="string" readOnly="false" defaultValue="BLOCK"
description="Specify what action to take when the overflowing. The valid options are
'block' and 'discard'. The default value is
BLOCK.">
- <c:property-options>
- <c:option value="BLOCK"/>
- <c:option value="DISCARD"/>
- </c:property-options>
- </c:simple-property>
- <c:simple-property name="queue-length" required="true"
type="integer" readOnly="false" description="The queue length to
use before flushing writing"/>
- <c:list-property name="subhandlers" required="false"
description="The Handlers associated with this async handler." >
- <c:simple-property name="subhandler" />
- </c:list-property>
- </resource-configuration>
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- </service><!-- End of async-handler service -->
+ <operation name="disable" description="Disable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
+ </results>
+ </operation>
- <service name="Console Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <operation name="enable" description="Enable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="console-handler"/>
- </plugin-configuration>
+ <operation name="unassign-subhandler" description="Unassign a
subhandler from the ASYNC handler.">
+ <parameters>
+ <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"
description="Unassign a subhandler from the ASYNC handler."/>
+ </results>
+ </operation>
- <!-- no need for 'change-log-level' since resource-config handles this
-->
+ <resource-configuration>
+ &logFilter;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevel;
+ <c:simple-property name="overflow-action" required="true"
type="string" readOnly="false" defaultValue="BLOCK"
description="Specify what action to take when the overflowing. The valid options are
'block' and 'discard'. The default value is
BLOCK.">
+ <c:property-options>
+ <c:option value="BLOCK"/>
+ <c:option value="DISCARD"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="queue-length" required="true"
type="integer" readOnly="false" description="The queue length to
use before flushing writing"/>
+ <c:list-property name="subhandlers" required="false"
description="The Handlers associated with this async handler.">
+ <c:simple-property name="subhandler"/>
+ </c:list-property>
+ </resource-configuration>
- <operation name="disable" description="Disable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
- </results>
- </operation>
+ </service>
+ <!-- End of async-handler service -->
- <operation name="enable" description="Enable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
- </results>
- </operation>
+ <service name="Console Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- <resource-configuration>
- <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
- <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
- &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- <c:simple-property name="target" required="false"
type="string" readOnly="false" defaultValue="System.out"
description="Defines the target of the console handler. The value can either be
SYSTEM_OUT or SYSTEM_ERR. The default value is System.out.">
- <c:property-options>
- <c:option value="System.err" name="System.err"/>
- <c:option value="System.out" name="System.out"/>
- </c:property-options>
- </c:simple-property>
- </resource-configuration>
-
- </service><!-- End of console-handler service -->
-
- <service name="Custom Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="console-handler"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="custom-handler"/>
- </plugin-configuration>
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- <!-- no need for 'change-log-level' since resource-config handles this
-->
+ <operation name="disable" description="Disable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
+ </results>
+ </operation>
- <operation name="disable" description="Disable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
- </results>
- </operation>
+ <operation name="enable" description="Enable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
+ </results>
+ </operation>
- <operation name="enable" description="Enable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
- </results>
- </operation>
+ <resource-configuration>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
+ &logFilter;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevel;
+ <c:simple-property name="target" required="false"
type="string" readOnly="false" defaultValue="System.out"
description="Defines the target of the console handler. The value can either be
SYSTEM_OUT or SYSTEM_ERR. The default value is System.out.">
+ <c:property-options>
+ <c:option value="System.err" name="System.err"/>
+ <c:option value="System.out" name="System.out"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
- <!-- no need for 'update-properties' since resource-config does the
same thing -->
-
- <resource-configuration>
- <c:simple-property name="class" required="true"
type="string" readOnly="true" description="The logging handler
class to be used."/>
- <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
- &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- <c:simple-property name="module" required="true"
type="string" readOnly="true" description="The module that the
logging handler depends on."/>
- <c:list-property name="properties">
- <c:map-property name="properties:collapsed"
displayName="Properties">
- <c:simple-property name="name:0" displayName="Name"
required="true" description="The name of the configuration
property."/>
- <c:simple-property name="value:1" displayName="Value"
required="true" description="The value of the configuration
property."/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
+ </service>
+ <!-- End of console-handler service -->
- </service><!-- End of custom-handler service -->
+ <service name="Custom Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- <service name="File Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="custom-handler"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="file-handler"/>
- </plugin-configuration>
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- <!-- no need for 'change-file' since resource-config handles this
-->
+ <operation name="disable" description="Disable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
+ </results>
+ </operation>
- <!-- no need for 'change-log-level' since resource-config handles this
-->
+ <operation name="enable" description="Enable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
+ </results>
+ </operation>
- <operation name="disable" description="Disable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
- </results>
- </operation>
+ <!-- no need for 'update-properties' since resource-config does the same
thing -->
- <operation name="enable" description="Enable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
- </results>
- </operation>
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="true" description="The logging handler
class to be used."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
+ &logFilter;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevel;
+ <c:simple-property name="module" required="true"
type="string" readOnly="true" description="The module that the
logging handler depends on."/>
+ <c:list-property name="properties">
+ <c:map-property name="properties:collapsed"
displayName="Properties">
+ <c:simple-property name="name:0" displayName="Name"
required="true" description="The name of the configuration
property."/>
+ <c:simple-property name="value:1" displayName="Value"
required="true" description="The value of the configuration
property."/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
- <!-- removing 'update-properties' as handled by configuration update
-->
+ </service>
+ <!-- End of custom-handler service -->
- <resource-configuration>
- <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
- <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
- <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
- &logFile;
- &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- </resource-configuration>
+ <service name="File Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- </service><!-- End of file-handler service -->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-handler"/>
+ </plugin-configuration>
- <service name="Logger"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <!-- no need for 'change-file' since resource-config handles this
-->
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="logger"/>
- </plugin-configuration>
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- <!-- no need for 'assign-handler' since resource-config handles this
-->
+ <operation name="disable" description="Disable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
+ </results>
+ </operation>
- <operation name="change-log-level" description="Change the
logging level for a logger category.">
- <parameters>
- <c:simple-property name="level" required="false"
type="string" readOnly="false" description="The log level
specifying which message levels will be logged by this logger. Message levels lower than
this value will be discarded."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Change the logging level for a logger category." />
- </results>
- </operation>
+ <operation name="enable" description="Enable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
+ </results>
+ </operation>
- <!-- no need for 'unassign-handler' since resource-config handles this
-->
+ <!-- removing 'update-properties' as handled by configuration update
-->
- <resource-configuration>
- <!-- category is the same as 'name' for other resources. Don't
list as required here -->
- &logFilter;
- <c:list-property name="handlers" required="false"
description="The Handlers associated with this Logger." >
- <c:simple-property name="handler" />
- </c:list-property>
- &logLevel;
- <c:simple-property name="use-parent-handlers"
required="false" type="boolean" readOnly="false"
defaultValue="true"
- description="Specifies whether or not this logger should send its output to
it's parent Logger. The default value is true."/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
+ &logFile;
+ &logFilter;
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevel;
+ </resource-configuration>
- </service><!-- End of logger service -->
+ </service>
+ <!-- End of file-handler service -->
- <service name="Periodic Rotating File Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <service name="Logger"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="periodic-rotating-file-handler"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="logger"/>
+ </plugin-configuration>
- <!-- no need for 'change-file' since resource-config handles this
-->
+ <!-- no need for 'assign-handler' since resource-config handles this
-->
- <!-- no need for 'change-log-level' since resource-config handles this
-->
+ <operation name="change-log-level" description="Change the
logging level for a logger category.">
+ <parameters>
+ <c:simple-property name="level" required="false"
type="string" readOnly="false" description="The log level
specifying which message levels will be logged by this logger. Message levels lower than
this value will be discarded."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Change
the logging level for a logger category."/>
+ </results>
+ </operation>
- <operation name="disable" description="Disable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
- </results>
- </operation>
+ <!-- no need for 'unassign-handler' since resource-config handles this
-->
- <operation name="enable" description="Enable a logging
handler.">
- <results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
- </results>
- </operation>
+ <resource-configuration>
+ <!-- category is the same as 'name' for other resources. Don't
list as required here -->
+ &logFilter;
+ <c:list-property name="handlers" required="false"
description="The Handlers associated with this Logger.">
+ <c:simple-property name="handler"/>
+ </c:list-property>
+ &logLevel;
+ <c:simple-property name="use-parent-handlers"
required="false" type="boolean" readOnly="false"
defaultValue="true"
+ description="Specifies whether or not this logger should
send its output to it's parent Logger. The default value is true."/>
+ </resource-configuration>
- <!-- removing 'update-properties' as handled by config -->
+ </service>
+ <!-- End of logger service -->
- <resource-configuration>
- <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
- <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
- <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
- &logFile;
- &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- <c:simple-property name="suffix" required="true"
type="string" readOnly="false" description="Set the suffix
string. The string is in a format which can be understood by java.text.SimpleDateFormat.
The period of the rotation is automatically calculated based on the suffix."/>
- </resource-configuration>
+ <service name="Periodic Rotating File Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- </service><!-- End of periodic-rotating-file-handler service -->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="periodic-rotating-file-handler"/>
+ </plugin-configuration>
-<!-- <service name="Root Logger"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ <!-- no need for 'change-file' since resource-config handles this
-->
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="root-logger=ROOT"/>
- </plugin-configuration>
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- <operation name="change-root-log-level" description="Change the
root logger level.">
- <parameters>
- &logLevel;
- </parameters>
+ <operation name="disable" description="Disable a logging
handler.">
<results>
- <c:simple-property name="operationResult"/>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
</results>
</operation>
- <operation name="remove-root-logger" description="Remove the root
logger.">
+ <operation name="enable" description="Enable a logging
handler.">
<results>
- <c:simple-property name="operationResult"/>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
</results>
</operation>
- <operation name="root-logger-assign-handler" description="Assign
a Handler to the root logger.">
- <parameters>
- <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Assign a
Handler to the root logger." />
- </results>
- </operation>
-
- <operation name="set-root-logger" description="Set the root
logger.">
- <parameters>
- &logLevel;
- <c:list-property name="handlers" required="true"
readOnly="false"
- description="The Handlers associated with this
Logger.">
- <c:simple-property name="handler" type="string"/>
- </c:list-property>
- </parameters>
- <results>
- <c:simple-property name="operationResult"/>
- </results>
- </operation>
+ <!-- removing 'update-properties' as handled by config -->
- <resource-configuration>
- <c:group name="Root logger" displayName="Root
logger">
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
+ &logFile;
&logFilter;
- <c:list-property name="handlers" required="false"
description="The Handlers associated with this Logger." >
- <c:simple-property name="handler" />
- </c:list-property>
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
&logLevel;
- </c:group>
- </resource-configuration>
- </service> --><!-- End of Root Logger service -->
+ <c:simple-property name="suffix" required="true"
type="string" readOnly="false" description="Set the suffix
string. The string is in a format which can be understood by java.text.SimpleDateFormat.
The period of the rotation is automatically calculated based on the suffix."/>
+ </resource-configuration>
- <service name="Size Rotating File Handler"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- class="BaseComponent">
+ </service>
+ <!-- End of periodic-rotating-file-handler service -->
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="size-rotating-file-handler"/>
- </plugin-configuration>
+ <!-- <service name="Root Logger"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
- <!-- no need for 'change-file' since resource-config handles this
-->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="root-logger=ROOT"/>
+ </plugin-configuration>
- <!-- no need for 'change-log-level' since resource-config handles this
-->
+ <operation name="change-root-log-level" description="Change the
root logger level.">
+ <parameters>
+ &logLevel;
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
- <operation name="disable" description="Disable a logging
handler.">
+ <operation name="remove-root-logger" description="Remove the
root logger.">
<results>
- <c:simple-property name="operationResult"
description="Disable a logging handler." />
+ <c:simple-property name="operationResult"/>
</results>
</operation>
- <operation name="enable" description="Enable a logging
handler.">
+ <operation name="root-logger-assign-handler" description="Assign
a Handler to the root logger.">
+ <parameters>
+ <c:simple-property name="name" required="true"
type="string" readOnly="false" description="The
handler's name."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Assign a
Handler to the root logger." />
+ </results>
+ </operation>
+
+ <operation name="set-root-logger" description="Set the root
logger.">
+ <parameters>
+ &logLevel;
+ <c:list-property name="handlers" required="true"
readOnly="false"
+ description="The Handlers associated with this
Logger.">
+ <c:simple-property name="handler" type="string"/>
+ </c:list-property>
+ </parameters>
<results>
- <c:simple-property name="operationResult"
description="Enable a logging handler." />
+ <c:simple-property name="operationResult"/>
</results>
</operation>
- <!-- removing 'update-properties' as handled by configuration -->
+ <resource-configuration>
+ <c:group name="Root logger" displayName="Root
logger">
+ &logFilter;
+ <c:list-property name="handlers" required="false"
description="The Handlers associated with this Logger.">
+ <c:simple-property name="handler" />
+ </c:list-property>
+ &logLevel;
+ </c:group>
+ </resource-configuration>
+ </service> --><!-- End of Root Logger service -->
+
+ <service name="Size Rotating File Handler"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="size-rotating-file-handler"/>
+ </plugin-configuration>
+
+ <!-- no need for 'change-file' since resource-config handles this
-->
+
+ <!-- no need for 'change-log-level' since resource-config handles this
-->
- <resource-configuration>
- <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
- <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
- <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
- &logFile;
- &logFilter;
+ <operation name="disable" description="Disable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult"
description="Disable a logging handler."/>
+ </results>
+ </operation>
+
+ <operation name="enable" description="Enable a logging
handler.">
+ <results>
+ <c:simple-property name="operationResult" description="Enable
a logging handler."/>
+ </results>
+ </operation>
+
+ <!-- removing 'update-properties' as handled by configuration -->
+
+ <resource-configuration>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Specify whether to append to the target file. The default value is
true."/>
+ <c:simple-property name="autoflush" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Automatically flush after each write. The default value is
true."/>
+ <c:simple-property name="encoding" required="false"
type="string" readOnly="false" description="The character
encoding used by this Handler."/>
+ &logFile;
+ &logFilter;
- <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
- description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
- &logLevel;
- <c:simple-property name="max-backup-index"
required="true" type="integer" readOnly="false"
defaultValue="1" description="The maximum number of backups to keep. The
default value is 1."/>
- <c:simple-property name="rotate-size" required="true"
type="string" readOnly="false" defaultValue="2m"
description="The size at which to rotate the log file. The default value is
2m."/>
- </resource-configuration>
+ <c:simple-property name="formatter" required="false"
type="string" readOnly="false"
defaultValue="%d{HH:mm:ss,SSS} %-5p
[%c] (%t) %s%E%n"
+ description="Defines a formatter. The default value is
%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n."/>
+ &logLevel;
+ <c:simple-property name="max-backup-index" required="true"
type="integer" readOnly="false" defaultValue="1"
description="The maximum number of backups to keep. The default value is
1."/>
+ <c:simple-property name="rotate-size" required="true"
type="string" readOnly="false" defaultValue="2m"
description="The size at which to rotate the log file. The default value is
2m."/>
+ </resource-configuration>
- </service><!-- End of size-rotating-file-handler service -->
+ </service>
+ <!-- End of size-rotating-file-handler service -->
</service>
<service name="Datagrid Endpoints"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- >
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -2710,8 +2706,7 @@
discovery="SubsystemDiscovery"
class="BaseComponent"
createDeletePolicy="both"
- creationDataType="configuration"
- >
+ creationDataType="configuration">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="hotrod-connector"/>
@@ -2739,8 +2734,7 @@
discovery="SubsystemDiscovery"
class="BaseComponent"
createDeletePolicy="both"
- creationDataType="configuration"
- >
+ creationDataType="configuration">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="memcached-connector"/>
@@ -2768,8 +2762,7 @@
discovery="SubsystemDiscovery"
class="BaseComponent"
createDeletePolicy="both"
- creationDataType="configuration"
- >
+ creationDataType="configuration">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="rest-connector"/>
@@ -2791,9 +2784,9 @@
<service name="Webservices"
- discovery="SubsystemDiscovery"
- class="WebservicesComponent"
- singleton="true">
+ discovery="SubsystemDiscovery"
+ class="WebservicesComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -2835,8 +2828,7 @@
<service name="Endpoint"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="endpoint-config"/>
</plugin-configuration>
@@ -2844,44 +2836,42 @@
<resource-configuration>
<c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
<c:list-property name="property" required="false"
description="A list of generic key/value properties.">
- <c:map-property name="property:collapsed"
displayName="Property">
- <c:simple-property name="name:0" type="string"
displayName="Name" required="true"/>
- <c:simple-property name="value:1" type="string"
displayName="Value" required="true"/>
- </c:map-property>
+ <c:map-property name="property:collapsed"
displayName="Property">
+ <c:simple-property name="name:0" type="string"
displayName="Name" required="true"/>
+ <c:simple-property name="value:1" type="string"
displayName="Value" required="true"/>
+ </c:map-property>
</c:list-property>
</resource-configuration>
<service name="Post Handler Chain"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="post-handler-chain"/>
</plugin-configuration>
- <service name="Post Handler"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ <service name="Post Handler"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <runs-inside>
- <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
- <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
- </runs-inside>
+ <runs-inside>
+ <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
+ <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="handler"/>
- </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
- </resource-configuration>
- </service>
- </service><!-- End of post handler chain service -->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="handler"/>
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
+ </resource-configuration>
+ </service>
+ </service>
+ <!-- End of post handler chain service -->
<service name="Pre Handler Chain"
discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="pre-handler-chain"/>
</plugin-configuration>
@@ -2889,28 +2879,31 @@
<c:simple-property name="protocol-bindings"
required="false" type="string" readOnly="false"
description="Protocol binding"/>
</resource-configuration>
- <service name="Pre Handler"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
+ <service name="Pre Handler"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <runs-inside>
- <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
- <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
- </runs-inside>
+ <runs-inside>
+ <parent-resource-type name="Pre Handler Chain"
plugin="&pluginName;"/>
+ <parent-resource-type name="Post Handler Chain"
plugin="&pluginName;"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="handler"/>
- </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
- </resource-configuration>
- </service><!-- End of Pre Handler service definition -->
- </service> <!-- End of Pre Handler Chain service definition -->
- </service> <!-- End of Endpoint service definition -->
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="handler"/>
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="class" required="true"
type="string" readOnly="false" description="Handler
class"/>
+ </resource-configuration>
+ </service>
+ <!-- End of Pre Handler service definition -->
+ </service>
+ <!-- End of Pre Handler Chain service definition -->
+ </service>
+ <!-- End of Endpoint service definition -->
</service>
+
<service name="Naming"
discovery="SubsystemDiscovery"
class="NamingComponent"
@@ -2974,6 +2967,7 @@
</service>
+
<service name="Transactions Subsystem (Standalone)"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -3028,7 +3022,7 @@
<operation name="subsystem:probe" displayName="Probe"
description="Scan for new transaction logs. This operation will creates a child for
each pending transaction.">
<results>
- <c:simple-property name="operationResult" description="Scan
for new transaction logs. This operation will creates a child for each pending
transaction." />
+ <c:simple-property name="operationResult" description="Scan
for new transaction logs. This operation will creates a child for each pending
transaction."/>
</results>
</operation>
@@ -3048,7 +3042,7 @@
<operation name="subsystem:delete" displayName="Delete"
description="Remove this transaction log. WARNING after this operation the
transaction manager will have no knowledge of the transaction and will therefore never be
able to recover it. If you are sure that the transaction is complete then the operation is
safe. The representation of the transaction log is removed from the model too.">
<results>
- <c:simple-property name="operationResult"
description="Remove this transaction log. WARNING after this operation the
transaction manager will have no knowledge of the transaction and will therefore never be
able to recover it. If you are sure that the transaction is complete then the operation is
safe. The representation of the transaction log is removed from the model too."
/>
+ <c:simple-property name="operationResult"
description="Remove this transaction log. WARNING after this operation the
transaction manager will have no knowledge of the transaction and will therefore never be
able to recover it. If you are sure that the transaction is complete then the operation is
safe. The representation of the transaction log is removed from the model too."/>
</results>
</operation>
@@ -3071,13 +3065,13 @@
<operation name="subsystem:recover"
displayName="Recover" description="If this record is in a heuristic state
then attempt to replay the commit phase of the 2PC transaction.">
<results>
- <c:simple-property name="operationResult" description="If
this record is in a heuristic state then attempt to replay the commit phase of the 2PC
transaction." />
+ <c:simple-property name="operationResult" description="If
this record is in a heuristic state then attempt to replay the commit phase of the 2PC
transaction."/>
</results>
</operation>
<operation name="subsystem:refresh"
displayName="Refresh" description="Refresh the management view of the
attributes of this participant record by querying the transaction log. (Note that the
read-resource operaton only reads the model, hence the need for this refresh
operation).">
<results>
- <c:simple-property name="operationResult"
description="Refresh the management view of the attributes of this participant record
by querying the transaction log. (Note that the read-resource operaton only reads the
model, hence the need for this refresh operation)." />
+ <c:simple-property name="operationResult"
description="Refresh the management view of the attributes of this participant record
by querying the transaction log. (Note that the read-resource operaton only reads the
model, hence the need for this refresh operation)."/>
</results>
</operation>
@@ -3140,7 +3134,7 @@
<operation name="subsystem:probe" displayName="Probe"
description="Scan for new transaction logs. This operation will creates a child for
each pending transaction.">
<results>
- <c:simple-property name="operationResult" description="Scan
for new transaction logs. This operation will creates a child for each pending
transaction." />
+ <c:simple-property name="operationResult" description="Scan
for new transaction logs. This operation will creates a child for each pending
transaction."/>
</results>
</operation>
@@ -3338,7 +3332,7 @@
</content>
<resource-configuration>
- <c:list-property name="content" description="List of pieces of
content that comprise the deployment." readOnly="true" >
+ <c:list-property name="content" description="List of pieces of
content that comprise the deployment." readOnly="true">
<c:map-property name="content" readOnly="true">
<c:simple-property name="input-stream-index"
type="integer" required="false" readOnly="true"
description="The index into the operation's attached input streams of the input
stream that contains deployment content that should be uploaded to the domain's or
standalone server's deployment content repository."/>
<c:simple-property name="hash" type="string"
readOnly="true" required="false" description="The hash of managed
deployment content that has been uploaded to the domain's or standalone server's
deployment content repository."/>
@@ -3388,12 +3382,12 @@
<c:simple-property name="path" default="subsystem=web"
readOnly="true"/>
<c:group name="responseTime">
- <c:simple-property name="responseTimeLogFile"
required="false"
- description="the full path to the log file containing
response-time stats for this webapp"/>
- <c:simple-property name="responseTimeUrlExcludes"
required="false"
- description="a space-delimited list of regular
expressions specifying URLs that should be excluded from response-time stats
collection"/>
- <c:simple-property name="responseTimeUrlTransforms"
required="false"
- description="a space-delimited list of Perl-style
substitution expressions that should be applied to all URLs for which response-time stats
are collected (e.g. |^/dept/finance/.*|/dept/finance/*|)"/>
+ <c:simple-property name="responseTimeLogFile"
required="false"
+ description="the full path to the log file containing
response-time stats for this webapp"/>
+ <c:simple-property name="responseTimeUrlExcludes"
required="false"
+ description="a space-delimited list of regular
expressions specifying URLs that should be excluded from response-time stats
collection"/>
+ <c:simple-property name="responseTimeUrlTransforms"
required="false"
+ description="a space-delimited list of Perl-style
substitution expressions that should be applied to all URLs for which response-time stats
are collected (e.g. |^/dept/finance/.*|/dept/finance/*|)"/>
</c:group>
</plugin-configuration>
@@ -3422,9 +3416,9 @@
</plugin-configuration>
<service name="XA Datasource Runtime"
- class="DatasourceComponent"
- discovery="SubsystemDiscovery"
- description="A JDBC XA data-source configuration">
+ class="DatasourceComponent"
+ discovery="SubsystemDiscovery"
+ description="A JDBC XA data-source configuration">
<plugin-configuration>
<c:simple-property name="path" default="xa-data-source"
readOnly="true"/>
@@ -3432,19 +3426,19 @@
<operation name="subsystem:flush-all-connection-in-pool"
description="Flushes all connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all connections in the pool"/>
</results>
</operation>
<operation name="subsystem:flush-idle-connection-in-pool"
description="Flushes all idle connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool"/>
</results>
</operation>
<operation name="subsystem:test-connection-in-pool"
description="Test if a connection can be obtained">
<results>
- <c:simple-property name="operationResult" description="Test
if a connection can be obtained" />
+ <c:simple-property name="operationResult" description="Test
if a connection can be obtained"/>
</results>
</operation>
@@ -3458,7 +3452,7 @@
<c:simple-property name="driver-name" required="true"
type="string" readOnly="true" description="Defines the JDBC
driver the datasource should use. It is a symbolic name matching the the name of installed
driver. In case the driver is deployed as jar, the name is the name of deployment
unit"/>
<c:simple-property name="enabled" required="false"
type="boolean" readOnly="true" description="Specifies if the
datasource should be enabled"/>
<c:simple-property name="exception-sorter-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides an
isExceptionFatal(SQLException) method to validate if an exception should broadcast an
error"/>
- <c:map-property name="exception-sorter-properties"
description="The exception sorter properties" >
+ <c:map-property name="exception-sorter-properties"
description="The exception sorter properties">
<c:simple-property name="exception-sorter-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="flush-strategy" required="false"
type="string" readOnly="true" description="Specifies how the pool
should be flush in case of an error." default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
@@ -3484,12 +3478,12 @@
<c:simple-property name="prepared-statements-cache-size"
required="false" type="long" readOnly="true"
description="The number of prepared statements per connection in an LRU
cache"/>
<c:simple-property name="query-timeout" required="false"
type="long" readOnly="true" description="Any configured query
timeout in seconds. If not provided no timeout will be set"/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the reauthentication plugin
implementation"/>
- <c:map-property name="reauth-plugin-properties"
description="The properties for the reauthentication plugin" >
+ <c:map-property name="reauth-plugin-properties"
description="The properties for the reauthentication plugin">
<c:simple-property name="reauth-plugin-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="recovery-password"
required="false" type="string" readOnly="true"
description="The password used for recovery"/>
<c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the recovery plugin
implementation"/>
- <c:map-property name="recovery-plugin-properties"
description="The properties for the recovery plugin" >
+ <c:map-property name="recovery-plugin-properties"
description="The properties for the recovery plugin">
<c:simple-property name="recovery-plugin-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="true"
description="The security domain used for recovery"/>
@@ -3500,7 +3494,7 @@
<c:simple-property name="share-prepared-statements"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether to share prepared statements,
i.e. whether asking for same statement twice without closing uses the same underlying
prepared statement. The default value is false."/>
<c:simple-property name="spy" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable spying of SQL statements. The default value is false."/>
<c:simple-property name="stale-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides an
isStaleConnection(SQLException) method which if it returns true will wrap the exception in
an org.jboss.jca.adapters.jdbc.StaleConnectionException"/>
- <c:map-property name="stale-connection-checker-properties"
description="The stale connection checker properties" >
+ <c:map-property name="stale-connection-checker-properties"
description="The stale connection checker properties">
<c:simple-property name="stale-connection-checker-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="track-statements"
required="false" type="string" readOnly="true"
defaultValue="NOWARN" description="Whether to check for unclosed statements
when a connection is returned to the pool, result sets are closed, a statement is closed
or return to the prepared statement cache. Valid values are: 'false' - do not
track statements, 'true' - track statements and result sets and warn when they are
not closed, 'nowarn' - track statements but do not warn about them being unclosed.
The default value is 'NOWARN'."/>
@@ -3521,7 +3515,7 @@
<c:simple-property name="use-try-lock" required="false"
type="long" readOnly="true" description="Any configured timeout
for internal locks on the resource adapter objects in seconds"/>
<c:simple-property name="user-name" required="false"
type="string" readOnly="true" description="Specify the user name
used when creating a new connection"/>
<c:simple-property name="valid-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides an
isValidConnection(Connection) method to validate a connection. If an exception is returned
that means the connection is invalid. This overrides the check-valid-connection-sql
element"/>
- <c:map-property name="valid-connection-checker-properties"
description="The valid connection checker properties" >
+ <c:map-property name="valid-connection-checker-properties"
description="The valid connection checker properties">
<c:simple-property name="valid-connection-checker-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="validate-on-match"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="The validate-on-match element specifies
if connection validation should be done when a connection factory attempts to match a
managed connection. This is typically exclusive to the use of background validation. The
default value is false."/>
@@ -3555,19 +3549,19 @@
<operation name="subsystem:flush-all-connection-in-pool"
description="Flushes all connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all connections in the pool"/>
</results>
</operation>
<operation name="subsystem:flush-idle-connection-in-pool"
description="Flushes all idle connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool"/>
</results>
</operation>
<operation name="subsystem:test-connection-in-pool"
description="Test if a connection can be obtained">
<results>
- <c:simple-property name="operationResult" description="Test
if a connection can be obtained" />
+ <c:simple-property name="operationResult" description="Test
if a connection can be obtained"/>
</results>
</operation>
@@ -3584,8 +3578,8 @@
<c:simple-property name="driver-name" required="true"
type="string" readOnly="true" description="Defines the JDBC
driver the datasource should use. It is a symbolic name matching the the name of installed
driver. In case the driver is deployed as jar, the name is the name of deployment
unit"/>
<c:simple-property name="enabled" required="false"
type="boolean" readOnly="true" description="Specifies if the
datasource should be enabled"/>
<c:simple-property name="exception-sorter-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides an
isExceptionFatal(SQLException) method to validate if an exception should broadcast an
error"/>
- <c:map-property name="exception-sorter-properties"
description="The exception sorter properties" >
- <c:simple-property name="exception-sorter-property"
required="false" type="string" readOnly="true"/>
+ <c:map-property name="exception-sorter-properties"
description="The exception sorter properties">
+ <c:simple-property name="exception-sorter-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="flush-strategy" required="false"
type="string" readOnly="true" description="Specifies how the pool
should be flush in case of an error." default="FailingConnectionOnly"
defaultValue="FailingConnectionOnly">
<c:property-options>
@@ -3606,20 +3600,20 @@
<c:simple-property name="prepared-statements-cache-size"
required="false" type="long" readOnly="true"
description="The number of prepared statements per connection in an LRU
cache"/>
<c:simple-property name="query-timeout" required="false"
type="long" readOnly="true" description="Any configured query
timeout in seconds. If not provided no timeout will be set"/>
<c:simple-property name="reauth-plugin-class-name"
required="false" type="string" readOnly="true"
description="The fully qualified class name of the reauthentication plugin
implementation"/>
- <c:map-property name="reauth-plugin-properties"
description="The properties for the reauthentication plugin" >
- <c:simple-property name="reauth-plugin-property"
required="false" type="string" readOnly="true"/>
+ <c:map-property name="reauth-plugin-properties"
description="The properties for the reauthentication plugin">
+ <c:simple-property name="reauth-plugin-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="Specifies the security
domain which defines the javax.security.auth.Subject that are used to distinguish
connections in the pool"/>
<c:simple-property name="set-tx-query-timeout"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether to set the query timeout based on
the time remaining until transaction timeout. Any configured query timeout will be used if
there is no transaction. The default value is false."/>
<c:simple-property name="share-prepared-statements"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="Whether to share prepared statements,
i.e. whether asking for same statement twice without closing uses the same underlying
prepared statement. The default value is false."/>
<c:simple-property name="spy" required="false"
type="boolean" readOnly="true" defaultValue="false"
description="Enable spying of SQL statements. The default value is false."/>
<c:simple-property name="stale-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides an
isStaleConnection(SQLException) method which if it returns true will wrap the exception in
an org.jboss.jca.adapters.jdbc.StaleConnectionException"/>
- <c:map-property name="stale-connection-checker-properties"
description="The stale connection checker properties" >
- <c:simple-property name="stale-connection-checker-property"
required="false" type="string" readOnly="true"/>
+ <c:map-property name="stale-connection-checker-properties"
description="The stale connection checker properties">
+ <c:simple-property name="stale-connection-checker-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="track-statements"
required="false" type="string" readOnly="true"
defaultValue="NOWARN" description="Whether to check for unclosed statements
when a connection is returned to the pool, result sets are closed, a statement is closed
or return to the prepared statement cache. Valid values are: 'false' -
do not track statements, 'true' - track statements and result sets and
warn when they are not closed, 'nowarn' - track statements but do not
warn about them being unclosed. The default value is
'NOWARN'."/>
<c:simple-property name="transaction-isolation"
required="false" type="string" readOnly="true"
description="Set the java.sql.Connection transaction isolation level. Valid values
are: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED,
TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE and TRANSACTION_NONE">
- <c:property-options>
+ <c:property-options>
<c:option value="TRANSACTION_READ_UNCOMMITTED"/>
<c:option value="TRANSACTION_READ_COMMITTED"/>
<c:option value="TRANSACTION_REPEATABLE_READ"/>
@@ -3635,8 +3629,8 @@
<c:simple-property name="use-try-lock" required="false"
type="long" readOnly="true" description="Any configured timeout
for internal locks on the resource adapter objects in seconds"/>
<c:simple-property name="user-name" required="false"
type="string" readOnly="true" description="Specify the user name
used when creating a new connection"/>
<c:simple-property name="valid-connection-checker-class-name"
required="false" type="string" readOnly="true"
description="An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides an
isValidConnection(Connection) method to validate a connection. If an exception is returned
that means the connection is invalid. This overrides the check-valid-connection-sql
element"/>
- <c:map-property name="valid-connection-checker-properties"
description="The valid connection checker properties" >
- <c:simple-property name="valid-connection-checker-property"
required="false" type="string" readOnly="true"/>
+ <c:map-property name="valid-connection-checker-properties"
description="The valid connection checker properties">
+ <c:simple-property name="valid-connection-checker-property"
required="false" type="string" readOnly="true"/>
</c:map-property>
<c:simple-property name="validate-on-match"
required="false" type="boolean" readOnly="true"
defaultValue="false" description="The validate-on-match element specifies
if connection validation should be done when a connection factory attempts to match a
managed connection. This is typically exclusive to the use of background validation. The
default value is false."/>
@@ -3652,6 +3646,7 @@
</service>
</service>
+
<service name="Messaging Runtime"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -3668,10 +3663,10 @@
</plugin-configuration>
<service name="HornetQ Server Runtime"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="A HornetQ server instance."
- createDeletePolicy="both">
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="A HornetQ server instance."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" default="hornetq-server"
readOnly="true"/>
@@ -3697,7 +3692,7 @@
<operation name="subsystem:force-failover" displayName="Force
Failover" description="Force the messaging server to stop and notify clients to
failover.">
<results>
- <c:simple-property name="operationResult" description="Force
the messaging server to stop and notify clients to failover." />
+ <c:simple-property name="operationResult" description="Force
the messaging server to stop and notify clients to failover."/>
</results>
</operation>
@@ -3848,13 +3843,13 @@
<operation name="subsystem:reset-all-message-counter-histories"
displayName="Reset All Message Counter Histories" description="Reset all
message counters history.">
<results>
- <c:simple-property name="operationResult" description="Reset
all message counters history." />
+ <c:simple-property name="operationResult" description="Reset
all message counters history."/>
</results>
</operation>
<operation name="subsystem:reset-all-message-counters"
displayName="Reset All Message Counters" description="Reset all message
counters.">
<results>
- <c:simple-property name="operationResult" description="Reset
all message counters." />
+ <c:simple-property name="operationResult" description="Reset
all message counters."/>
</results>
</operation>
@@ -3895,10 +3890,10 @@
<c:simple-property name="journal-sync-non-transactional"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether to wait for non transaction data
to be synced to the journal before returning a response to the client. The default value
is true."/>
<c:simple-property name="journal-sync-transactional"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether to wait for transaction data to be
synchronized to the journal before returning a response to the client. The default value
is true."/>
<c:simple-property name="journal-type" required="false"
type="string" readOnly="false" defaultValue="ASYNCIO"
description="The type of journal to use. The default value is ASYNCIO.">
- <c:property-options>
- <c:option value="ASYNCIO" name="ASYNCIO"/>
- <c:option value="NIO" name="NIO"/>
- </c:property-options>
+ <c:property-options>
+ <c:option value="ASYNCIO" name="ASYNCIO"/>
+ <c:option value="NIO" name="NIO"/>
+ </c:property-options>
</c:simple-property>
<c:simple-property name="live-connector-ref"
required="false" type="string" readOnly="false"
description="The name of the connector used to connect to the live connector. If this
server is not a backup that uses shared nothing HA, it's value is
'undefined'."/>
<c:simple-property name="log-journal-write-rate"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether to periodically log the
journal's write rate and flush rate. The default value is false."/>
@@ -3916,8 +3911,8 @@
<c:simple-property name="persist-delivery-count-before-delivery"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether the delivery count is persisted
before delivery. False means that this only happens after a message has been cancelled.
The default value is false."/>
<c:simple-property name="persist-id-cache"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether IDs are persisted to the journal.
The default value is true."/>
<c:simple-property name="persistence-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server will use the file based
journal for persistence. The default value is true."/>
- <c:list-property name="remoting-interceptors"
required="false" description="The list of interceptor classes used by this
server." >
- <c:simple-property name="remoting-interceptors" />
+ <c:list-property name="remoting-interceptors"
required="false" description="The list of interceptor classes used by this
server.">
+ <c:simple-property name="remoting-interceptors"/>
</c:list-property>
<c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
<c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The number of threads that the main scheduled
thread pool has. The default value is 5."/>
@@ -3979,7 +3974,7 @@
</results>
</operation>
- <operation name="subsystem:expire-messages" displayName="Expire
Messages" description="Expire the messages matching the given
filter.">
+ <operation name="subsystem:expire-messages" displayName="Expire
Messages" description="Expire the messages matching the given filter.">
<parameters>
<c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
</parameters>
@@ -4058,7 +4053,7 @@
<operation name="subsystem:pause" displayName="Pause"
description="Pause the queue.">
<results>
- <c:simple-property name="operationResult"
description="Pause the queue." />
+ <c:simple-property name="operationResult"
description="Pause the queue."/>
</results>
</operation>
@@ -4082,13 +4077,13 @@
<operation name="subsystem:reset-message-counter"
displayName="Reset Message Counter" description="Reset the message
counters.">
<results>
- <c:simple-property name="operationResult"
description="Reset the message counters." />
+ <c:simple-property name="operationResult"
description="Reset the message counters."/>
</results>
</operation>
<operation name="subsystem:resume" displayName="Resume"
description="Resume the queue.">
<results>
- <c:simple-property name="operationResult"
description="Resume the queue." />
+ <c:simple-property name="operationResult"
description="Resume the queue."/>
</results>
</operation>
@@ -4124,8 +4119,8 @@
<metric property="temporary" dataType="trait"
description="Whether the queue is temporary."/>
<resource-configuration>
- <c:list-property name="entries" required="true"
readOnly="true" description="The jndi names the queue will be bound
to." >
- <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ <c:list-property name="entries" required="true"
readOnly="true" description="The jndi names the queue will be bound
to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
</c:list-property>
</resource-configuration>
</service>
@@ -4152,7 +4147,7 @@
<operation name="subsystem:drop-all-subscriptions"
displayName="Drop All Subscriptions" description="Drop all subscriptions
from this topic.">
<results>
- <c:simple-property name="operationResult"
description="Drop all subscriptions from this topic." />
+ <c:simple-property name="operationResult" description="Drop
all subscriptions from this topic."/>
</results>
</operation>
@@ -4162,7 +4157,7 @@
<c:simple-property name="subscription-name"
required="true" type="string" readOnly="false"
description="The name of the durable subscription."/>
</parameters>
<results>
- <c:simple-property name="operationResult"
description="Drop a durable subscription" />
+ <c:simple-property name="operationResult" description="Drop
a durable subscription"/>
</results>
</operation>
@@ -4250,6 +4245,7 @@
</service>
+
<service name="EJB3 Runtime"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4266,9 +4262,9 @@
</plugin-configuration>
<service name="Message Driven Bean Runtime"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="Bean component included in the deployment.">
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Bean component included in the deployment.">
<plugin-configuration>
<c:simple-property name="path"
default="message-driven-bean" readOnly="true"/>
@@ -4282,8 +4278,8 @@
<resource-configuration>
<c:simple-property name="component-class-name"
required="false" type="string" readOnly="true"
description="The component's class name."/>
- <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component." >
- <c:simple-property name="declared-role" />
+ <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component.">
+ <c:simple-property name="declared-role"/>
</c:list-property>
<c:simple-property name="run-as-role" required="false"
type="string" readOnly="true" description="The run-as role (if
any) for this EJB component."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The security domain
for this EJB component."/>
@@ -4311,9 +4307,9 @@
</service>
<service name="Singleton Bean Runtime"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="Singleton bean component included in the
deployment.">
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Singleton bean component included in the
deployment.">
<plugin-configuration>
<c:simple-property name="path" default="singleton-bean"
readOnly="true"/>
@@ -4321,8 +4317,8 @@
<resource-configuration>
<c:simple-property name="component-class-name"
required="false" type="string" readOnly="true"
description="The component's class name."/>
- <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component." >
- <c:simple-property name="declared-role" />
+ <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component.">
+ <c:simple-property name="declared-role"/>
</c:list-property>
<c:simple-property name="run-as-role" required="false"
type="string" readOnly="true" description="The run-as role (if
any) for this EJB component."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The security domain
for this EJB component."/>
@@ -4350,9 +4346,9 @@
</service>
<service name="Stateless Session Bean Runtime"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="Stateless session bean component included in the
deployment.">
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Stateless session bean component included in the
deployment.">
<plugin-configuration>
<c:simple-property name="path"
default="stateless-session-bean" readOnly="true"/>
@@ -4366,8 +4362,8 @@
<resource-configuration>
<c:simple-property name="component-class-name"
required="false" type="string" readOnly="true"
description="The component's class name."/>
- <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component." >
- <c:simple-property name="declared-role" />
+ <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component.">
+ <c:simple-property name="declared-role"/>
</c:list-property>
<c:simple-property name="run-as-role" required="false"
type="string" readOnly="true" description="The run-as role (if
any) for this EJB component."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The security domain
for this EJB component."/>
@@ -4411,8 +4407,8 @@
<resource-configuration>
<c:simple-property name="component-class-name"
required="false" type="string" readOnly="true"
description="The component's class name."/>
- <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component." >
- <c:simple-property name="declared-roles" />
+ <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component.">
+ <c:simple-property name="declared-roles"/>
</c:list-property>
<c:simple-property name="run-as-role" required="false"
type="string" readOnly="true" description="The run-as role (if
any) for this EJB component."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The security domain
for this EJB component."/>
@@ -4430,8 +4426,8 @@
<resource-configuration>
<c:simple-property name="component-class-name"
required="false" type="string" readOnly="true"
description="The component's class name."/>
- <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component." >
- <c:simple-property name="declared-role" />
+ <c:list-property name="declared-roles" description="The roles
declared (via @DeclareRoles) on this EJB component.">
+ <c:simple-property name="declared-role"/>
</c:list-property>
<c:simple-property name="run-as-role" required="false"
type="string" readOnly="true" description="The run-as role (if
any) for this EJB component."/>
<c:simple-property name="security-domain" required="false"
type="string" readOnly="true" description="The security domain
for this EJB component."/>
@@ -4457,9 +4453,9 @@
</plugin-configuration>
<service name="Endpoint Runtime"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="Webservice endpoint.">
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="Webservice endpoint.">
<plugin-configuration>
<c:simple-property name="path" default="endpoint"
readOnly="true"/>
@@ -4484,6 +4480,7 @@
</service>
+
<service name="JPA Runtime"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4511,19 +4508,19 @@
<operation name="subsystem:clear" description="Clear
statistics.">
<results>
- <c:simple-property name="operationResult" description="Clear
statistics." />
+ <c:simple-property name="operationResult" description="Clear
statistics."/>
</results>
</operation>
<operation name="subsystem:evict-all" description="Evict all
entities from second level cache.">
<results>
- <c:simple-property name="operationResult" description="Evict
all entities from second level cache." />
+ <c:simple-property name="operationResult" description="Evict
all entities from second level cache."/>
</results>
</operation>
<operation name="subsystem:summary" description="Log the
statistics.">
<results>
- <c:simple-property name="operationResult" description="Log
the statistics." />
+ <c:simple-property name="operationResult" description="Log
the statistics."/>
</results>
</operation>
@@ -4638,8 +4635,7 @@
class="BaseComponent"
discovery="SubsystemDiscovery"
description="Management of the deployment scanner"
- singleton="true"
- >
+ singleton="true">
<runs-inside>
<parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
</runs-inside>
@@ -4676,6 +4672,7 @@
</service>
+
<service name="JacORB"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4770,6 +4767,7 @@
</service>
+
<service name="JCA"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4896,6 +4894,7 @@
</service>
+
<service name="JAXR"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4935,6 +4934,7 @@
</service>
+
<service name="JPA"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4958,6 +4958,7 @@
</service>
+
<service name="CMP"
class="BaseComponent"
discovery="SubsystemDiscovery"
@@ -4975,412 +4976,414 @@
<c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
- <service name="HiloKeygenerator"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="HiLo based key generators."
- createDeletePolicy="both">
+ <service name="HiloKeygenerator"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="HiLo based key generators."
+ createDeletePolicy="both">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="hilo-keygenerator"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="block-size" required="false"
type="long" readOnly="true" description="The block
size"/>
+ <c:simple-property name="create-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create create the tables"/>
+ <c:simple-property name="create-table-ddl"
required="false" type="string" readOnly="true"
description="The DDL used to create the table"/>
+ <c:simple-property name="data-source" required="true"
type="string" readOnly="true" description="The datasource used
for sequence generation">
+ <c:option-source target="resource"
expression="type='DataSource (Standalone)'
plugin=&pluginName;"/>
+ </c:simple-property>
+ <c:simple-property name="drop-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create drop the tables"/>
+ <c:simple-property name="id-column" required="true"
type="string" readOnly="true" description="The ID column
name"/>
+ <c:simple-property name="select-hi-ddl" required="false"
type="string" readOnly="true" description="The DDL used to select
the hi value"/>
+ <c:simple-property name="sequence-column" required="true"
type="string" description="The sequence column name"/>
+ <c:simple-property name="sequence-name" required="true"
type="string" description="The name of the sequence"/>
+ <c:simple-property name="table-name" required="true"
type="string" description="The table name"/>
+ </resource-configuration>
+ </service>
+
+ </service>
+
+
+ <service name="EE"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the EE subsystem."
+ singleton="true">
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="&pluginName;"/>
+ <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
+ <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=ee"
readOnly="true"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="ear-subdeployments-isolated"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Flag indicating whether each of the
subdeployments within a .ear can access classes belonging to another subdeployment within
the same .ear. A value of false means the subdeployments can see classes belonging to
other subdeployments within the .ear. The default value is false."/>
+ <c:list-property name="global-modules" description="A list of
modules that should be made available to all deployments."
required="false">
+ <c:map-property name="globalmodule" displayName="Global
module">
+ <c:simple-property name="name" type="string"
displayName="Name" required="true"/>
+ <c:simple-property name="slot" type="string"
displayName="Slot" required="true"/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+
+ <service name="Security"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="&pluginName;"/>
+ <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
+ <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Adds the security
subsystem.">
+ <parameters>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
description="Sets the copy mode of subjects done by the security managers to be deep
copies that makes copies of the subject principals and credentials if they are cloneable.
It should be set to true if subject include mutable content that can be corrupted when
multiple threads have the same identity and cache flushes/logout clearing the subject in
one thread results in subject references affecting other threads."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds the
security subsystem."/>
+ </results>
+ </operation>
+
+ <operation name="remove" description="Removes the security
subsystem.">
+ <results>
+ <c:simple-property name="operationResult" description="Removes
the security subsystem."/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false"
+ description="Sets the copy mode of subjects done by the
security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads. The default value is false."/>
+ </resource-configuration>
+
+ <service name="Security Domain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-domain"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Add a security
domain.">
+ <parameters>
+ <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Add a
security domain."/>
+ </results>
+ </operation>
+
+ <operation name="flush-cache" description="Remove entries stored
in the authentication cache for this security domain. A single entry can be flushed by
using the principal argument with the username as the value. If no argument is passed to
the operation, all entries are flushed.">
+ <results>
+ <c:simple-property name="operationResult" description="Remove
entries stored in the authentication cache for this security domain. A single entry can be
flushed by using the principal argument with the username as the value. If no argument is
passed to the operation, all entries are flushed."/>
+ </results>
+ </operation>
+
+ <operation name="list-cached-principals" description="Lists the
principals stored in the authentication cache for this security domain.">
+ <results>
+ <c:simple-property name="operationResult" description="Lists
the principals stored in the authentication cache for this security domain."/>
+ </results>
+ </operation>
+
+ <operation name="remove" description="Remove a security
domain.">
+ <results>
+ <c:simple-property name="operationResult" description="Remove
a security domain."/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
+ </resource-configuration>
+
+ <service name="acl"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="acl"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Adds an ACL
configuration">
+ <parameters>
+ <c:simple-property name="acl-modules" required="true"
type="string" readOnly="false" description="List of acl
modules"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
an ACL configuration"/>
+ </results>
+ </operation>
+
+ <operation name="remove" description="Removes an ACL
configuration">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes an ACL configuration"/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:list-property name="acl-modules" required="false"
description="List of acl modules">
+ <c:simple-property name="acl-modules"/>
+ </c:list-property>
+ </resource-configuration>
+
+ </service>
+ <service name="audit"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="audit"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Adds an audit
configuration">
+ <parameters>
+ <c:simple-property name="provider-modules"
required="true" type="string" readOnly="false"
description="List of provider modules"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
an audit configuration"/>
+ </results>
+ </operation>
+
+ <operation name="remove" description="Removes and audit
configuration">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes and audit configuration"/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:list-property name="provider-modules"
required="false" description="List of provider modules">
+ <c:simple-property name="provider-modules"/>
+ </c:list-property>
+ </resource-configuration>
+
+ </service>
+ <service name="authentication"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authentication"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Adds a traditional
authentication configuration">
+ <parameters>
+ <c:simple-property name="login-modules"
required="true" type="string" readOnly="false"
description="List of authentication modules"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
a traditional authentication configuration"/>
+ </results>
+ </operation>
+
+ <operation name="remove" description="Removes a traditional
authentication configuration">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes a traditional authentication configuration"/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:list-property name="login-modules" required="false"
description="List of authentication modules">
+ <c:simple-property name="login-modules"/>
+ </c:list-property>
+ </resource-configuration>
+
+ </service>
+ <service name="authorization"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="authorization"/>
+ </plugin-configuration>
+
+ <operation name="add" description="Adds an authorization
configuration">
+ <parameters>
+ <c:simple-property name="policy-modules"
required="true" type="string" readOnly="false"
description="List of authorization modules"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
an authorization configuration"/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="hilo-keygenerator"/>
- </plugin-configuration>
+ <operation name="remove" description="Removes an authorization
configuration">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes an authorization configuration"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="block-size" required="false"
type="long" readOnly="true" description="The block
size"/>
- <c:simple-property name="create-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create create the tables"/>
- <c:simple-property name="create-table-ddl"
required="false" type="string" readOnly="true"
description="The DDL used to create the table"/>
- <c:simple-property name="data-source" required="true"
type="string" readOnly="true" description="The datasource used
for sequence generation">
- <c:option-source target="resource"
expression="type='DataSource (Standalone)'
plugin=&pluginName;"/>
- </c:simple-property>
- <c:simple-property name="drop-table" required="false"
type="boolean" readOnly="true" description="Boolean to determine
whether to create drop the tables"/>
- <c:simple-property name="id-column" required="true"
type="string" readOnly="true" description="The ID column
name"/>
- <c:simple-property name="select-hi-ddl" required="false"
type="string" readOnly="true" description="The DDL used to select
the hi value"/>
- <c:simple-property name="sequence-column" required="true"
type="string" description="The sequence column name"/>
- <c:simple-property name="sequence-name" required="true"
type="string" description="The name of the sequence"/>
- <c:simple-property name="table-name" required="true"
type="string" description="The table name"/>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:list-property name="policy-modules" required="false"
description="List of authorization modules">
+ <c:simple-property name="policy-modules"/>
+ </c:list-property>
+ </resource-configuration>
- </service>
+ </service>
+ <service name="identity-trust"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <service name="EE"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- description="The configuration of the EE subsystem."
- singleton="true">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="identity-trust"/>
+ </plugin-configuration>
- <runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
- <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
- </runs-inside>
+ <operation name="add" description="Adds an identity trust
configuration.">
+ <parameters>
+ <c:simple-property name="trust-modules"
required="true" type="string" readOnly="false"
description="List of trust modules"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
an identity trust configuration."/>
+ </results>
+ </operation>
- <plugin-configuration>
- <c:simple-property name="path" default="subsystem=ee"
readOnly="true"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
- </plugin-configuration>
+ <operation name="remove" description="Removes an identity trust
configuration.">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes an identity trust configuration."/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="ear-subdeployments-isolated"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Flag indicating whether each of the
subdeployments within a .ear can access classes belonging to another subdeployment within
the same .ear. A value of false means the subdeployments can see classes belonging to
other subdeployments within the .ear. The default value is false."/>
- <c:list-property name="global-modules" description="A list of
modules that should be made available to all deployments."
required="false">
- <c:map-property name="globalmodule" displayName="Global
module">
- <c:simple-property name="name" type="string"
displayName="Name" required="true"/>
- <c:simple-property name="slot" type="string"
displayName="Slot" required="true"/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:list-property name="trust-modules" required="false"
description="List of trust modules">
+ <c:simple-property name="trust-modules"/>
+ </c:list-property>
+ </resource-configuration>
- <service name="Security"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
+ </service>
+ <service name="jsse"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
- <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
- </runs-inside>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="jsse"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
- </plugin-configuration>
+ <operation name="add" description="Adds a JSSE
configuration">
+ <parameters>
+ <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
+ <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
+ <c:simple-property name="truststore" required="false"
type="string" readOnly="false" description="Configures a JSSE
trust store"/>
+ <c:simple-property name="trust-manager"
required="false" type="string" readOnly="false"
description="JSEE Trust Manager factory"/>
+ <c:simple-property name="key-manager" required="false"
type="string" readOnly="false" description="JSEE Key Manager
factory"/>
+ <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
+ <c:simple-property name="keystore" required="false"
type="string" readOnly="false" description="Configures a JSSE key
store"/>
+ <c:simple-property name="additional-properties"
required="false" type="string" readOnly="false"
description="Additional properties that may be necessary to configure
JSSE."/>
+ <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
+ <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
+ <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
a JSSE configuration"/>
+ </results>
+ </operation>
- <operation name="add" description="Adds the security
subsystem.">
- <parameters>
- <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
description="Sets the copy mode of subjects done by the security managers to be deep
copies that makes copies of the subject principals and credentials if they are cloneable.
It should be set to true if subject include mutable content that can be corrupted when
multiple threads have the same identity and cache flushes/logout clearing the subject in
one thread results in subject references affecting other threads."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds the
security subsystem." />
- </results>
- </operation>
+ <operation name="remove" description="Removes a JSSE
configuration.">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes a JSSE configuration."/>
+ </results>
+ </operation>
- <operation name="remove" description="Removes the security
subsystem.">
- <results>
- <c:simple-property name="operationResult" description="Removes
the security subsystem." />
- </results>
- </operation>
+ <resource-configuration>
+ <c:simple-property name="cipher-suites" required="false"
type="string" readOnly="false" description="Comma separated list
of cipher suites to enable on SSLSockets."/>
+ <c:simple-property name="client-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the client alias."/>
+ <c:simple-property name="client-auth" required="false"
type="boolean" readOnly="false" description="Boolean attribute to
indicate if client's certificates should also be authenticated on the server
side."/>
+ <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the KeyManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="keystore" required="false"
description="Configures a JSSE key store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the keystore. Either this or 'truststore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
keystore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the KeyStore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
+ <c:simple-property name="server-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the server alias."/>
+ <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
+ <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory">
+ <c:simple-property name="algorithm" required="false"
type="string" readOnly="true" description="Algorithm to use when
creating the TrustManagerFactory."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the TrustManagerFactory."/>
+ </c:map-property>
+ <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store">
+ <c:simple-property name="password" required="false"
type="string" readOnly="true" description="Sets the password of
the truststore. Either this or 'keystore-password' must be
present otherwise the security domain will be useless."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
+ <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
truststore."/>
+ <c:simple-property name="provider" required="false"
type="string" readOnly="true" description="Provider class name to
use when creating the truststore."/>
+ <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
+ </c:map-property>
+ </resource-configuration>
- <resource-configuration>
- <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="false"
defaultValue="false"
- description="Sets the copy mode of subjects done by the security managers
to be deep copies that makes copies of the subject principals and credentials if they are
cloneable. It should be set to true if subject include mutable content that can be
corrupted when multiple threads have the same identity and cache flushes/logout clearing
the subject in one thread results in subject references affecting other threads. The
default value is false."/>
- </resource-configuration>
+ </service>
+ <service name="mapping"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <service name="Security Domain"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="mapping"/>
+ </plugin-configuration>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="security-domain"/>
- </plugin-configuration>
+ <operation name="add" description="Adds a mapping
configuration.">
+ <parameters>
+ <c:simple-property name="mapping-modules"
required="true" type="string" readOnly="false"
description="List of modules that map principal, role, and credential
information"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds
a mapping configuration."/>
+ </results>
+ </operation>
- <operation name="add" description="Add a security
domain.">
- <parameters>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Add
a security domain." />
- </results>
- </operation>
+ <operation name="remove" description="Removes a mapping
configuration.">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes a mapping configuration."/>
+ </results>
+ </operation>
- <operation name="flush-cache" description="Remove entries stored
in the authentication cache for this security domain. A single entry can be flushed by
using the principal argument with the username as the value. If no argument is passed to
the operation, all entries are flushed.">
- <results>
- <c:simple-property name="operationResult"
description="Remove entries stored in the authentication cache for this security
domain. A single entry can be flushed by using the principal argument with the username as
the value. If no argument is passed to the operation, all entries are flushed."
/>
- </results>
- </operation>
+ <resource-configuration>
+ <c:list-property name="mapping-modules" required="false"
description="List of modules that map principal, role, and credential
information">
+ <c:simple-property name="mapping-modules"/>
+ </c:list-property>
+ </resource-configuration>
- <operation name="list-cached-principals" description="Lists the
principals stored in the authentication cache for this security domain.">
- <results>
- <c:simple-property name="operationResult"
description="Lists the principals stored in the authentication cache for this
security domain." />
- </results>
- </operation>
+ </service>
+ </service>
+ <service name="vault"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
- <operation name="remove" description="Remove a security
domain.">
- <results>
- <c:simple-property name="operationResult"
description="Remove a security domain." />
- </results>
- </operation>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="vault"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="cache-type" required="false"
type="string" readOnly="false" description="Adds a cache to speed
up authentication checks. Allowed values are 'default' to use simple map
as the cache and 'infinispan' to use an Infinispan cache."/>
- </resource-configuration>
-
- <service name="acl"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="acl"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds an ACL
configuration">
- <parameters>
- <c:simple-property name="acl-modules"
required="true" type="string" readOnly="false"
description="List of acl modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds an ACL configuration" />
- </results>
- </operation>
-
- <operation name="remove" description="Removes an ACL
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes an ACL configuration" />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="acl-modules" required="false"
description="List of acl modules" >
- <c:simple-property name="acl-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- <service name="audit"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="audit"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds an audit
configuration">
- <parameters>
- <c:simple-property name="provider-modules"
required="true" type="string" readOnly="false"
description="List of provider modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds an audit configuration" />
- </results>
- </operation>
-
- <operation name="remove" description="Removes and audit
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes and audit configuration" />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="provider-modules"
required="false" description="List of provider modules" >
- <c:simple-property name="provider-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- <service name="authentication"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authentication"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds a traditional
authentication configuration">
- <parameters>
- <c:simple-property name="login-modules"
required="true" type="string" readOnly="false"
description="List of authentication modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds a traditional authentication configuration" />
- </results>
- </operation>
-
- <operation name="remove" description="Removes a traditional
authentication configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes a traditional authentication configuration" />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="login-modules"
required="false" description="List of authentication modules" >
- <c:simple-property name="login-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- <service name="authorization"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="authorization"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds an authorization
configuration">
- <parameters>
- <c:simple-property name="policy-modules"
required="true" type="string" readOnly="false"
description="List of authorization modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds an authorization configuration" />
- </results>
- </operation>
-
- <operation name="remove" description="Removes an
authorization configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes an authorization configuration" />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="policy-modules"
required="false" description="List of authorization modules" >
- <c:simple-property name="policy-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- <service name="identity-trust"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="identity-trust"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds an identity trust
configuration.">
- <parameters>
- <c:simple-property name="trust-modules"
required="true" type="string" readOnly="false"
description="List of trust modules"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds an identity trust configuration." />
- </results>
- </operation>
-
- <operation name="remove" description="Removes an identity
trust configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes an identity trust configuration." />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="trust-modules"
required="false" description="List of trust modules" >
- <c:simple-property name="trust-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- <service name="jsse"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="jsse"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds a JSSE
configuration">
- <parameters>
- <c:simple-property name="client-auth"
required="false" type="boolean" readOnly="false"
description="Boolean attribute to indicate if client's certificates should
also be authenticated on the server side."/>
- <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
- <c:simple-property name="truststore" required="false"
type="string" readOnly="false" description="Configures a JSSE
trust store"/>
- <c:simple-property name="trust-manager" required="false"
type="string" readOnly="false" description="JSEE Trust Manager
factory"/>
- <c:simple-property name="key-manager" required="false"
type="string" readOnly="false" description="JSEE Key Manager
factory"/>
- <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
- <c:simple-property name="keystore" required="false"
type="string" readOnly="false" description="Configures a JSSE key
store"/>
- <c:simple-property name="additional-properties"
required="false" type="string" readOnly="false"
description="Additional properties that may be necessary to configure
JSSE."/>
- <c:simple-property name="server-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the server alias."/>
- <c:simple-property name="client-alias" required="false"
type="string" readOnly="false" description="Preferred alias to
use when the KeyManager chooses the client alias."/>
- <c:simple-property name="cipher-suites" required="false"
type="string" readOnly="false" description="Comma separated list
of cipher suites to enable on SSLSockets."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds a JSSE configuration" />
- </results>
- </operation>
-
- <operation name="remove" description="Removes a JSSE
configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes a JSSE configuration." />
- </results>
- </operation>
-
- <resource-configuration>
- <c:simple-property name="cipher-suites"
required="false" type="string" readOnly="false"
description="Comma separated list of cipher suites to enable on
SSLSockets."/>
- <c:simple-property name="client-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the client
alias."/>
- <c:simple-property name="client-auth"
required="false" type="boolean" readOnly="false"
description="Boolean attribute to indicate if client's certificates should
also be authenticated on the server side."/>
- <c:map-property name="key-manager" required="false"
description="JSEE Key Manager factory" >
- <c:simple-property name="algorithm"
required="false" type="string" readOnly="true"
description="Algorithm to use when creating the KeyManagerFactory."/>
- <c:simple-property name="provider"
required="false" type="string" readOnly="true"
description="Provider class name to use when creating the
KeyManagerFactory."/>
- </c:map-property>
- <c:map-property name="keystore" required="false"
description="Configures a JSSE key store" >
- <c:simple-property name="password"
required="false" type="string" readOnly="true"
description="Sets the password of the keystore. Either this or
'truststore-password' must be present otherwise the security
domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the keystore.
If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
keystore."/>
- <c:simple-property name="provider"
required="false" type="string" readOnly="true"
description="Provider class name to use when creating the KeyStore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the keystore Provider constructor when
instantiating it."/>
- </c:map-property>
- <c:simple-property name="protocols" required="false"
type="string" readOnly="false" description="Comma separated list
of protocols to enable on SSLSockets."/>
- <c:simple-property name="server-alias"
required="false" type="string" readOnly="false"
description="Preferred alias to use when the KeyManager chooses the server
alias."/>
- <c:simple-property name="service-auth-token"
required="false" type="string" readOnly="false"
description="Token to retrieve PrivateKeys from the KeyStore."/>
- <c:map-property name="trust-manager" required="false"
description="JSEE Trust Manager factory" >
- <c:simple-property name="algorithm"
required="false" type="string" readOnly="true"
description="Algorithm to use when creating the TrustManagerFactory."/>
- <c:simple-property name="provider"
required="false" type="string" readOnly="true"
description="Provider class name to use when creating the
TrustManagerFactory."/>
- </c:map-property>
- <c:map-property name="truststore" required="false"
description="Configures a JSSE trust store" >
- <c:simple-property name="password"
required="false" type="string" readOnly="true"
description="Sets the password of the truststore. Either this or
'keystore-password' must be present otherwise the security
domain will be useless."/>
- <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Type of the
truststore. If not set, type defaults to 'JKS'."/>
- <c:simple-property name="url" required="false"
type="string" readOnly="true" description="URL of the
truststore."/>
- <c:simple-property name="provider"
required="false" type="string" readOnly="true"
description="Provider class name to use when creating the truststore."/>
- <c:simple-property name="provider-argument"
required="false" type="string" readOnly="true"
description="String argument to pass to the truststore Provider constructor when
instantiating it."/>
- </c:map-property>
- </resource-configuration>
-
- </service>
- <service name="mapping"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="mapping"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds a mapping
configuration.">
- <parameters>
- <c:simple-property name="mapping-modules"
required="true" type="string" readOnly="false"
description="List of modules that map principal, role, and credential
information"/>
- </parameters>
- <results>
- <c:simple-property name="operationResult"
description="Adds a mapping configuration." />
- </results>
- </operation>
-
- <operation name="remove" description="Removes a mapping
configuration.">
- <results>
- <c:simple-property name="operationResult"
description="Removes a mapping configuration." />
- </results>
- </operation>
-
- <resource-configuration>
- <c:list-property name="mapping-modules"
required="false" description="List of modules that map principal, role, and
credential information" >
- <c:simple-property name="mapping-modules" />
- </c:list-property>
- </resource-configuration>
-
- </service>
- </service>
- <service name="vault"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="vault"/>
- </plugin-configuration>
-
- <operation name="add" description="Adds a security vault
configuration">
- <parameters>
- <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
- <c:simple-property name="options" required="false"
type="string" readOnly="false" description="Security Vault
options."/>
- </parameters>
- <results>
- <c:simple-property name="operationResult" description="Adds
a security vault configuration" />
- </results>
- </operation>
+ <operation name="add" description="Adds a security vault
configuration">
+ <parameters>
+ <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
+ <c:simple-property name="options" required="false"
type="string" readOnly="false" description="Security Vault
options."/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult" description="Adds a
security vault configuration"/>
+ </results>
+ </operation>
- <operation name="remove" description="Removes a security vault
configuration">
- <results>
- <c:simple-property name="operationResult"
description="Removes a security vault configuration" />
- </results>
- </operation>
+ <operation name="remove" description="Removes a security vault
configuration">
+ <results>
+ <c:simple-property name="operationResult"
description="Removes a security vault configuration"/>
+ </results>
+ </operation>
- <resource-configuration>
- <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="code" required="false"
type="string" readOnly="false" description="Fully Qualified Name
of the Security Vault Implementation."/>
+ </resource-configuration>
- </service>
- </service><!-- End of Security subsystem service -->
+ </service>
+ </service> <!-- Security -->
<service name="Threads"
@@ -5786,19 +5789,19 @@
<operation name="subsystem:flush-all-connection-in-pool"
displayName="Flush All Connections in Pool" description="Flushes all
connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all connections in the pool"/>
</results>
</operation>
- <operation name="subsystem:flush-idle-connection-in-pool"
displayName="Flush Idle Connections in Pool" description="Flushes all idle
connections in the pool">
+ <operation name="subsystem:flush-idle-connection-in-pool"
displayName="Flush Idle Connections in Pool" description="Flushes all idle
connections in the pool">
<results>
- <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool" />
+ <c:simple-property name="operationResult"
description="Flushes all idle connections in the pool"/>
</results>
</operation>
<operation name="subsystem:test-connection-in-pool"
displayName="Test Connection in Pool" description="Test if a connection can
be obtained">
<results>
- <c:simple-property name="operationResult"
description="Test if a connection can be obtained" />
+ <c:simple-property name="operationResult" description="Test
if a connection can be obtained"/>
</results>
</operation>
@@ -5830,7 +5833,7 @@
<c:simple-property name="pool-use-strict-min"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Specifies if the
min-pool-size should be considered strictly. The default value is
false."/>
<c:simple-property name="recovery-password"
required="false" type="string" readOnly="false"
description="The password used for recovery"/>
<c:simple-property name="recovery-plugin-class-name"
required="false" type="string" readOnly="false"
description="The fully qualified class name of the recovery plugin
implementation"/>
- <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin" >
+ <c:map-property name="recovery-plugin-properties"
required="false" displayName="Recovery Plugin Properties"
description="The properties for the recovery plugin">
<c:simple-property name="recovery-plugin-properties"
required="false" type="string" readOnly="false"
displayName="Recovery Plugin Property"/>
</c:map-property>
<c:simple-property name="recovery-security-domain"
required="false" type="string" readOnly="false"
description="The security domain used for recovery"/>
@@ -5848,10 +5851,10 @@
</resource-configuration>
<service name="Config Properties (Connection Definition)"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="Custom defined config properties."
- createDeletePolicy="both">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Custom defined config properties."
+ createDeletePolicy="both">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="config-properties"/>
@@ -5868,9 +5871,9 @@
<service name="Infinispan"
- discovery="SubsystemDiscovery"
- class="IspnComponent"
- singleton="true">
+ discovery="SubsystemDiscovery"
+ class="IspnComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -5970,19 +5973,19 @@
singleton="true"
description="The description of the transport used by this cache
container">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="transport=TRANSPORT"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="transport=TRANSPORT"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="cluster" required="false"
type="string" readOnly="false" description="The name of the group
communication cluster"/>
- <c:simple-property name="executor" required="false"
type="string" readOnly="false" description="The executor to use
for the transport"/>
- <c:simple-property name="lock-timeout"
required="false" type="long" readOnly="false"
defaultValue="240000" description="The timeout for locks for the transport.
The default value is 240000."/>
- <c:simple-property name="machine" required="false"
type="string" readOnly="false" description="A machine identifier
for the transport"/>
- <c:simple-property name="rack" required="false"
type="string" readOnly="false" description="A rack identifier for
the transport"/>
- <c:simple-property name="site" required="false"
type="string" readOnly="false" description="A site identifier for
the transport"/>
- <c:simple-property name="stack" required="false"
type="string" readOnly="false" description="The jgroups stack to
use for the transport"/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="cluster" required="false"
type="string" readOnly="false" description="The name of the group
communication cluster"/>
+ <c:simple-property name="executor" required="false"
type="string" readOnly="false" description="The executor to use
for the transport"/>
+ <c:simple-property name="lock-timeout" required="false"
type="long" readOnly="false" defaultValue="240000"
description="The timeout for locks for the transport. The default value is
240000."/>
+ <c:simple-property name="machine" required="false"
type="string" readOnly="false" description="A machine identifier
for the transport"/>
+ <c:simple-property name="rack" required="false"
type="string" readOnly="false" description="A rack identifier for
the transport"/>
+ <c:simple-property name="site" required="false"
type="string" readOnly="false" description="A site identifier for
the transport"/>
+ <c:simple-property name="stack" required="false"
type="string" readOnly="false" description="The jgroups stack to
use for the transport"/>
+ </resource-configuration>
</service>
</service>
@@ -5990,9 +5993,9 @@
<service name="JGroups"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -6010,9 +6013,9 @@
<service name="Remoting"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -6044,19 +6047,19 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
- <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
- <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
+ <parent-resource-type name="Profile"
plugin="&pluginName;"/>
+ <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
+ <parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
- <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=osgi"/>
+ <c:simple-property name="managedRuntime" default="true"
type="boolean" readOnly="true"/>
</plugin-configuration>
<operation name="subsystem:activate" displayName="Activate"
description="Activate the OSGi subsystem.">
<results>
- <c:simple-property name="operationResult"
description="Activate the OSGi subsystem." />
+ <c:simple-property name="operationResult" description="Activate
the OSGi subsystem."/>
</results>
</operation>
@@ -6110,13 +6113,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the bundle.">
<results>
- <c:simple-property name="operationResult" description="Starts
the bundle." />
+ <c:simple-property name="operationResult" description="Starts
the bundle."/>
</results>
</operation>
<operation name="subystem:stop" displayName="Stop"
description="Stops the bundle.">
<results>
- <c:simple-property name="operationResult" description="Stops
the bundle." />
+ <c:simple-property name="operationResult" description="Stops
the bundle."/>
</results>
</operation>
@@ -6137,8 +6140,8 @@
singleton="true">
<runs-inside>
- <parent-resource-type name="Profile"
plugin="&pluginName;"/>
- <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
+ <parent-resource-type name="Profile"
plugin="&pluginName;"/>
+ <parent-resource-type name="JBossAS7 Standalone Server"
plugin="&pluginName;"/>
<parent-resource-type name="Managed Server"
plugin="&pluginName;"/>
</runs-inside>
@@ -6153,7 +6156,7 @@
createDeletePolicy="both">
<runs-inside>
- <parent-resource-type name="Mail"
plugin="&pluginName;"/>
+ <parent-resource-type name="Mail"
plugin="&pluginName;"/>
</runs-inside>
<plugin-configuration>
@@ -6172,75 +6175,75 @@
singleton="true"
createDeletePolicy="both">
- <runs-inside>
- <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
- </runs-inside>
+ <runs-inside>
+ <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="server=smtp"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=smtp"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
- <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
- <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
- <service name="IMAP Mail Server"
+ <service name="IMAP Mail Server"
discovery="SubsystemDiscovery"
class="BaseComponent"
singleton="true"
createDeletePolicy="both">
- <runs-inside>
- <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
- </runs-inside>
+ <runs-inside>
+ <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="server=imap"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=imap"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
- <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
- <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
- </resource-configuration>
- </service>
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
- <service name="POP3 Mail Server"
+ <service name="POP3 Mail Server"
discovery="SubsystemDiscovery"
class="BaseComponent"
singleton="true"
createDeletePolicy="both">
- <runs-inside>
- <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="server=pop3"/>
- </plugin-configuration>
+ <runs-inside>
+ <parent-resource-type name="Mail Session"
plugin="&pluginName;"/>
+ </runs-inside>
- <resource-configuration>
- <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
- <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
- <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
- <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
- </resource-configuration>
- </service>
- </service>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="server=pop3"/>
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="outbound-socket-binding-ref"
required="false" type="string" readOnly="false"
description="Outbound Socket binding to POP3 server"/>
+ <c:simple-property name="password" required="false"
type="string" readOnly="false" description="Password to
authenticate on server"/>
+ <c:simple-property name="ssl" required="false"
type="boolean" readOnly="false" defaultValue="false"
description="Does server requires SSL?. The default value is false."/>
+ <c:simple-property name="username" required="false"
type="string" readOnly="false" description="Username to
authenticate on server"/>
+ </resource-configuration>
+ </service>
</service>
+ </service>
- <service name="Messaging-Provider"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- description="The messaging subsystems"
- singleton="true">
+
+ <service name="Messaging-Provider"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The messaging subsystems"
+ singleton="true">
<runs-inside>
<parent-resource-type name="Profile"
plugin="&pluginName;"/>
@@ -6283,7 +6286,7 @@
<operation name="subsystem:force-failover" displayName="Force
Failover" description="Force the messaging server to stop and notify clients to
failover.">
<results>
- <c:simple-property name="operationResult" description="Force
the messaging server to stop and notify clients to failover." />
+ <c:simple-property name="operationResult" description="Force
the messaging server to stop and notify clients to failover."/>
</results>
</operation>
@@ -6434,13 +6437,13 @@
<operation name="subsystem:reset-all-message-counter-histories"
displayName="Reset All Message Counter Histories" description="Reset all
message counters history.">
<results>
- <c:simple-property name="operationResult" description="Reset
all message counters history." />
+ <c:simple-property name="operationResult" description="Reset
all message counters history."/>
</results>
</operation>
<operation name="subsystem:reset-all-message-counters"
displayName="Reset All Message Counters" description="Reset all message
counters.">
<results>
- <c:simple-property name="operationResult" description="Reset
all message counters." />
+ <c:simple-property name="operationResult" description="Reset
all message counters."/>
</results>
</operation>
@@ -6502,8 +6505,8 @@
<c:simple-property name="persist-delivery-count-before-delivery"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether the delivery count is persisted
before delivery. False means that this only happens after a message has been cancelled.
The default value is false."/>
<c:simple-property name="persist-id-cache"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether IDs are persisted to the journal.
The default value is true."/>
<c:simple-property name="persistence-enabled"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the server will use the file based
journal for persistence. The default value is true."/>
- <c:list-property name="remoting-interceptors"
required="false" description="The list of interceptor classes used by this
server." >
- <c:simple-property name="remoting-interceptors" />
+ <c:list-property name="remoting-interceptors"
required="false" description="The list of interceptor classes used by this
server.">
+ <c:simple-property name="remoting-interceptors"/>
</c:list-property>
<c:simple-property name="run-sync-speed-test"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Whether on startup to perform a
diagnostic test on how fast your disk can sync. Useful when determining performance
issues. The default value is false."/>
<c:simple-property name="scheduled-thread-pool-max-size:expr"
required="false" type="string" readOnly="false"
defaultValue="5" description="The number of threads that the main scheduled
thread pool has. The default value is 5."/>
@@ -6565,7 +6568,7 @@
</results>
</operation>
- <operation name="subsystem:expire-messages" displayName="Expire
Messages" description="Expire the messages matching the given
filter.">
+ <operation name="subsystem:expire-messages" displayName="Expire
Messages" description="Expire the messages matching the given filter.">
<parameters>
<c:simple-property name="filter" required="false"
type="string" readOnly="false" description="A queue message
filter definition. An undefined or empty filter will match all messages."/>
</parameters>
@@ -6644,7 +6647,7 @@
<operation name="subsystem:pause" displayName="Pause"
description="Pause the queue.">
<results>
- <c:simple-property name="operationResult"
description="Pause the queue." />
+ <c:simple-property name="operationResult"
description="Pause the queue."/>
</results>
</operation>
@@ -6668,13 +6671,13 @@
<operation name="subsystem:reset-message-counter"
displayName="Reset Message Counter" description="Reset the message
counters.">
<results>
- <c:simple-property name="operationResult"
description="Reset the message counters." />
+ <c:simple-property name="operationResult"
description="Reset the message counters."/>
</results>
</operation>
<operation name="subsystem:resume" displayName="Resume"
description="Resume the queue.">
<results>
- <c:simple-property name="operationResult"
description="Resume the queue." />
+ <c:simple-property name="operationResult"
description="Resume the queue."/>
</results>
</operation>
@@ -6709,8 +6712,8 @@
<resource-configuration>
<c:simple-property name="durable" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Whether the queue is durable or not. The default value is
true."/>
- <c:list-property name="entries" required="true"
description="The jndi names the queue will be bound to." >
- <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
+ <c:list-property name="entries" required="true"
description="The jndi names the queue will be bound to.">
+ <c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
</c:list-property>
<c:simple-property name="selector" required="false"
type="string" readOnly="false" description="The queue
selector."/>
</resource-configuration>
@@ -6738,7 +6741,7 @@
<operation name="subsystem:drop-all-subscriptions"
displayName="Drop All Subscriptions" description="Drop all subscriptions
from this topic.">
<results>
- <c:simple-property name="operationResult"
description="Drop all subscriptions from this topic." />
+ <c:simple-property name="operationResult" description="Drop
all subscriptions from this topic."/>
</results>
</operation>
@@ -6748,7 +6751,7 @@
<c:simple-property name="subscription-name"
required="true" type="string" readOnly="false"
description="The name of the durable subscription."/>
</parameters>
<results>
- <c:simple-property name="operationResult"
description="Drop a durable subscription" />
+ <c:simple-property name="operationResult" description="Drop
a durable subscription"/>
</results>
</operation>
@@ -6848,7 +6851,7 @@
<c:map-property name="connector:collapsed"
required="false" readOnly="false" displayName="Connector"
description="Defines the connector to be used. This is mutually exclusive with
discovery-group-name">
<c:simple-property name="name:0" displayName="Name"
description="Connector name. Mutually exclusive with discovery-group-name"
required="false"/>
</c:map-property>
- <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
<c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
</c:list-property>
@@ -6912,7 +6915,7 @@
<c:map-property name="connector:collapsed"
required="false" readOnly="false" displayName="Connector"
description="Defines the connectors. These are stored in a map by connector name,
with the backup connectors stored as the value, or an undefined value if there is no
backup connector.">
<c:simple-property name="name:0" displayName="Name"
description="Connector name." required="false"/>
</c:map-property>
- <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
+ <c:list-property name="entries" required="true"
readOnly="false" displayName="JNDI Names" min="1"
description="The jndi names the connection factory should be bound to.">
<c:simple-property name="entry" type="string"
description="A single JNDI entry"/>
</c:list-property>
@@ -7043,13 +7046,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ <c:simple-property name="operationResult"
description="Starts the acceptor."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ <c:simple-property name="operationResult"
description="Stops the acceptor."/>
</results>
</operation>
@@ -7091,13 +7094,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ <c:simple-property name="operationResult"
description="Starts the acceptor."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ <c:simple-property name="operationResult"
description="Stops the acceptor."/>
</results>
</operation>
@@ -7133,13 +7136,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Starts the acceptor." />
+ <c:simple-property name="operationResult"
description="Starts the acceptor."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the acceptor.">
<results>
- <c:simple-property name="operationResult"
description="Stops the acceptor." />
+ <c:simple-property name="operationResult"
description="Stops the acceptor."/>
</results>
</operation>
@@ -7325,7 +7328,7 @@
<operation name="subsystem:pause" displayName="Pause"
description="Pause the queue.">
<results>
- <c:simple-property name="operationResult"
description="Pause the queue." />
+ <c:simple-property name="operationResult"
description="Pause the queue."/>
</results>
</operation>
@@ -7349,13 +7352,13 @@
<operation name="subsystem:reset-message-counter"
displayName="Reset Message Counter" description="Reset the message
counters.">
<results>
- <c:simple-property name="operationResult"
description="Reset the message counters." />
+ <c:simple-property name="operationResult"
description="Reset the message counters."/>
</results>
</operation>
<operation name="subsystem:resume" displayName="Resume"
description="Resume the queue.">
<results>
- <c:simple-property name="operationResult"
description="Resume the queue." />
+ <c:simple-property name="operationResult"
description="Resume the queue."/>
</results>
</operation>
@@ -7400,15 +7403,15 @@
</plugin-configuration>
<resource-configuration>
- <c:list-property name="binding-names" required="true"
readOnly="true" description="The names of all bindings (both queues and
diverts) bound to this address." >
- <c:simple-property name="binding-names" />
+ <c:list-property name="binding-names" required="true"
readOnly="true" description="The names of all bindings (both queues and
diverts) bound to this address.">
+ <c:simple-property name="binding-names"/>
</c:list-property>
<c:simple-property name="number-of-bytes-per-page"
required="true" type="long" readOnly="true"
description="The number of bytes used by each page for this address."/>
<c:simple-property name="number-of-pages"
required="true" type="integer" readOnly="true"
description="The number of pages used by this address."/>
- <c:list-property name="queue-names" required="true"
readOnly="true" description="The names of the queues associated with the
address." >
- <c:simple-property name="queue-names" />
+ <c:list-property name="queue-names" required="true"
readOnly="true" description="The names of the queues associated with the
address.">
+ <c:simple-property name="queue-names"/>
</c:list-property>
- <c:list-property name="roles" required="true"
readOnly="true" description="A list of the security roles (name and
permissions) associated with the address." >
+ <c:list-property name="roles" required="true"
readOnly="true" description="A list of the security roles (name and
permissions) associated with the address.">
<c:map-property name="role">
<c:simple-property name="name" type="string"
readOnly="true" description="The name of a security role."/>
<c:simple-property name="send" type="boolean"
readOnly="true" description="This permission allows the user to send a
message to matching addresses."/>
@@ -7440,13 +7443,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the cluster connection.">
<results>
- <c:simple-property name="operationResult"
description="Starts the cluster connection." />
+ <c:simple-property name="operationResult"
description="Starts the cluster connection."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the cluster connection.">
<results>
- <c:simple-property name="operationResult"
description="Stops the cluster connection." />
+ <c:simple-property name="operationResult"
description="Stops the cluster connection."/>
</results>
</operation>
@@ -7469,8 +7472,8 @@
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="500" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 500."/>
<c:simple-property name="retry-interval-multiplier"
required="false" type="long" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
- <c:list-property name="static-connectors"
required="false" description="The statically defined list of connectors to
which this cluster connection will make connections. Must be undefined (null) if
'discovery-group-name' is defined." >
- <c:simple-property name="static-connectors" />
+ <c:list-property name="static-connectors"
required="false" description="The statically defined list of connectors to
which this cluster connection will make connections. Must be undefined (null) if
'discovery-group-name' is defined.">
+ <c:simple-property name="static-connectors"/>
</c:list-property>
<c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
</resource-configuration>
@@ -7494,13 +7497,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the broadcast group.">
<results>
- <c:simple-property name="operationResult"
description="Starts the broadcast group." />
+ <c:simple-property name="operationResult"
description="Starts the broadcast group."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the broadcast group.">
<results>
- <c:simple-property name="operationResult"
description="Stops the broadcast group." />
+ <c:simple-property name="operationResult"
description="Stops the broadcast group."/>
</results>
</operation>
@@ -7508,8 +7511,8 @@
<resource-configuration>
<c:simple-property name="broadcast-period"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The period in milliseconds between
consecutive broadcasts. The default value is 2000."/>
- <c:list-property name="connectors" required="false"
description="Specifies the names of connectors that will be broadcast." >
- <c:simple-property name="connectors" />
+ <c:list-property name="connectors" required="false"
description="Specifies the names of connectors that will be broadcast.">
+ <c:simple-property name="connectors"/>
</c:list-property>
<c:simple-property name="socket-binding" required="true"
type="string" readOnly="false" description="The broadcast group
socket binding.">
<c:option-source target="configuration"
expression="*/socket-binding=name:type=SocketBindingGroup"/>
@@ -7544,13 +7547,13 @@
<operation name="subsystem:start" displayName="Start"
description="Starts the bridge.">
<results>
- <c:simple-property name="operationResult"
description="Starts the bridge." />
+ <c:simple-property name="operationResult"
description="Starts the bridge."/>
</results>
</operation>
<operation name="subsystem:stop" displayName="Stop"
description="Stops the bridge.">
<results>
- <c:simple-property name="operationResult"
description="Stops the bridge." />
+ <c:simple-property name="operationResult"
description="Stops the bridge."/>
</results>
</operation>
@@ -7572,8 +7575,8 @@
<c:simple-property name="reconnect-attempts"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="The total number of reconnect
attempts the bridge will make before giving up and shutting down. A value of -1
signifies an unlimited number of attempts. The default value is -1."/>
<c:simple-property name="retry-interval"
required="false" type="long" readOnly="false"
defaultValue="2000" description="The period in milliseconds between
subsequent reconnection attempts, if the connection to the target server has failed. The
default value is 2000."/>
<c:simple-property name="retry-interval-multiplier"
required="false" type="double" readOnly="false"
defaultValue="1.0" description="A multiplier to apply to the time since the
last retry to compute the time to the next retry. This allows you to implement an
exponential backoff between retry attempts. The default value is 1.0."/>
- <c:list-property name="static-connectors"
required="false" description="A list of names of statically defined
connectors used by this bridge. Must be undefined (null) if
'discovery-group-name' is defined." >
- <c:simple-property name="static-connectors" />
+ <c:list-property name="static-connectors"
required="false" description="A list of names of statically defined
connectors used by this bridge. Must be undefined (null) if
'discovery-group-name' is defined.">
+ <c:simple-property name="static-connectors"/>
</c:list-property>
<c:simple-property name="transformer-class-name"
required="false" type="string" readOnly="false"
description="The name of a user-defined class which implements the
org.hornetq.core.server.cluster.Transformer interface."/>
<c:simple-property name="use-duplicate-detection"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Whether the bridge will automatically
insert a duplicate id property into each message that it forwards. The default value is
true."/>
@@ -7614,12 +7617,13 @@
</service>
</service>
- </service><!-- End of Messaging-Provider service -->
+ </service> <!-- Messaging-Provider -->
+
<service name="Param"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- createDeletePolicy="both">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ createDeletePolicy="both">
<runs-inside>
<parent-resource-type name="Acceptor"
plugin="&pluginName;"/>
@@ -7639,4 +7643,5 @@
<c:simple-property name="value" required="true"
type="string" readOnly="false" description="The parameter
value"/>
</resource-configuration>
</service>
+
</plugin>
commit 0f1f93cdd17d6041120907a150079868996651d3
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri May 18 16:59:21 2012 -0400
[BZ 820709] add some unit tests that show discovery working with disc components
getting called only one time. all tests still run so it looks like nothing regressed.
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
new file mode 100644
index 0000000..95379b9
--- /dev/null
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/DiscoveryTest.java
@@ -0,0 +1,155 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2012 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.core.pc.inventory;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.TargetsContainer;
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.arquillian.testng.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+
+import org.rhq.core.clientapi.server.discovery.InventoryReport;
+import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.PluginContainer;
+import org.rhq.core.pc.PluginContainerConfiguration;
+import org.rhq.core.pc.inventory.testplugin.TestResourceComponent;
+import org.rhq.core.pc.inventory.testplugin.TestResourceDiscoveryComponent;
+import org.rhq.test.arquillian.AfterDiscovery;
+import org.rhq.test.arquillian.BeforeDiscovery;
+import org.rhq.test.arquillian.FakeServerInventory;
+import org.rhq.test.arquillian.MockingServerServices;
+import org.rhq.test.arquillian.RunDiscovery;
+import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
+
+/**
+ * A unit test for testing discovery.
+ */
+public class DiscoveryTest extends Arquillian {
+
+ @Deployment(name = "test")
+ @TargetsContainer("pc")
+ public static RhqAgentPluginArchive getTestPlugin() {
+ RhqAgentPluginArchive pluginJar = ShrinkWrap.create(RhqAgentPluginArchive.class,
"test-plugin.jar");
+ return
pluginJar.setPluginDescriptor("test-great-grandchild-discovery-plugin.xml").addClasses(
+ TestResourceDiscoveryComponent.class, TestResourceComponent.class);
+ }
+
+ @ArquillianResource
+ private MockingServerServices serverServices;
+
+ @ArquillianResource
+ private PluginContainerConfiguration pluginContainerConfiguration;
+
+ @ArquillianResource
+ private PluginContainer pluginContainer;
+
+ private FakeServerInventory fakeServerInventory;
+
+ private FakeServerInventory.CompleteDiscoveryChecker discoveryCompleteChecker;
+
+ @BeforeDiscovery
+ public void resetServerServices() throws Exception {
+ // Set up our fake server discovery ServerService, which will auto-import all
Resources in reports it receives.
+ serverServices.resetMocks();
+ fakeServerInventory = new FakeServerInventory();
+ discoveryCompleteChecker =
fakeServerInventory.createAsyncDiscoveryCompletionChecker(4);
+
when(serverServices.getDiscoveryServerService().mergeInventoryReport(any(InventoryReport.class))).then(
+ fakeServerInventory.mergeInventoryReport(InventoryStatus.COMMITTED));
+ }
+
+ @AfterDiscovery
+ public void waitForAsyncDiscoveries() throws Exception {
+ if (discoveryCompleteChecker != null) {
+ discoveryCompleteChecker.waitForDiscoveryComplete(10000);
+ }
+ }
+
+ /**
+ * Tests that discovery was only run once per ResourceType. This tests a deep,
4-level hierarchy.
+ *
+ * @throws Exception if an error occurs
+ */
+ @RunDiscovery
+ @Test(groups = "pc.itest.discovery")
+ public void testDiscoveryRunsOnlyOncePerType() throws Exception {
+ // make sure our inventory is as we expect it to be
+ validatePluginContainerInventory();
+
+ // reset our discovery component's internal storage
+ TestResourceDiscoveryComponent.getExecutionCountsByResourceType().clear();
+
+ // run our own discovery scan
+ this.pluginContainer.getInventoryManager().executeServiceScanImmediately();
+
+ Map<ResourceType, Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent
+ .getExecutionCountsByResourceType();
+ Map<ResourceType, Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
+ for (ResourceType resourceType : executionCountsByResourceType.keySet()) {
+ Integer count = executionCountsByResourceType.get(resourceType);
+ if (count != 1) {
+ flaggedExecutionCountsByResourceType.put(resourceType, count);
+ }
+ }
+ Assert.assertTrue(flaggedExecutionCountsByResourceType.isEmpty(),
+ "Discovery was not executed once (and only once) for the following
types: "
+ + flaggedExecutionCountsByResourceType);
+ }
+
+ private void validatePluginContainerInventory() throws Exception {
+ System.out.println("Validating PC inventory...");
+
+ Resource platform = pluginContainer.getInventoryManager().getPlatform();
+ Assert.assertNotNull(platform);
+ Assert.assertEquals(platform.getInventoryStatus(), InventoryStatus.COMMITTED);
+
+ Resource server = platform.getChildResources().iterator().next();
+ Assert.assertNotNull(server);
+ Assert.assertEquals(server.getInventoryStatus(), InventoryStatus.COMMITTED);
+ assert server.getResourceType().getName().equals("Test Server");
+
+ Resource child = server.getChildResources().iterator().next();
+ Assert.assertNotNull(child);
+ Assert.assertEquals(child.getInventoryStatus(), InventoryStatus.COMMITTED);
+ assert child.getResourceType().getName().equals("Test Service Child");
+
+ Resource grandchild = child.getChildResources().iterator().next();
+ Assert.assertNotNull(grandchild);
+ Assert.assertEquals(grandchild.getInventoryStatus(), InventoryStatus.COMMITTED);
+ assert grandchild.getResourceType().getName().equals("Test Service
GrandChild");
+
+ Resource greatgrandchild = grandchild.getChildResources().iterator().next();
+ Assert.assertNotNull(greatgrandchild);
+ Assert.assertEquals(greatgrandchild.getInventoryStatus(),
InventoryStatus.COMMITTED);
+ assert greatgrandchild.getResourceType().getName().equals("Test Service
GreatGrandChild");
+
+ System.out.println("PC inventory validated successfully!");
+ }
+
+}
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index b74b015..51ce213 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -22,8 +22,6 @@ import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -37,7 +35,6 @@ import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.inventory.testplugin.TestResourceComponent;
@@ -97,33 +94,13 @@ public class InventoryManagerTest extends Arquillian {
}
/**
- * Tests that discovery was only run once per ResourceType.
- *
- * @throws Exception if an error occurs
- */
- @RunDiscovery
- @Test(groups = "pc.itest.inventorymanager")
- public void testDiscoveryRunsOnlyOncePerType() throws Exception {
- Map<ResourceType, Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent
- .getExecutionCountsByResourceType();
- Map<ResourceType, Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
- for (ResourceType resourceType : executionCountsByResourceType.keySet()) {
- Integer count = executionCountsByResourceType.get(resourceType);
- if (count > 1) {
- flaggedExecutionCountsByResourceType.put(resourceType, count);
- }
- }
- Assert.assertTrue(flaggedExecutionCountsByResourceType.isEmpty(),
- "Discovery was executed more than once for the following types: " +
flaggedExecutionCountsByResourceType);
- }
-
- /**
* Tests that Resources are properly synchronized after the inventory manager is
restarted with a clean data
* directory.
*
* @throws Exception if an error occurs
*/
- @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testDiscoveryRunsOnlyOncePerType")
+ @Test(groups = "pc.itest.inventorymanager")
+ @RunDiscovery
public void testSyncUnknownResources() throws Exception {
validatePluginContainerInventory();
diff --git
a/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
b/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
new file mode 100644
index 0000000..477b3c9
--- /dev/null
+++
b/modules/core/plugin-container-itest/src/test/resources/test-great-grandchild-discovery-plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plugin name="test"
+ displayName="Test"
+ description="a test plugin"
+ package="org.rhq.core.pc.inventory.testplugin"
+ version="1.0"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration">
+
+ <server name="Test Server"
+ discovery="TestResourceDiscoveryComponent"
+ class="TestResourceComponent">
+
+ <service name="Test Service Child"
+ discovery="TestResourceDiscoveryComponent"
+ class="TestResourceComponent">
+
+ <service name="Test Service GrandChild"
+ discovery="TestResourceDiscoveryComponent"
+ class="TestResourceComponent">
+
+ <service name="Test Service GreatGrandChild"
+ discovery="TestResourceDiscoveryComponent"
+ class="TestResourceComponent">
+ </service>
+ </service>
+ </service>
+ </server>
+</plugin>
commit e850925a0c3245992a41b412b5ee9839c433f383
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 18 16:09:05 2012 -0400
[BZ 823026] change Product Name trait to displayType="summary" and change
Server Code Name and Server Version traits to displayType="detail"
(
https://bugzilla.redhat.com/show_bug.cgi?id=823026)
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 229ae43..127e633 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -83,9 +83,9 @@
</c:group>
'>
<!ENTITY serverKindMetrics '
- <metric property="_skm:release-codename" dataType="trait"
displayName="Server Code Name" displayType="summary"/>
- <metric property="_skm:release-version" dataType="trait"
displayName="Server Version" displayType="summary"/>
- <metric property="_skm:product-name" dataType="trait"
displayName="Product Name"/>
+ <metric property="_skm:release-codename" dataType="trait"
displayName="Server Code Name"/>
+ <metric property="_skm:release-version" dataType="trait"
displayName="Server Version"/>
+ <metric property="_skm:product-name" dataType="trait"
displayName="Product Name" displayType="summary"/>
<metric property="_skm:product-version" dataType="trait"
displayName="Product Version" displayType="summary"/>
'>
commit edc0315a43fdce59fad56f4e061fe3af6c9f7a53
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri May 11 16:06:36 2012 -0400
[BZ 818952] adding Config Load and Update itests for regular cgroups.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
index 554ce52..5eaa0e9 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
@@ -42,6 +42,7 @@ import
org.rhq.core.clientapi.agent.metadata.InvalidPluginDescriptorException;
import org.rhq.core.clientapi.descriptor.DescriptorPackages;
import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.ServerDescriptor;
+import org.rhq.core.clientapi.descriptor.plugin.ServiceDescriptor;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -85,6 +86,23 @@ public abstract class AbstractConfigurationHandlingTest {
return ConfigurationMetadataParser.parse("null",
serverDescriptor.getResourceConfiguration());
}
+ /* Attempts to load a service descriptor with name passed in.
+ */
+ protected ConfigurationDefinition loadServiceDescriptorElement(String serviceName)
+ throws InvalidPluginDescriptorException {
+
+ //locate the services
+ List<ServiceDescriptor> services = pluginDescriptor.getServices();
+
+ //locate the specific entry
+ ServiceDescriptor serviceDescriptor = findServiceEntry(serviceName, services);
+
+ assert serviceDescriptor != null : "Service descriptor not found in test
plugin descriptor";
+
+ //? Validate the returned value?
+ return ConfigurationMetadataParser.parse("null",
serviceDescriptor.getResourceConfiguration());
+ }
+
private ServerDescriptor findServer(String name, List<ServerDescriptor>
servers) {
for (ServerDescriptor server : servers) {
if (server.getName().equals(name)) {
@@ -95,6 +113,18 @@ public abstract class AbstractConfigurationHandlingTest {
return null;
}
+ /* Search for Service entries by name specified.
+ */
+ private ServiceDescriptor findServiceEntry(String name, List<ServiceDescriptor>
services) {
+ for (ServiceDescriptor service : services) {
+ if (service.getName().equals(name)) {
+ return service;
+ }
+ }
+
+ return null;
+ }
+
protected String loadJsonFromFile(String fileName) throws Exception {
InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
index 9bfe370..f38a117 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
@@ -19,6 +19,7 @@
package org.rhq.modules.plugins.jbossas7;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -611,4 +612,61 @@ public class ConfigurationLoadingTest extends
AbstractConfigurationHandlingTest
Assert.assertTrue(thirdPropFound);
}
}
+
+ /** Tests that c:group entries are loaded correctly in addition to special c:group
syntax handling.
+ * Ex. <c:group name="proxy" displayName="Proxy Options">
+ * <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
+ * <c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
+ * </c:group>
+ *
+ * @throws Exception
+ */
+ public void testLoadGroupedConfiguration() throws Exception {
+
+ //Fabricate the json string result.
+ String resultString = "{\n" + " \"outcome\" :
\"success\", \"result\" : {\n"
+ + " \"advertise\" : \"true\",\n" + "
\"advertise-socket\" : \"modcluster\",\n"
+ + " \"balancer\" : \"undefined\",\n" +
" \"connector\" : \"ajp\",\n"
+ + " \"proxy-list\" : \"undefined\",\n" +
" \"proxy-url\" : \"/\"\n" + " }\n" +
"}\n";
+
+ ConfigurationDefinition definition =
loadServiceDescriptorElement("simpleGroupNoSpecial");
+
+ //Formally construct the json response
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString, ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ //Create fake connection and prepopulate the response.
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ //Test actual load using test-plugin.xml contents.
+ ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(definition,
connection, null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ //Validate loaded config.
+ assert config != null;
+
+ //check boolean contents
+ PropertySimple advertise = (PropertySimple) config.get("advertise");
+ assert advertise != null : "Boolean 'advertise' property embedded in
c:group not found.";
+ boolean advertiseOn = advertise.getBooleanValue();
+ assert advertiseOn != false : "Advertise value not set to true or not
defaulting to true.";
+
+ //Define properties and default values to check.
+ HashMap<String, String> properties = new HashMap<String, String>();
+ properties.put("advertise-socket", "modcluster");
+ properties.put("connector", "ajp");
+ properties.put("proxy-list", "undefined");
+ properties.put("proxy-url", "/");
+ for (String prop : properties.keySet()) {
+ PropertySimple property = (PropertySimple) config.get(prop);
+ assert property != null : "Property '" + prop + "'
could not be found.";
+ String value = property.getStringValue();
+ assert value != null : "The value for property '" + prop +
"' was not located.";
+ assert value.trim().equals(properties.get(prop)) : "Value for property
'" + prop
+ + "' does not match. Found '" + value + "'
instead of '" + properties.get(prop) + "'";
+ }
+
+ }
}
\ No newline at end of file
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
index a1ee49e..ae35eae 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
@@ -18,6 +18,7 @@
*/
package org.rhq.modules.plugins.jbossas7;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -794,4 +795,52 @@ public class ConfigurationUpdatingTest extends
AbstractConfigurationHandlingTest
}
}
+
+ /** Tests that c:group entries are updated correctly in addition to special c:group
syntax handling.
+ * Ex. <c:group name="proxy" displayName="Proxy Options">
+ * <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
+ * <c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
+ * </c:group>
+ *
+ * @throws Exception
+ */
+ public void testUpdateGroupConfiguration() throws Exception {
+
+ ConfigurationDefinition definition =
loadServiceDescriptorElement("simpleGroupNoSpecialUpdate");
+
+ FakeConnection connection = new FakeConnection();
+
+ ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(definition,
connection, null);
+
+ Configuration conf = new Configuration();
+ HashMap<String, String> properties = new HashMap<String, String>();
+ properties.put("proxy-list",
"127.0.0.1:7777,test.localhost.com:6666");
+ properties.put("proxy-url", "/rootWebappUrl");
+ for (String name : properties.keySet()) {//load all properties for update.
+ conf.put(new PropertySimple(name, properties.get(name)));
+ }
+
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new
Address());
+
+ assert cop.numberOfSteps() == properties.size() : "Composite operation steps
incorrect. Expected '"
+ + properties.size() + "' but was '" + cop.numberOfSteps() +
"'.";
+ //check property values
+ for (int i = 0; i < cop.numberOfSteps(); i++) {
+ //each property maps to a separate operation.
+ Operation step = cop.step(i);
+ assert step.getOperation().equals("write-attribute") : "Write
attribute not set correctly.";
+ Map<String, Object> props = step.getAdditionalProperties();
+ assert props.size() == 2 : "Property list not correct. Expected
'2' property but there were '"
+ + props.size() + "'.";
+ //check that property was returned
+ String[] keys = new String[2];
+ props.keySet().toArray(keys);
+ String name = (String) props.get("name");
+ String value = (String) props.get("value");
+ assert properties.containsKey(name) : "Property '" + name +
"' was not found and should have been.";
+ //check the contents of returned response.
+ assert value.equals(properties.get(name)) : "Value for property
'" + name
+ + "' was not updated correctly. Expected '" +
properties.get(name) + "' but was '" + value + "'.";
+ }
+ }
}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
index 4b3201c..8959b24 100644
--- a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
@@ -281,6 +281,42 @@
</c:group>
</resource-configuration>
</server>
+
+ <!-- Simple c:group entries from descriptor with no special handling. -->
+ <service name="simpleGroupNoSpecial"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="simple grouped properties. No special handling"
+ singleton="true">
+ <resource-configuration>
+ <c:group name="proxy" displayName="Proxy Options">
+ <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
+ <c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
+ </c:group>
+
+ <c:group name="advertise" displayName="Advertise
Options">
+ <c:simple-property name="advertise" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Use Advertise logic or not."/>
+ <c:simple-property name="advertise-socket"
required="false" type="string" readOnly="false"
defaultValue="224.0.1.105:23364"
+ description="Name of Socket binding to use for the
Advertise socket."/>
+ <c:simple-property name="connector" required="true"
type="string" readOnly="false" defaultValue="ajp"
description="Name of the web connector used to communicate with the load
balancer.">
+ <!--<c:option-source target="resource"
expression="type=Connector plugin=&pluginName;"/>-->
+ </c:simple-property>
+ </c:group>
+ </resource-configuration>
+ </service>
+ <!-- Same as previous but for update. -->
+ <service name="simpleGroupNoSpecialUpdate"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="simple grouped properties. No special handling"
+ singleton="true">
+ <resource-configuration>
+ <c:group name="proxy" displayName="Proxy Options">
+ <c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
+ <c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
+ </c:group>
+ </resource-configuration>
+ </service>
</plugin>
\ No newline at end of file
commit 714423955437c893f5e6d1fcd9e16f0d629fc7ed
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri May 4 13:42:17 2012 -0400
[BZ 818952] adding the rest of support for c:group load and edits for BaseComponent
for as7.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadDelegate.java
index cf575e3..0a49bd1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadDelegate.java
@@ -123,7 +123,7 @@ public class ConfigurationLoadDelegate implements ConfigurationFacet
{
* @throws Exception If anything goes wrong
*/
private void loadHandleGroup(Configuration config, PropertyGroupDefinition
groupDefinition) throws Exception {
- Operation operation;
+ Operation operation = null;
String groupName = groupDefinition.getName();
if (groupName.startsWith("attribute:")) {
String attr = groupName.substring("attribute:".length());
@@ -164,7 +164,10 @@ public class ConfigurationLoadDelegate implements ConfigurationFacet
{
if (includeRuntime)
((ReadResource)operation).includeRuntime(true);
} else {//no special handling of <c:groups> details required.
- //Just assume normal group operations aggregation semantics.
+ //Just assume normal group operations aggregation semantics, so retrieve
entries and load.
+ Operation op = new ReadResource(address);
+ List<PropertyDefinition> listedDefs =
configurationDefinition.getPropertiesInGroup(groupName);
+ loadHandleProperties(config, listedDefs, op);
return;
}
List<PropertyDefinition> listedDefs =
configurationDefinition.getPropertiesInGroup(groupName);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
index ec56ee5..cf4749d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationWriteDelegate.java
@@ -151,8 +151,7 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
for (PropertyDefinition def : definitions) {
updateProperty(conf,cop,def, address);
}
- }
- if (groupName.startsWith("child:")) { // one named child resource
+ } else if (groupName.startsWith("child:")) { // one named child
resource
String subPath = groupName.substring("child:".length());
if (!subPath.contains("="))
throw new IllegalArgumentException("subPath of 'child:'
expression has no =");
@@ -227,7 +226,14 @@ public class ConfigurationWriteDelegate implements ConfigurationFacet
{
updateProperty(conf, cop, def, address1);
}
}
- } // child: case TODO handle attribute: case
+
+ }// child: case TODO handle attribute: case
+ else {//handle the base case with no special case handling
+ //get the properties from within the group and update as usual.
+ for (PropertyDefinition propDef :
configurationDefinition.getPropertiesInGroup(groupName)) {
+ updateProperty(conf, cop, propDef, address);
+ }
+ }
}
return cop;
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 41f3ef5..229ae43 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -158,12 +158,12 @@
<resource-configuration>
-<!-- <c:group name="proxy" displayName="Proxy
Options">-->
+ <c:group name="proxy" displayName="Proxy Options">
<c:simple-property name="proxy-list" required="false"
type="string" readOnly="false" defaultValue=""
description="List of proxies, Format (hostname:port) separated with
comas."/>
<c:simple-property name="proxy-url" required="false"
type="string" readOnly="false" defaultValue="/"
description="Base URL for MCMP requests."/>
-<!-- </c:group>-->
+ </c:group>
-<!-- <c:group name="advertise" displayName="Advertise
Options">-->
+ <c:group name="advertise" displayName="Advertise
Options">
<c:simple-property name="advertise-socket"
required="false" type="string" readOnly="false"
defaultValue="224.0.1.105:23364"
description="Name of Socket binding to use for the
Advertise socket."/>
<c:simple-property name="advertise" required="false"
type="boolean" readOnly="false" defaultValue="true"
description="Use Advertise logic or not."/>
@@ -173,21 +173,21 @@
<c:option-source target="resource"
expression="type=Connector plugin=&pluginName;"/>
</c:simple-property>
<c:simple-property name="domain" required="false"
type="string" readOnly="false" description="loadBalancingGroup
name."/>
-<!-- </c:group>-->
+ </c:group>
-<!-- <c:group name="context" displayName="Web Context
Options">-->
+ <c:group name="context" displayName="Web Context
Options">
<c:simple-property name="excluded-contexts"
required="false" type="string" readOnly="false"
defaultValue="ROOT,admin-console,invoker,jbossws,jmx-console,juddi,web-console"
description="List of contexts mod_cluster should
ignore, Format String separated with comas."/>
<c:simple-property name="auto-enable-contexts"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Enable contexts even if disabled in
mod_cluster_manger (httpd)."/>
-<!-- </c:group>-->
+ </c:group>
-<!-- <c:group name="session" displayName="Session
Options">-->
+ <c:group name="session" displayName="Session
Options">
<c:simple-property name="sticky-session"
required="false" type="boolean" readOnly="false"
defaultValue="true" description="Use sticky sessions for
requests."/>
<c:simple-property name="sticky-session-remove"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Remove session information on
failover."/>
<c:simple-property name="sticky-session-force"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Don't failover a request with
session information."/>
-<!-- </c:group>-->
+ </c:group>
-<!-- <c:group name="network" displayName="Network
Options">-->
+ <c:group name="network" displayName="Network
Options">
<c:simple-property name="worker-timeout"
required="false" type="integer" readOnly="false"
defaultValue="-1" description="Timeout to wait in httpd for an available
worker to process the requests."/>
<c:simple-property name="max-attempts"
required="false" type="integer" readOnly="false"
defaultValue="1" description="Max attempts to process an idempotent
request."/>
<c:simple-property name="flush-packets"
required="false" type="boolean" readOnly="false"
defaultValue="false" description="Enables/disables packet flushing in
httpd."/>
@@ -199,7 +199,7 @@
<c:simple-property name="stop-context-timeout"
required="false" type="integer" readOnly="false"
defaultValue="10" description="Max time to wait for context to process
pending requests."/>
<c:simple-property name="socket-timeout"
required="false" type="integer" readOnly="false"
defaultValue="20" description="Timeout to wait for httpd to answer a MCMP
message."/>
-<!-- </c:group>-->
+ </c:group>
</resource-configuration>
'>
commit 871d5d0a46030cba09d051a06cbc94d6ff08eeba
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri May 18 14:13:42 2012 -0500
[BZ 812755] Added memory pool and garbage collector sub-resources to JVM information.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index d258397..41f3ef5 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -1696,8 +1696,98 @@
</resource-configuration>
</service>
- </service>
+ <service name="Garbage Collector"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Parent resource for the resources providing the management
interface for the garbage collection of the Java virtual machine."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="type=garbage-collector"/>
+ </plugin-configuration>
+
+ <service name="Garbage Collector Resource"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The management interface for one of the garbage
collectors in the Java virtual machine.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="name"/>
+ <c:simple-property name="includeRuntime" readOnly="true"
default="true"/>
+ </plugin-configuration>
+
+ <metric property="collection-count" description="The total
number of collections that have occurred."/>
+ <metric property="collection-time" description="The approximate
accumulated collection elapsed time in milliseconds."/>
+ <metric property="name" dataType="trait"
description="The name representing this garbage collector"/>
+ <metric property="valid" dataType="trait"
description="Whether this this memory manager is valid in the Java virtual
machine."/>
+
+ <resource-configuration>
+ <c:list-property name="memory-pool-names"
required="true" description="The name of memory pools that this garbage
collector manages." >
+ <c:simple-property name="memory-pool-names"
readOnly="true"/>
+ </c:list-property>
+ </resource-configuration>
+ </service>
+ </service>
+ <service name="Memory Pool"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="Parent resource for the resources providing the management
interface for the Java virtual machine's memory pools."
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="type=memory-pool"/>
+ </plugin-configuration>
+
+ <service name="Memory Pool Resource"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ description="The management interface for a memory pool. A memory
pool represents the memory resource managed by the Java virtual machine and is managed by
one or more memory managers.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="name"/>
+ <c:simple-property name="includeRuntime" readOnly="true"
default="true"/>
+ </plugin-configuration>
+
+ <operation name="subsystem:reset-peak-usage" displayName="Reset
Peak Usage" description="Resets the peak memory usage statistic of this memory
pool to the current memory usage.">
+ <results>
+ <c:simple-property name="operationResult"
description="Resets the peak memory usage statistic of this memory pool to the
current memory usage." />
+ </results>
+ </operation>
+
+ <metric property="collection-usage:init"
displayName="Collection Usage - Init" description="The amount of memory in
bytes that the Java virtual machine initially requests from the operating system for
memory management."/>
+ <metric property="collection-usage:used"
displayName="Collection Usage - Used" description="The amount of used
memory in bytes."/>
+ <metric property="collection-usage:committed"
displayName="Collection Usage - Committed" description="The amount of
memory in bytes that is committed for the Java virtual machine to use."/>
+ <metric property="collection-usage:max" displayName="Collection
Usage - Max" description="The maximum amount of memory in bytes that can be used
for memory management."/>
+ <metric property="collection-usage-threshold-count"
description="The number of times that the Java virtual machine has detected that the
memory usage has reached or exceeded the collection usage threshold. A memory pool may not
support a collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="collection-usage-threshold-exceeded"
description="Whether the memory usage of this memory pool after the most recent
collection on which the Java virtual machine has expended effort has reached or exceeded
its collection usage threshold. A memory pool may not support a collection usage
threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="collection-usage-threshold-supported"
dataType="trait" description="Whether this memory pool supports a
collection usage threshold."/>
+ <metric property="name" dataType="trait"
description="The name representing this memory pool."/>
+ <metric property="peak-usage:init" displayName="Peak Usage -
Init" description="The amount of memory in bytes that the Java virtual machine
initially requests from the operating system for memory management."/>
+ <metric property="peak-usage:used" displayName="Peak Usage -
Used" description="The amount of used memory in bytes."/>
+ <metric property="peak-usage:committed" displayName="Peak Usage
- Committed" description="The amount of memory in bytes that is committed for
the Java virtual machine to use."/>
+ <metric property="peak-usage:max" displayName="Peak Usage -
Max" description="The maximum amount of memory in bytes that can be used for
memory management."/>
+ <metric property="type" dataType="trait"
description="The type of this memory pool."/>
+ <metric property="usage:init" displayName="Usage - Init"
description="The amount of memory in bytes that the Java virtual machine initially
requests from the operating system for memory management."/>
+ <metric property="usage:used" displayName="Usage - Used"
description="The amount of used memory in bytes."/>
+ <metric property="usage:committed" displayName="Usage -
Committed" description="The amount of memory in bytes that is committed for the
Java virtual machine to use."/>
+ <metric property="usage:max" displayName="Usage - Max"
description="The maximum amount of memory in bytes that can be used for memory
management."/>
+ <metric property="usage-threshold-count" description="The
number of times that the memory usage has crossed the usage threshold. A memory pool may
not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="usage-threshold-exceeded"
description="Whether the memory usage of this memory pool reaches or exceeds its
usage threshold value. A memory pool may not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="usage-threshold-supported"
dataType="trait" description="Whether this memory pool supports usage
threshold."/>
+ <metric property="valid" dataType="trait"
description="Whether this memory pool is valid in the Java virtual machine. A memory
pool becomes invalid once the Java virtual machine removes it from the memory
system."/>
+
+ <resource-configuration>
+ <c:simple-property name="collection-usage-threshold"
required="false" type="long" readOnly="false"
description="The collection usage threshold value of this memory pool in bytes. A
memory pool may not support a collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <c:list-property name="memory-manager-names"
required="true" readOnly="true" description="The names of the
memory managers that manage this memory pool." >
+ <c:simple-property name="memory-manager-names"
readOnly="true"/>
+ </c:list-property>
+ <c:simple-property name="usage-threshold"
required="false" type="long" readOnly="false"
description="The usage threshold value of this memory pool in bytes. A memory pool
may not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ </resource-configuration>
+ </service>
+ </service>
+
+ </service>
<service name="JBossWeb"
commit b456bb5820c449f2ec9a49913a7bbc7ea6933839
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Fri May 18 10:17:23 2012 -0700
Trivial: Remove usused class -- EnhancedListGrid.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/EnhancedListGrid.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/EnhancedListGrid.java
deleted file mode 100644
index 2edc60e..0000000
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/EnhancedListGrid.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.rhq.enterprise.gui.coregui.client.components;
-
-import com.smartgwt.client.widgets.grid.ListGrid;
-import com.smartgwt.client.widgets.layout.VLayout;
-import com.smartgwt.client.widgets.toolbar.ToolStrip;
-
-/**
- * @author Greg Hinkle
- */
-public class EnhancedListGrid extends VLayout {
-
- ListGrid grid;
- ToolStrip footer;
-
- public EnhancedListGrid() {
- super();
- grid = new ListGrid();
- footer = new ToolStrip();
- addMember(grid);
- addMember(footer);
- }
-
- public ListGrid getGrid() {
- return grid;
- }
-
- public void setGrid(ListGrid grid) {
- this.grid = grid;
- }
-
- public ToolStrip getFooter() {
- return footer;
- }
-
- public void setFooter(ToolStrip footer) {
- this.footer = footer;
- }
-}
commit 5ebacc87cb292004186c0b8f6876e00649b18391
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri May 18 15:30:19 2012 +0200
[BZ 822905] - Make sure to always disable the resource upgrade after it
has finished, even after a failure.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 7ab7420..becc7da 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -2955,8 +2955,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
log.info("Sending the upgrade requests to the server.");
resourceUpgradeDelegate.sendRequests();
- resourceUpgradeDelegate.disable();
-
log.info("Resource activation and upgrade finished.");
} catch (Throwable t) {
log.error(
@@ -2965,6 +2963,8 @@ public class InventoryManager extends AgentService implements
ContainerService,
//make sure to at least activate the resources
activateAndUpgradeResourceRecursively(getPlatform(), false);
+ } finally {
+ resourceUpgradeDelegate.disable();
}
}
commit 43770f14dd308618f47b4d2940366cb86082aef0
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri May 18 13:43:21 2012 +0200
[BZ 822880] - Make sure to NOT discard any pending DB changes before
masking the configuration.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index 4ac0962..6f18088 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -447,6 +447,11 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
subjectManager.getOverlord(), resource.getResourceType().getId());
// We do not want the masked configuration persisted, so detach all entities
before masking the configuration.
+ // But before we detach the entities, let's flush the entity manager to
persist any pending changes.
+ // This will ensure that:
+ // 1) All changes in the entity manager are persisted
+ // 2) Any changes to the entities made after the clear() call are NOT
persisted.
+ entityManager.flush();
entityManager.clear();
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
commit d2d6d9cc97f9b6bd427f8110467e840d2bfd1e3b
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 17 22:33:19 2012 -0400
[BZ 822736] fix so extra jars don't get included in the plugin jar's lib dir
(
https://bugzilla.redhat.com/show_bug.cgi?id=822736)
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index cc7342e..c08845a 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -48,6 +48,12 @@
http://repo1.maven.org/maven2/com/fasterxml/jackson/ -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-core-asl</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
@@ -95,11 +101,25 @@
<id>copy-libs</id>
<phase>process-resources</phase>
<goals>
- <goal>copy-dependencies</goal>
+ <goal>copy</goal>
</goals>
<configuration>
- <includeScope>runtime</includeScope>
- <excludeScope>plugin</excludeScope>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-core-asl</artifactId>
+ </artifactItem>
+
+ <artifactItem>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-mapper-asl</artifactId>
+ </artifactItem>
+
+ <artifactItem>
+ <groupId>org.jboss.sasl</groupId>
+ <artifactId>jboss-sasl</artifactId>
+ </artifactItem>
+ </artifactItems>
<outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
</configuration>
</execution>
commit 25da84131727cc76c3ebae200f1db4b9e550c3af
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 17 17:05:12 2012 -0400
re-arrange this test so that only one discovery takes place before we
do the redundancy checking.
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index 495164b..b74b015 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -18,6 +18,9 @@
*/
package org.rhq.core.pc.inventory;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
+
import java.io.File;
import java.util.HashMap;
import java.util.Map;
@@ -47,9 +50,6 @@ import org.rhq.test.arquillian.MockingServerServices;
import org.rhq.test.arquillian.RunDiscovery;
import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.when;
-
/**
* A unit test for the {@link InventoryManager}.
*
@@ -97,13 +97,33 @@ public class InventoryManagerTest extends Arquillian {
}
/**
+ * Tests that discovery was only run once per ResourceType.
+ *
+ * @throws Exception if an error occurs
+ */
+ @RunDiscovery
+ @Test(groups = "pc.itest.inventorymanager")
+ public void testDiscoveryRunsOnlyOncePerType() throws Exception {
+ Map<ResourceType, Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent
+ .getExecutionCountsByResourceType();
+ Map<ResourceType, Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
+ for (ResourceType resourceType : executionCountsByResourceType.keySet()) {
+ Integer count = executionCountsByResourceType.get(resourceType);
+ if (count > 1) {
+ flaggedExecutionCountsByResourceType.put(resourceType, count);
+ }
+ }
+ Assert.assertTrue(flaggedExecutionCountsByResourceType.isEmpty(),
+ "Discovery was executed more than once for the following types: " +
flaggedExecutionCountsByResourceType);
+ }
+
+ /**
* Tests that Resources are properly synchronized after the inventory manager is
restarted with a clean data
* directory.
*
* @throws Exception if an error occurs
*/
- @Test(groups = "pc.itest.inventorymanager")
- @RunDiscovery
+ @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testDiscoveryRunsOnlyOncePerType")
public void testSyncUnknownResources() throws Exception {
validatePluginContainerInventory();
@@ -128,25 +148,6 @@ public class InventoryManagerTest extends Arquillian {
validatePluginContainerInventory();
}
- /**
- * Tests that discovery was only run once per ResourceType.
- *
- * @throws Exception if an error occurs
- */
- @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources", enabled = true)
- public void testDiscoveryRunsOnlyOncePerType() throws Exception {
- Map<ResourceType,Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent.getExecutionCountsByResourceType();
- Map<ResourceType,Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
- for (ResourceType resourceType : executionCountsByResourceType.keySet()) {
- Integer count = executionCountsByResourceType.get(resourceType);
- if (count > 1) {
- flaggedExecutionCountsByResourceType.put(resourceType, count);
- }
- }
- Assert.assertTrue(flaggedExecutionCountsByResourceType.isEmpty(),
- "Discovery was executed more than once for the following types:
" + flaggedExecutionCountsByResourceType);
- }
-
private void validatePluginContainerInventory() {
System.out.println("Validating PC inventory...");
commit c08b19ffc73d646766263a673c6e96f0f1024b03
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 17 16:19:58 2012 -0400
[Bug 820709 - [plugin-container] with two or more AS7 host controllers in inventory, a
full discovery scan takes an unacceptably long time]
- Working on discovery algorithm. Trying to make it more efficient recursion.
- remove unnecessary/invalid avail checking
- add a little jdoc
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AutoDiscoveryExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AutoDiscoveryExecutor.java
index 67094b5..6ae4d53 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AutoDiscoveryExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AutoDiscoveryExecutor.java
@@ -34,8 +34,8 @@ import java.util.concurrent.Callable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.jetbrains.annotations.NotNull;
+
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.server.discovery.AutoDiscoveryRequest;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
@@ -60,9 +60,12 @@ import org.rhq.core.util.exception.ExceptionPackage;
import org.rhq.core.util.exception.Severity;
/**
- * Standard platform/server inventory detection execution. This is typically called in a
non-blocking fashion, and the
- * report is returned asynchronously to the server. It is available for direct execution
via a Future when running in an
- * embedded mode.
+ * Standard platform/server inventory detection execution. This looks for top level
servers, typically doing
+ * process-based discovery. It should probably be renamed to ServerDiscoveryExecutor as
"AutoDiscovery" is
+ * pretty much redundant and non-descriptive. This is typically called in a non-blocking
fashion, and the report
+ * is returned asynchronously to the server. It is available for direct execution via a
Future when running in
+ * an embedded mode. This is complemented by {@link RuntimeDiscoveryExecutor} for
discovering new child resources
+ * in the existing inventory hierarchy.
*
* @author Greg Hinkle
* @author John Mazzitelli
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
index cf5b86e..f69bdfb 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/RuntimeDiscoveryExecutor.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -32,8 +32,8 @@ import java.util.concurrent.Callable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.jetbrains.annotations.NotNull;
+
import org.rhq.core.clientapi.agent.PluginContainerException;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.measurement.AvailabilityType;
@@ -50,9 +50,14 @@ import org.rhq.core.util.exception.ExceptionPackage;
import org.rhq.core.util.exception.Severity;
/**
-* @author Greg Hinkle
-* @author Ian Springer
-*/
+ * This should probably be renamed to ServiceDiscoveryExecutor or maybe
ChildDiscoveryExecutor. It is responsible for
+ * discovering children of existing resources. It recursively walks the hierarchy
looking for new resources, which
+ * are typically services (but could be non-top-level servers). It is complemented by
{@link AutoDiscoveryExecutor}
+ * which looks for new top level servers.
+ *
+ * @author Greg Hinkle
+ * @author Ian Springer
+ */
public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryReport> {
private Log log = LogFactory.getLog(RuntimeDiscoveryExecutor.class);
@@ -62,7 +67,7 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
/**
* Resource to scan. If null, the entire platform will be scanned.
*/
- private Resource resource;
+ private Resource rootResource;
public RuntimeDiscoveryExecutor(InventoryManager inventoryManager,
PluginContainerConfiguration pluginContainerConfiguration) {
@@ -76,12 +81,12 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
*
* @param inventoryManager hook back to the inventory manager
* @param pluginContainerConfiguration configuration of this executor
- * @param resource scopes the runtime scan to a particular
resource
+ * @param rootResource scopes the runtime scan to a particular
resource
*/
public RuntimeDiscoveryExecutor(InventoryManager inventoryManager,
- PluginContainerConfiguration pluginContainerConfiguration, Resource resource) {
+ PluginContainerConfiguration pluginContainerConfiguration, Resource rootResource)
{
this(inventoryManager, pluginContainerConfiguration);
- this.resource = resource;
+ this.rootResource = rootResource;
}
public void run() {
@@ -90,7 +95,7 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
@NotNull
public InventoryReport call() {
- String target = (resource != null) ? this.resource.toString() :
"platform";
+ String target = (rootResource != null) ? this.rootResource.toString() :
"platform";
log.info("Executing runtime discovery scan rooted at [" + target +
"]...");
InventoryReport report = new InventoryReport(inventoryManager.getAgent());
@@ -101,8 +106,8 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
report.setEndTime(System.currentTimeMillis());
if (log.isDebugEnabled()) {
- log.debug(String.format("Runtime discovery scan took %d ms.",
(report.getEndTime() - report
- .getStartTime())));
+ log.debug(String.format("Runtime discovery scan took %d ms.",
+ (report.getEndTime() - report.getStartTime())));
}
// TODO: This is always zero for embedded because we don't populate the
report.
@@ -128,38 +133,17 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
}
private void runtimeDiscover(InventoryReport report) throws PluginContainerException
{
- // Always start out by refreshing availabilities, since we will only scan servers
that are available.
- this.inventoryManager.executeAvailabilityScanImmediately(true);
- if (this.resource == null) {
+
+ if (this.rootResource == null) {
// Run a full scan for all resources in the inventory
Resource platform = this.inventoryManager.getPlatform();
// Discover platform services here
discoverForResource(platform, report, false);
- // Next discover all other services and non-top-level servers, recursively
down the hierarchy
- discoverForResourceRecursive(platform, report);
} else {
// Run a single scan for just a resource and its descendants
- discoverForResource(resource, report, false);
- }
-
- return;
- }
-
- private void discoverForResourceRecursive(Resource parent, InventoryReport report)
throws PluginContainerException {
- for (Resource child : parent.getChildResources()) {
- // See if the child has new children itself. Then we check those children to
see if there are grandchildren.
- // Note that if the child has already been added to the report, there is no
need to process it again, so skip it.
- boolean alreadyProcessed = report.getAddedRoots().contains(child);
- if (!alreadyProcessed) {
- discoverForResource(child, report, alreadyProcessed);
- // We need to recurse here even though discoverForResource recurses over
child, too.
- // This is because that discovery above only goes over newly discovered
resources.
- // It is possible this child has already existing children (e.g.
previously manually added)
- // that they themselves might have additional new children that need
discovering.
- discoverForResourceRecursive(child, report);
- }
+ discoverForResource(rootResource, report, false);
}
return;
@@ -175,8 +159,6 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
*/
private void discoverForResource(Resource parent, InventoryReport report, boolean
parentReported)
throws PluginContainerException {
- // TODO GH: If resource.isRuntimeDiscoveryEnabled
- // TODO GH: If resource.isInventoryStatusCommitted
log.debug("Discovering child Resources for " + parent +
"...");
@@ -210,10 +192,23 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
return;
}
+ // For each child resource type of the server, do a discovery for resources of
that type
+ Set<ResourceType> childResourceTypes =
parent.getResourceType().getChildResourceTypes();
+ if (null == childResourceTypes || childResourceTypes.isEmpty()) {
+ // I'm not sure it's possible, but just in case, make sure it
doesn't have children. If it does, keep going
+ if (parent.getChildResources().isEmpty()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parent resource type [" + parent + "] has
no child types; cannot perform service scan.");
+ }
+ return;
+ }
+ }
+
// Do a live check of availability here. This won't set the availability
anywhere but will allow us
// to find nested resources, i.e. children of resources we've found during
our recursive call
// to discoverForResource(). Without this live check, the availability of these
newly discovered
- // resources would be null, so we would just return without checking for their
children.
+ // resources would be null, so we would just return without checking for their
children. Also, we don't
+ // want to do discovery for a NOT UP parent.
AvailabilityType availability;
ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
try {
@@ -232,11 +227,11 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
return;
}
- // For each child resource type of the server, do a discovery for resources of
that type
PluginComponentFactory factory =
PluginContainer.getInstance().getPluginComponentFactory();
- Set<ResourceType> childResourceTypes =
parent.getResourceType().getChildResourceTypes();
- for (ResourceType childResourceType : childResourceTypes) {
- try {
+
+ try {
+
+ for (ResourceType childResourceType : childResourceTypes) {
// Make sure we have a discovery component for that type, otherwise there
is nothing to do
ResourceDiscoveryComponent discoveryComponent = null;
try {
@@ -257,29 +252,36 @@ public class RuntimeDiscoveryExecutor implements Runnable,
Callable<InventoryRep
log.debug("Running service scan on parent resource [" +
parent + "] looking for children of type ["
+ childResourceType + "]");
}
- Set<Resource> childResources =
this.inventoryManager.executeComponentDiscovery(childResourceType,
- discoveryComponent, parentContainer,
Collections.<ProcessScanResult> emptyList());
+ Set<Resource> discoveredChildResources = this.inventoryManager
+ .executeComponentDiscovery(childResourceType, discoveryComponent,
parentContainer,
+ Collections.<ProcessScanResult> emptyList());
- // For each discovered resource, update it in the inventory manager and
recursively discover its child resources
+ // For each discovered child resource, update it in the inventory
manager
Map<String, Resource> mergedResources = new HashMap<String,
Resource>();
-
- for (Resource childResource : childResources) {
- boolean thisInReport = false;
+ for (Resource discoveredChildResource : discoveredChildResources) {
Resource mergedResource;
- mergedResource =
this.inventoryManager.mergeResourceFromDiscovery(childResource, parent);
+ mergedResource =
this.inventoryManager.mergeResourceFromDiscovery(discoveredChildResource, parent);
mergedResources.put(mergedResource.getUuid(), mergedResource);
if ((mergedResource.getId() == 0) && !parentReported) {
report.addAddedRoot(parent);
- thisInReport = true;
parentReported = true;
}
- discoverForResource(mergedResource, report, thisInReport);
}
+
+ // get rid of any child resources of this type that were not yet
committed and are now gone
removeStaleResources(parent, childResourceType, mergedResources);
- } catch (Throwable t) {
- report.getErrors().add(new ExceptionPackage(Severity.Severe, t));
- log.error("Error in runtime discovery", t);
+
}
+
+ // now, recursively perform discovery on all of the parent's children,
which includes the newly
+ // merged children as well as previously existing children.
+ for (Resource childResource : parent.getChildResources()) {
+ discoverForResource(childResource, report, parentReported);
+ }
+
+ } catch (Throwable t) {
+ report.getErrors().add(new ExceptionPackage(Severity.Severe, t));
+ log.error("Error in runtime discovery", t);
}
return;
commit c1f2e51dda4421551748deafb4b533371166dd57
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 17 16:26:10 2012 -0400
fix some test failures
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index 09241bd..495164b 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -25,8 +25,8 @@ import java.util.Map;
import org.testng.Assert;
import org.testng.annotations.Test;
-import org.jboss.arquillian.container.test.api.Deployer;
import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.TargetsContainer;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.arquillian.testng.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
@@ -40,6 +40,7 @@ import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.inventory.testplugin.TestResourceComponent;
import org.rhq.core.pc.inventory.testplugin.TestResourceDiscoveryComponent;
import org.rhq.core.util.file.FileUtil;
+import org.rhq.test.arquillian.AfterDiscovery;
import org.rhq.test.arquillian.BeforeDiscovery;
import org.rhq.test.arquillian.FakeServerInventory;
import org.rhq.test.arquillian.MockingServerServices;
@@ -57,6 +58,7 @@ import static org.mockito.Mockito.when;
public class InventoryManagerTest extends Arquillian {
@Deployment(name = "test")
+ @TargetsContainer("pc")
public static RhqAgentPluginArchive getTestPlugin() {
RhqAgentPluginArchive pluginJar = ShrinkWrap.create(RhqAgentPluginArchive.class,
"test-plugin.jar");
return pluginJar
@@ -73,20 +75,27 @@ public class InventoryManagerTest extends Arquillian {
@ArquillianResource
private PluginContainer pluginContainer;
- @ArquillianResource
- private Deployer pluginDeployer;
-
private FakeServerInventory fakeServerInventory;
+ private FakeServerInventory.CompleteDiscoveryChecker discoveryCompleteChecker;
+
@BeforeDiscovery
public void resetServerServices() throws Exception {
// Set up our fake server discovery ServerService, which will auto-import all
Resources in reports it receives.
serverServices.resetMocks();
fakeServerInventory = new FakeServerInventory();
+ discoveryCompleteChecker =
fakeServerInventory.createAsyncDiscoveryCompletionChecker(2);
when(serverServices.getDiscoveryServerService().mergeInventoryReport(any(InventoryReport.class))).then(
fakeServerInventory.mergeInventoryReport(InventoryStatus.COMMITTED));
}
+ @AfterDiscovery
+ public void waitForAsyncDiscoveries() throws Exception {
+ if (discoveryCompleteChecker != null) {
+ discoveryCompleteChecker.waitForDiscoveryComplete(10000);
+ }
+ }
+
/**
* Tests that Resources are properly synchronized after the inventory manager is
restarted with a clean data
* directory.
@@ -124,7 +133,7 @@ public class InventoryManagerTest extends Arquillian {
*
* @throws Exception if an error occurs
*/
- @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources")
+ @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources", enabled = true)
public void testDiscoveryRunsOnlyOncePerType() throws Exception {
Map<ResourceType,Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent.getExecutionCountsByResourceType();
Map<ResourceType,Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
diff --git a/modules/core/plugin-container-itest/src/test/resources/arquillian.xml
b/modules/core/plugin-container-itest/src/test/resources/arquillian.xml
index 2eb50c8..b8b9271 100644
--- a/modules/core/plugin-container-itest/src/test/resources/arquillian.xml
+++ b/modules/core/plugin-container-itest/src/test/resources/arquillian.xml
@@ -14,7 +14,6 @@
<container qualifier="pc">
<configuration>
- <property name="mode">manual</property>
<property
name="serverServicesImplementationClassName">org.rhq.test.arquillian.MockingServerServices</property>
<property name="insideAgent">true</property>
<property name="startManagementBean">false</property>
commit f8d25ac1f598f8d3441e94ee2eaa1de6b7298eb3
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 17 14:30:01 2012 -0400
[BZ 818094] add a blank.gif explicitly for the standard skin to fix a SmartGWT 3.0
bug. Once we upgrade to a new SmartGWT, we should revert this commit (basically delete
this .gif and its containing directories).
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/org.rhq.enterprise.gui.coregui.CoreGUI/sc/skins/standard/images/blank.gif
b/modules/enterprise/gui/coregui/src/main/webapp/org.rhq.enterprise.gui.coregui.CoreGUI/sc/skins/standard/images/blank.gif
new file mode 100644
index 0000000..1d11fa9
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/org.rhq.enterprise.gui.coregui.CoreGUI/sc/skins/standard/images/blank.gif
differ
commit 2dd7ee74aa22fb2a441909017c75188d39079c69
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu May 17 10:44:08 2012 -0400
add support for running itests against EAP6 ER8
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 53f9be4..cc7342e 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -282,6 +282,22 @@
</properties>
</profile>
+ <profile>
+ <id>eap600ER8.itest.setup</id>
+
+ <activation>
+ <property>
+ <name>as7.version</name>
+ <value>6.0.0.ER8</value>
+ </property>
+ </activation>
+
+ <properties>
+ <as7.url>Please set the as7.url system property to the location of the EAP
${as7.version} distribution zipfile.</as7.url>
+
<jboss-as-arquillian-container-managed.version>7.1.1.Final</jboss-as-arquillian-container-managed.version>
+ </properties>
+ </profile>
+
<!-- Activate this profile to run the integration tests (these can take a while to
complete). -->
<!-- activate with -Das7.itest. See also
http://rhq-project.org/display/RHQ/Notes#Notes-IntegrationTests -->
<profile>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
index 1f9fdf8..9836a2d 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
@@ -63,6 +63,7 @@ public abstract class AbstractServerComponentTest extends
AbstractJBossAS7Plugin
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER5",
"7.1.1.Final-redhat-1");
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER6",
"7.1.1.Final-redhat-1");
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER7",
"7.1.1.Final-redhat-1");
+ EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER8",
"7.1.2.Final-redhat-1");
}
private static final String RELEASE_VERSION_TRAIT_NAME =
"_skm:release-version";
commit 9778b45ac647432d0550fb358676c5ffa3f18d87
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 17 09:15:56 2012 -0400
update eclipse classpath for the upgraded resteasy deps
diff --git a/.classpath b/.classpath
index 1af3ae3..6f0af83 100644
--- a/.classpath
+++ b/.classpath
@@ -289,10 +289,10 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/mongodb/mongo-java-driver/2.6.5/mongo-java-driver-2.6.5.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/googlecode/java-diff-utils/diffutils/1.2.1/diffutils-1.2.1.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/com/google/code/morphia/morphia/1.00-SNAPSHOT/morphia-1.00-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-links/2.3.1.GA/resteasy-links-2.3.1.GA.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.1.GA/resteasy-jaxrs-2.3.1.GA.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.1.GA/resteasy-jackson-provider-2.3.1.GA.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/jaxrs-api/2.3.1.GA/jaxrs-api-2.3.1.GA.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-links/2.3.3.Final/resteasy-links-2.3.3.Final.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.3.Final/resteasy-jaxrs-2.3.3.Final.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.3.Final/resteasy-jackson-provider-2.3.3.Final.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/jaxrs-api/2.3.3.Final/jaxrs-api-2.3.3.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/sasl/jboss-sasl/1.0.0.Beta9/jboss-sasl-1.0.0.Beta9.jar"/>
<classpathentry exported="true" kind="var"
path="JDK_HOME/lib/tools.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar"/>
commit 7459a2d9d4213c0a01bf95c636e9dc25dfd56ec9
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Thu May 17 13:01:24 2012 +0200
minor: more general iface on the left hand side; parametrization of class
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
index ac63dcb..61e2f21 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
@@ -31,6 +31,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
+import java.util.SortedSet;
import java.util.TreeSet;
import com.smartgwt.client.types.Alignment;
@@ -964,7 +965,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
}
LinkedHashMap<String, String> metricsMap = new LinkedHashMap<String,
String>();
- TreeSet<MeasurementDefinition> sortedDefs = new
TreeSet<MeasurementDefinition>(
+ SortedSet<MeasurementDefinition> sortedDefs = new
TreeSet<MeasurementDefinition>(
new Comparator<MeasurementDefinition>() {
@Override
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 79fca41..c1c9d93 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -724,7 +724,7 @@ public class AlertDefinitionManagerBean implements
AlertDefinitionManagerLocal,
generator.setAuthorizationResourceFragment(tokenType, subject.getId());
}
- CriteriaQueryRunner<AlertDefinition> queryRunner = new
CriteriaQueryRunner(criteria, generator, entityManager);
+ CriteriaQueryRunner<AlertDefinition> queryRunner = new
CriteriaQueryRunner<AlertDefinition>(criteria, generator, entityManager);
return queryRunner.execute();
}
commit 8ef472fcc229518d96ff8dcee0e80c5da652eaac
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 16 21:20:19 2012 -0400
[BZ 818522] improve GUI messages and Agent logging for child Resource creation
(
https://bugzilla.redhat.com/show_bug.cgi?id=818522)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
index 2ce32ef..7a01b88 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
@@ -23,9 +23,11 @@
package org.rhq.core.pc.inventory;
import org.rhq.core.clientapi.agent.inventory.CreateResourceResponse;
+ import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.clientapi.server.inventory.ResourceFactoryServerService;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.resource.CreateResourceStatus;
+ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
@@ -37,11 +39,12 @@ package org.rhq.core.pc.inventory;
import java.util.concurrent.Callable;
/**
- * Runnable implementation to thread create request requests.
+ * Runnable implementation to process Resource create requests.
*
* @author Jason Dobies
*/
public class CreateResourceRunner implements Callable, Runnable {
+
// Attributes --------------------------------------------
private final Log log = LogFactory.getLog(CreateResourceRunner.class);
@@ -90,6 +93,7 @@ public class CreateResourceRunner implements Callable, Runnable {
// Runnable Implementation --------------------------------------------
+ @Override
public void run() {
try {
call();
@@ -100,6 +104,7 @@ public class CreateResourceRunner implements Callable, Runnable {
// Callable Implementation --------------------------------------------
+ @Override
public Object call() throws Exception {
log.info("Creating resource through report: " + report);
@@ -175,13 +180,24 @@ public class CreateResourceRunner implements Callable, Runnable {
// Trigger a service scan on the parent resource to have the newly created
resource discovered if the plugin
// said the create was successful
- if (runRuntimeScan && isSuccessStatus(status)) {
- log.info("Scanning for newly created Resource...");
+ if (isSuccessStatus(status) && runRuntimeScan) {
+ log.debug("Scheduling service scan to discover newly created [" +
report.getResourceType()
+ + "] managed resource with key [" + report.getResourceKey()
+ "]...");
+ InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
try {
- InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
- inventoryManager.performServiceScan(parentResourceId);
- } catch (Throwable t) {
- log.error("Error received while attempting runtime scan for newly
created Resource...");
+ // This will block until the service scan completes.
+ InventoryReport inventoryReport =
inventoryManager.performServiceScan(parentResourceId);
+ } catch (Exception e) {
+ log.error("Failed to run service scan to discover newly created
[" + report.getResourceType()
+ + "] managed resource with key [" +
report.getResourceKey() + "].", e);
+ }
+
+ Resource discoveredResource = getDiscoveredResource();
+ if (discoveredResource != null) {
+ log.info("Discovered " + discoveredResource + ", for a new
managed resource created via RHQ.");
+ } else {
+ log.error("Failed to discover Resource for newly created [" +
report.getResourceType()
+ + "] managed resource with key [" +
report.getResourceKey() + "].");
}
}
@@ -192,4 +208,17 @@ public class CreateResourceRunner implements Callable, Runnable {
return (status == CreateResourceStatus.SUCCESS) || (status ==
CreateResourceStatus.INVALID_CONFIGURATION)
|| (status == CreateResourceStatus.INVALID_ARTIFACT);
}
- }
\ No newline at end of file
+
+ private Resource getDiscoveredResource() {
+ InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
+ ResourceContainer parentResourceContainer =
inventoryManager.getResourceContainer(parentResourceId);
+ Resource parentResource = parentResourceContainer.getResource();
+ for (Resource childResource : parentResource.getChildResources()) {
+ if (childResource.getResourceType().equals(report.getResourceType())
&& childResource.getResourceKey().equals(report.getResourceKey())) {
+ return childResource;
+ }
+ }
+ return null;
+ }
+
+ }
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index d76b7fe..7ab7420 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -40,6 +40,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
+import java.util.concurrent.Future;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -1155,25 +1156,29 @@ public class InventoryManager extends AgentService implements
ContainerService,
}
/**
- * Performs a service scan on the specified Resource. NOTE: This method will block
until the scan completes.
+ * Performs a service scan on the specified Resource, waiting until the scan
completes to return.
*
- * @param resourceId the id of the Resource on which to discover services
+ * @param resourceId the id of the Resource for which to discover child services
*/
- public void performServiceScan(int resourceId) {
+ public InventoryReport performServiceScan(int resourceId) {
ResourceContainer resourceContainer = getResourceContainer(resourceId);
if (resourceContainer == null) {
- if (log.isDebugEnabled())
- log.debug("No resource container for resource with id [" +
resourceId
- + "] found - not performing a serviceScan");
- return;
+ // TODO (ips, 05/16/12): Shouldn't we throw an exception here??
+ if (log.isDebugEnabled()) {
+ log.debug("No resource container for Resource with id [" +
resourceId
+ + "] found - not performing a child service scan.");
+ }
+ return new InventoryReport(agent);
}
Resource resource = resourceContainer.getResource();
RuntimeDiscoveryExecutor oneTimeExecutor = new RuntimeDiscoveryExecutor(this,
configuration, resource);
+ log.debug("Scheduling child service scan for " + resource + " and
waiting for it to complete...");
try {
- inventoryThreadPoolExecutor.submit((Callable<InventoryReport>)
oneTimeExecutor).get();
+ Future<InventoryReport> future =
inventoryThreadPoolExecutor.submit((Callable<InventoryReport>) oneTimeExecutor);
+ return future.get();
} catch (Exception e) {
- throw new RuntimeException("Error submitting service scan", e);
+ throw new RuntimeException("Error submitting child service scan for
" + resource + ".", e);
}
}
@@ -2093,7 +2098,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
public void synchronizeInventory(ResourceSyncInfo syncInfo) {
log.info("Synchronizing local inventory with Server inventory for Resource
[" + syncInfo.getId()
- + "] and its descendants...");
+ + "] and its descendants...");
// Get the latest resource data rooted at the given id.
synchInventory(syncInfo);
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index c93799f..aab13dd 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1992,8 +1992,8 @@ widget_recordEditor_warn_validation = One or more fields have
invalid values. Th
widget_resourceFactoryWizard_archPrompt = Package Architecture
widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Template
widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Configuration Template
-widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
-widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createSubmit = A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+widget_resourceFactoryWizard_createSubmitType = A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
widget_resourceFactoryWizard_editConfigStepName = Deployment Options
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 0722fc3..a9d33a3 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1758,8 +1758,8 @@ widget_recordEditor_warn_validation = Ein oder mehrere Felder haben
ungültige W
##widget_resourceFactoryWizard_archPrompt = Package Architecture
##widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
##widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
-##widget_resourceFactoryWizard_createSubmit = A request to create a resource with the
name of [{0}] has been submitted successfully.
-##widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
+##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = Neue Ressource vom Typ [{0}] anlegen
widget_resourceFactoryWizard_createWizardWindowTitle = Assistent zum Erzeugen von
Ressourcen
widget_resourceFactoryWizard_editConfigStepName = Optionen für das Deployment
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index b4cb461..c036ea2 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -1985,8 +1985,8 @@ widget_recordEditor_warn_validation = 一つ以上のフィールドが無効な
widget_resourceFactoryWizard_archPrompt = パッケージアーキテクチャ
widget_resourceFactoryWizard_configTemplatePrompt = リソース構成テンプレート
widget_resourceFactoryWizard_contentTemplatePrompt = デプロイ時間構成テンプレート
-widget_resourceFactoryWizard_createSubmit = 名前 [{0}] のリソースを持つ新規リソースの作成リクエストの送信が成功しました。
-widget_resourceFactoryWizard_createSubmitType = タイプ [{0}] の新規リソースの作成のリクエストの送信が成功しました
+##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = タイプ [{0}] の新規リソースの作成
widget_resourceFactoryWizard_createWizardWindowTitle = リソース作成ウィザード
widget_resourceFactoryWizard_editConfigStepName = 編集の構成
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 02cab07..3d6a3f5 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -2099,8 +2099,8 @@ widget_recordEditor_warn_validation = Um ou mais campos possuem
valores inv\u00E
widget_resourceFactoryWizard_archPrompt = Arquitetura do Pacote
widget_resourceFactoryWizard_configTemplatePrompt = Modelo de Configura\u00E7\u00E3o de
Recurso
widget_resourceFactoryWizard_contentTemplatePrompt = Modelos de Configura\u00E7\u00E3o do
Tempo de Deploy
-widget_resourceFactoryWizard_createSubmit = A requisi\u00E7\u00E3o para cria\u00E7\u00E3o
de um recurso com nome [{0}] foi submetida com sucesso.
-widget_resourceFactoryWizard_createSubmitType = A requisi\u00E7\u00E3o para
cria\u00E7\u00E3o de um recurso do tipo [{0}] foi submetida com sucesso.
+##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle = Criar novo recurso do tipo [{0}]
widget_resourceFactoryWizard_createWizardWindowTitle = Assistente para Cria\u00E7\u00E3o
de Recurso
widget_resourceFactoryWizard_editConfigStepName = Op��es de implanta��o
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
index d4444ff..fbbfbec 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ru.properties
@@ -1988,8 +1988,8 @@
#widget_resourceFactoryWizard_archPrompt = Package Architecture
#widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Template
#widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Configuration Template
-#widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
-#widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
+#widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+#widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
#widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
#widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
#widget_resourceFactoryWizard_editConfigStepName = Deployment Options
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index 1f44e7c..4da69e9 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -1984,8 +1984,8 @@ widget_recordEditor_warn_validation =
\u4e00\u4e2a\u6216\u591a\u4e2a\u5b57\u6bb5
widget_resourceFactoryWizard_archPrompt = \u5305\u67b6\u6784
widget_resourceFactoryWizard_configTemplatePrompt = \u8d44\u6e90\u914d\u7f6e\u6a21\u677f
widget_resourceFactoryWizard_contentTemplatePrompt =
\u53d1\u5e03\u65f6\u95f4\u914d\u7f6e\u6a21\u677f
-widget_resourceFactoryWizard_createSubmit = \u521b\u5efa\u8d44\u6e90[{0}]\u6210\u529f.
-widget_resourceFactoryWizard_createSubmitType =
\u521b\u5efa\u7c7b\u578b[{0}]\u7684\u8d44\u6e90\u8bf7\u6c42\u63d0\u4ea4\u6210\u529f.
+##widget_resourceFactoryWizard_createSubmit=A request to create a Resource with the name
of [{0}] has been submitted successfully. Note, it may take several minutes for the
Resource to show up in inventory.
+##widget_resourceFactoryWizard_createSubmitType=A request to create a Resource of type
[{0}] has been submitted successfully. Note, it may take several minutes for the Resource
to show up in inventory.
widget_resourceFactoryWizard_createWizardTitle =
\u521b\u5efa\u7c7b\u578b[{0}]\u7684\u65b0\u8d44\u6e90
widget_resourceFactoryWizard_createWizardWindowTitle =
\u8d44\u6e90\u521b\u5efa\u5411\u5bfc
##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
commit a0ecbf2e462645a8774cafd69259085a0bee1d0d
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed May 16 17:26:59 2012 -0500
[BZ 821904] Add the two missing classes back to the JBossAS5 plugin for backwards
compatibility with embedded versions of the plugin container.
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/FileContentDelegate.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/FileContentDelegate.java
new file mode 100644
index 0000000..c57037f
--- /dev/null
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/FileContentDelegate.java
@@ -0,0 +1,387 @@
+/*
+ * Jopr Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.plugins.jbossas5.util;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Stack;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.rhq.core.domain.content.PackageDetails;
+import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
+import org.rhq.core.pluginapi.util.FileUtils;
+import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.core.util.ZipUtil;
+import org.rhq.core.util.file.FileUtil;
+
+/*
+ * @deprecated Do not use this class anymore, even for JBoss AS5 code. This was replaced
by (@link org.rhq.core.pluginapi.content.FileContentDelegate).
+ * Do not update/move/remove this class. The class is still here for backwards
compatibility with previous versions of the plugin container.
+ */
+@Deprecated
+public class FileContentDelegate {
+
+ private static final String RHQ_SHA_256 = "RHQ-Sha256";
+ private static final String SHA256_FILE = "application.sha256";
+
+ private final Log log = LogFactory.getLog(FileContentDelegate.class);
+ private final String fileEnding;
+ private final File directory;
+
+
+ /**
+ * Default constructor.
+ */
+ @Deprecated
+ public FileContentDelegate() {
+ this.fileEnding = null;
+ this.directory = null;
+ }
+
+ @Deprecated
+ public FileContentDelegate(File directory, String fileEnding) {
+ this.directory = directory;
+ this.fileEnding = fileEnding;
+ }
+
+ @Deprecated
+ public String getFileEnding() {
+ return fileEnding;
+ }
+
+ @Deprecated
+ public File getDirectory() {
+ return directory;
+ }
+
+ /**
+ * Creates a new package described by the specified details. The destination of the
content in the provided input
+ * stream will be determined by the package name.
+ *
+ * @param details describes the package being created
+ * @param content content to be written for the package. NOTE this Stream will be
closed by this method.
+ * @param unzip if <code>true</code>, the content stream will be
treated like a ZIP file and be unzipped as
+ * it is written, using the package name as the base directory; if
<code>false</code> the
+ * @param createBackup If <code>true</code>, the original file will be
backed up to file.bak
+ */
+ @Deprecated
+ public void createContent(PackageDetails details, File content, boolean unzip) {
+ File destination = getPath(details);
+ try {
+ if (unzip) {
+ ZipUtil.unzipFile(content, destination);
+ } else {
+ FileUtil.copyFile(content, destination);
+ }
+ details.setFileName(destination.getPath());
+ } catch (IOException e) {
+ throw new RuntimeException("Error creating artifact from details: "
+ destination, e);
+ }
+ }
+
+ /**
+ * Returns a stream from which the content of the specified package can be read.
+ *
+ * @param details package being loaded
+ *
+ * @return buffered input stream containing the contents of the package; will not be
<code>null</code>, an
+ * exception is thrown if the content cannot be loaded
+ */
+ @Deprecated
+ public InputStream getContent(PackageDetails details) {
+ File contentFile = getPath(details);
+ try {
+ return new BufferedInputStream(new FileInputStream(contentFile));
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("Package content not found for package "
+ contentFile, e);
+ }
+ }
+
+ /**
+ * Deletes the underlying file for the specified package.
+ *
+ * @param details package to delete
+ */
+ @Deprecated
+ public void deleteContent(PackageDetails details) {
+ File contentFile = getPath(details);
+ if (!contentFile.exists())
+ return;
+
+ try {
+ FileUtils.purge(contentFile, true);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to delete underlying file [" +
contentFile + "] for " + details + ".", e);
+ }
+ }
+
+ /**
+ * This is a stub implementation, you need to implement a
+ * discovery for artifacts of your particular content type.
+ *
+ * @return
+ */
+ @Deprecated
+ public Set<ResourcePackageDetails> discoverDeployedPackages() {
+ throw new UnsupportedOperationException("This method is not
implemented!");
+ }
+
+ /**
+ * Retrieves SHA256 for the deployment. If this is an exploded deployment
+ * and SHA256 is missing from the data directory then compute the SHA256
+ * and save in the data directory.
+ *
+ * @param deployment deployment location
+ * @param resourceId resource id
+ * @param dataDirectory data directory
+ * @return SHA256 of the package
+ */
+ @Deprecated
+ public String retrieveDeploymentSHA(File deployment, File resourceDataDirectory) {
+ String sha = null;
+
+ if (deployment.isDirectory()) {
+ File propertiesFile = new File(resourceDataDirectory, SHA256_FILE);
+
+ if (propertiesFile.exists()) {
+ FileInputStream propertiesInputStream = null;
+ try {
+ propertiesInputStream = new FileInputStream(propertiesFile);
+ Properties prop = new Properties();
+ prop.load(propertiesInputStream);
+ sha = prop.getProperty(RHQ_SHA_256);
+ } catch (IOException e) {
+ throw new RuntimeException("Error retrieving artifact's
SHA256.", e);
+ } finally {
+ if (propertiesInputStream != null) {
+ try {
+ propertiesInputStream.close();
+ } catch (IOException e) {
+ log.error("Failed to close input stream.", e);
+ }
+ }
+ }
+ }
+
+ if (sha == null) {
+ sha = this.saveDeploymentSHA(deployment, resourceDataDirectory);
+ }
+ } else {
+ sha = this.computeSHAForArchivedContent(deployment);
+ }
+
+ return sha;
+ }
+
+ /**
+ * Save the SHA256 for a deployment with knowledge of the original archived content.
+ * If the deployment is archived, do not save anything. Just return the SHA256
+ * of the content.
+ *
+ * @param originalArchive
+ * @param deployment
+ * @param resourceId
+ * @param dataDirectory
+ * @return
+ */
+ @Deprecated
+ public String saveDeploymentSHA(File originalArchive, File deployment, File
resourceDataDirectory) {
+ String sha = null;
+
+ if (deployment.isDirectory()) {
+ sha = this.computeSHAForArchivedContent(originalArchive);
+ this.saveDeploymentSHA(sha, resourceDataDirectory);
+ } else {
+ sha = this.computeSHAForArchivedContent(deployment);
+ }
+
+ return sha;
+ }
+
+ /**
+ * Save the SHA256 for a deployment without knowing its original archived content.
+ * If the deployment is archived, do not save anything. Just return the SHA256
+ * of the content.
+ *
+ * @param deployment deployment
+ * @param resourceId resource id
+ * @param dataDirectory data directory
+ * @return the saved SHA256
+ */
+ @Deprecated
+ public String saveDeploymentSHA(File deployment, File resourceDataDirectory) {
+ String sha = null;
+
+ if (deployment.isDirectory()) {
+ sha = this.computeSHAForExplodedContent(deployment);
+ this.saveDeploymentSHA(sha, resourceDataDirectory);
+ } else {
+ sha = this.computeSHAForArchivedContent(deployment);
+ }
+
+ return sha;
+ }
+
+ /**
+ * Persist the SHA256 value in data directory in a properties file.
+ * File name format is "[Uuid of Resource].sha"
+ *
+ * @param sha SHA256 of the content
+ * @param resourceId resource Uuid
+ * @param dataDirectory data directory
+ */
+ @Deprecated
+ private void saveDeploymentSHA(String sha, File resourceDataDirectory) {
+ Properties prop = new Properties();
+ prop.setProperty(RHQ_SHA_256, sha);
+
+ File propertiesFile = new File(resourceDataDirectory, SHA256_FILE);
+ FileOutputStream propertiesOutputStream = null;
+ try {
+ propertiesOutputStream = new FileOutputStream(propertiesFile);
+ prop.store(propertiesOutputStream, null);
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("Error saving artifact's SHA256.",
e);
+ } catch (IOException e) {
+ throw new RuntimeException("Error saving artifact's SHA256.",
e);
+ } finally {
+ if (propertiesOutputStream != null) {
+ try {
+ propertiesOutputStream.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Error saving artifact's
SHA256.", e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Computes SHA256 for an archived content.
+ *
+ * @param contentFile content archive
+ * @return SHA256 of the archive
+ */
+ @Deprecated
+ private String computeSHAForArchivedContent(File contentFile) {
+ if (!contentFile.isDirectory()) {
+ try {
+ MessageDigestGenerator messageDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
+ return messageDigest.calcDigestString(contentFile);
+ } catch (Exception ex) {
+ log.error("Not able to compute SHA256 for " +
contentFile.getPath() + " .");
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Computes SHA256 for exploded content as the aggregate SHA256
+ * of all the files in the deployment
+ *
+ * @param deploymentDirectory deployment directory
+ * @return SHA256 of the content
+ */
+ @Deprecated
+ private String computeSHAForExplodedContent(File deploymentDirectory) {
+ try {
+ if (deploymentDirectory.isDirectory()) {
+ MessageDigestGenerator messageDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
+
+ Stack<File> unvisitedFolders = new Stack<File>();
+ unvisitedFolders.add(deploymentDirectory);
+ while (!unvisitedFolders.empty()) {
+ File[] files = unvisitedFolders.pop().listFiles();
+ Arrays.sort(files, new Comparator<File>() {
+ public int compare(File f1, File f2) {
+ try {
+ return
f1.getCanonicalPath().compareTo(f2.getCanonicalPath());
+ } catch (IOException e) {
+ //do nothing if the sort fails at this point
+ }
+
+ return 0;
+ }
+ });
+
+ for (File file : files) {
+ if (file.isDirectory()) {
+ unvisitedFolders.add(file);
+ } else {
+ FileInputStream inputStream = null;
+ try {
+ inputStream = new FileInputStream(file);
+ messageDigest.add(inputStream);
+ } finally {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ }
+ }
+ }
+ }
+
+ return messageDigest.getDigestString();
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Error creating artifact for contentFile:
" + deploymentDirectory, e);
+ }
+
+ return null;
+ }
+
+ /**
+ * JBNADM-2022 - It still needs to be determined if it is the responsibility of the
plugin container or the
+ * plugin to be concerned with path information in the package name. For
now, it's the plugin's
+ * responsibility. We strip out the path information to keep control of
where the JARs are
+ * deployed to. Note: when we add support for more package types,
we'll need to refactor this
+ * out on a package type basis.
+ * @param details package details
+ * @return destination path
+ */
+ @Deprecated
+ private File getPath(PackageDetails details) {
+ String fileName = details.getKey().getName();
+ int lastPathStart = fileName.lastIndexOf(File.separatorChar);
+ if (lastPathStart > -1) {
+ fileName = fileName.substring(lastPathStart + 1);
+ }
+
+ if (this.fileEnding != null && !fileName.endsWith(this.fileEnding)) {
+ fileName = fileName + this.fileEnding;
+ }
+
+ return new File(this.directory, fileName);
+ }
+}
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
new file mode 100644
index 0000000..bb68112
--- /dev/null
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
@@ -0,0 +1,152 @@
+/*
+ * Jopr Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.plugins.jbossas5.util;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.content.PackageDetailsKey;
+import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
+import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
+
+/*
+ * @deprecated Do not use this class anymore, even for JBoss AS5 code. This was replaced
by (@link org.rhq.core.pluginapi.content.JarContentDelegate).
+ * Do not update/move/remove this class. The class is still here for backwards
compatibility with previous versions of the plugin container.
+ */
+@Deprecated
+public class JarContentDelegate extends FileContentDelegate {
+ private static final String MIME_TYPE_JAR = "application/java-archive";
+
+ private final String packageTypeName;
+
+ @Deprecated
+ public JarContentDelegate(File directory, String packageTypeName) {
+ super(directory, ".jar");
+
+ this.packageTypeName = packageTypeName;
+ }
+
+ @Deprecated
+ public String getPackageTypeName() {
+ return packageTypeName;
+ }
+
+ @Deprecated
+ @Override
+ public Set<ResourcePackageDetails> discoverDeployedPackages() {
+ Set<ResourcePackageDetails> packages = new
HashSet<ResourcePackageDetails>();
+
+ File[] files = this.getDirectory().listFiles(new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname.getName().endsWith(getFileEnding()) &&
pathname.isFile();
+ }
+ });
+
+ for (File file : files) {
+ String manifestVersion = null;
+ JarFile jf = null;
+ try {
+ Configuration config = new Configuration();
+ jf = new JarFile(file);
+
+ Manifest manifest = jf.getManifest();
+
+ if (manifest != null) {
+ Attributes attributes = manifest.getMainAttributes();
+
+ manifestVersion =
attributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
+
+ config.put(new PropertySimple("version",
manifestVersion));
+ config.put(new PropertySimple("title",
attributes.getValue(Attributes.Name.IMPLEMENTATION_TITLE)));
+ config.put(new PropertySimple("url",
attributes.getValue(Attributes.Name.IMPLEMENTATION_URL)));
+ config
+ .put(new PropertySimple("vendor",
attributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR)));
+
+ config.put(new PropertySimple("classpath",
attributes.getValue(Attributes.Name.CLASS_PATH)));
+ config.put(new PropertySimple("sealed",
attributes.getValue(Attributes.Name.SEALED)));
+ }
+
+ String sha256 = null;
+ try {
+ sha256 = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(file);
+ } catch (Exception e) {
+ // leave as null
+ }
+
+ ResourcePackageDetails details = new ResourcePackageDetails(new
PackageDetailsKey(file.getName(),
+ getVersion(sha256), getPackageTypeName(), "noarch"));
+
+ packages.add(details);
+ details.setFileCreatedDate(file.lastModified()); // Why don't we have
a last modified time?
+ details.setFileName(file.getName());
+ details.setFileSize(file.length());
+ details.setClassification(MIME_TYPE_JAR);
+ details.setSHA256(sha256);
+ details.setDisplayVersion(getDisplayVersion(file));
+
+ details.setExtraProperties(config);
+ } catch (IOException e) {
+ // If we can't open it, don't worry about it, we just won't
know the version
+ } finally {
+ try {
+ if (jf != null)
+ jf.close();
+ } catch (Exception e) {
+ // Nothing we can do here ...
+ }
+ }
+ }
+
+ return packages;
+ }
+
+ @Deprecated
+ private String getVersion(String sha256) {
+ return "[sha256=" + sha256 + "]";
+ }
+
+ /**
+ * Retrieve the display version for the component. The display version should be
stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded
deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ @Deprecated
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
+}
commit 76e32c69c36b36d728cdecc6b8bd8ad2cc6f6924
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Wed May 16 13:12:09 2012 -0700
[BZ 821978] UXD global UI change to checkboxes in grids. Eliminated unchecked minus
sign and replace green checked mark with black checked mark.
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_disabled_11.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_disabled_11.png
index 815e023..5906359 100644
Binary files
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_disabled_11.png
and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_disabled_11.png
differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_enabled_11.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_enabled_11.png
index f01b5e3..00bba51 100644
Binary files
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_enabled_11.png
and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/permission_enabled_11.png
differ
commit 15d7dca01814f215d1c49f4b80fb4d2bcb029a6d
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 16 14:21:24 2012 -0400
[BZ 822228] "discovery -f" now prints a message and aborts if a discovery
scan is already in progress (
https://bugzilla.redhat.com/show_bug.cgi?id=822228)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 454ada8..d76b7fe 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1164,7 +1164,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
if (resourceContainer == null) {
if (log.isDebugEnabled())
log.debug("No resource container for resource with id [" +
resourceId
- + "] found, not performing a serviceScan");
+ + "] found - not performing a serviceScan");
return;
}
Resource resource = resourceContainer.getResource();
@@ -1831,6 +1831,10 @@ public class InventoryManager extends AgentService implements
ContainerService,
return getResourcesWithType(serverType, this.platform.getChildResources());
}
+ public boolean isDiscoveryScanInProgress() {
+ return (this.inventoryThreadPoolExecutor.getActiveCount() >= 1);
+ }
+
private Set<Resource> getResourcesWithType(ResourceType serverType,
Set<Resource> resources) {
Set<Resource> servers = new HashSet<Resource>();
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
index 3b0412f..f25f62b 100644
---
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
+++
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
@@ -1940,6 +1940,9 @@ public interface AgentI18NResourceKeys {
@I18NMessage("WARNING: Discovery will not be run for the following
ResourceTypes, because they are blacklisted: {0}")
String DISCOVERY_BLACKLISTED_TYPES =
"PromptCommand.discovery.blacklisted-types";
+ @I18NMessage("A discovery scan is already in progress. Please wait for it to
complete and then try again.")
+ String DISCOVERY_SCAN_ALREADY_IN_PROGRESS =
"PromptCommand.discovery.scan-already-in-progress";
+
@I18NMessage("Full discovery run in [{0}] ms")
String DISCOVERY_FULL_RUN = "PromptCommand.discovery.full-run";
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/DiscoveryPromptCommand.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/DiscoveryPromptCommand.java
index ad8d8f5..f8c64c9 100644
---
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/DiscoveryPromptCommand.java
+++
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/DiscoveryPromptCommand.java
@@ -201,12 +201,18 @@ public class DiscoveryPromptCommand implements AgentPromptCommand {
}
if (full) {
+ // do a full discovery - we ignore the -p and -r and -i options and do
everything
+
if (!agent.getClientCommandSender().isSending()) {
out.println(MSG.getMsg(AgentI18NResourceKeys.DISCOVERY_AGENT_NOT_CONNECTED_TO_SERVER));
}
- // do a full discovery - we ignore the -p and -r and -i options and do
everything
InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
+ if (inventoryManager.isDiscoveryScanInProgress()) {
+
out.println(MSG.getMsg(AgentI18NResourceKeys.DISCOVERY_SCAN_ALREADY_IN_PROGRESS));
+ return;
+ }
+
HashSet<ResourceType> blacklist =
inventoryManager.getDiscoveryComponentProxyFactory()
.getResourceTypeBlacklist();
if (!blacklist.isEmpty()) {
commit aa6d58c5c9f50d8ec3d8bb517ccf1df83902b92b
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Wed May 16 10:32:23 2012 -0700
Change GWT soyc report generation from true to false as default. This report is used
on demand and can be turned on if we need to view it.
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index 14254b0..f721fbe 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -58,9 +58,8 @@
up gwt compilation. -->
<gwt.draftCompile>false</gwt.draftCompile>
- <!-- Change this to "false" via the mvn command line or your
~/.m2/settings.xml to speed
- up gwt compilation and reduce memory consumption by avoiding report
generation. -->
- <gwt.soyc>true</gwt.soyc>
+ <!-- Change this to "true" via the mvn command line or your
~/.m2/settings.xml to generate report -->
+ <gwt.soyc>false</gwt.soyc>
<!-- Change this to "DETAILED" via the mvn command line or your
~/.m2/settings.xml to
make sure GWT-generated JavaScript code is not obfuscated. -->
commit b70409a3d2ddf95f66cf29cd0258383d415d2829
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Wed May 16 10:28:43 2012 -0700
Increase GWT compile worker threads from 2 to 4. Decreases compile time.
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index 3e8799e..14254b0 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -24,7 +24,7 @@
<!-- If this is too much memory to allocate to your gwt:debug process then
override this property in
in your settings.xml -->
<gwt-plugin.extraJvmArgs>-Xms512M -Xmx512M -XX:PermSize=128M
-XX:MaxPermSize=256M</gwt-plugin.extraJvmArgs>
- <gwt-plugin.localWorkers>2</gwt-plugin.localWorkers>
+ <gwt-plugin.localWorkers>4</gwt-plugin.localWorkers>
<coreGuiParams />
<coreGuiRunTarget>'http://localhost:7080/coregui/CoreGUI.html${coreGuiParams}'</coreGuiRunTarget>
commit eab616301d6c7fbf1b1581c5c4164859c801ab15
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Wed May 16 10:19:24 2012 -0700
Update RESTeasy jars to 2.3.3.Final from 2.3.2.Final
diff --git a/pom.xml b/pom.xml
index d9fe965..80c705d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,7 +107,7 @@
<augeas.zip.location>${settings.localRepository}/net/augeas/augeas-native/${augeas.version}</augeas.zip.location>
<augeas.zip.mask>*-${augeas.classifier}.zip</augeas.zip.mask>
<ant.contrib.version>1.0b3</ant.contrib.version>
- <resteasy.version>2.3.2.Final</resteasy.version>
+ <resteasy.version>2.3.3.Final</resteasy.version>
<freemarker.version>2.3.18</freemarker.version>
<powermock.version>1.4.11</powermock.version>
<arquillian.version>1.0.0.Final</arquillian.version>
commit de82e5b9603bf9cd2ec8261b8cb996edbd5a838b
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Wed May 16 12:53:14 2012 -0400
add a test that checks if discovery is run more than once per child type
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
index 3d4a581..09241bd 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/InventoryManagerTest.java
@@ -19,6 +19,11 @@
package org.rhq.core.pc.inventory;
import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
import org.jboss.arquillian.container.test.api.Deployer;
import org.jboss.arquillian.container.test.api.Deployment;
@@ -29,6 +34,7 @@ import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.inventory.testplugin.TestResourceComponent;
@@ -39,8 +45,6 @@ import org.rhq.test.arquillian.FakeServerInventory;
import org.rhq.test.arquillian.MockingServerServices;
import org.rhq.test.arquillian.RunDiscovery;
import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
-import org.testng.Assert;
-import org.testng.annotations.Test;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
@@ -84,7 +88,7 @@ public class InventoryManagerTest extends Arquillian {
}
/**
- * Tests that Resources are properly synchronized after the plugin container is
restarted with a clean data
+ * Tests that Resources are properly synchronized after the inventory manager is
restarted with a clean data
* directory.
*
* @throws Exception if an error occurs
@@ -115,6 +119,25 @@ public class InventoryManagerTest extends Arquillian {
validatePluginContainerInventory();
}
+ /**
+ * Tests that discovery was only run once per ResourceType.
+ *
+ * @throws Exception if an error occurs
+ */
+ @Test(groups = "pc.itest.inventorymanager", dependsOnMethods =
"testSyncUnknownResources")
+ public void testDiscoveryRunsOnlyOncePerType() throws Exception {
+ Map<ResourceType,Integer> executionCountsByResourceType =
TestResourceDiscoveryComponent.getExecutionCountsByResourceType();
+ Map<ResourceType,Integer> flaggedExecutionCountsByResourceType = new
HashMap<ResourceType, Integer>();
+ for (ResourceType resourceType : executionCountsByResourceType.keySet()) {
+ Integer count = executionCountsByResourceType.get(resourceType);
+ if (count > 1) {
+ flaggedExecutionCountsByResourceType.put(resourceType, count);
+ }
+ }
+ Assert.assertTrue(flaggedExecutionCountsByResourceType.isEmpty(),
+ "Discovery was executed more than once for the following types:
" + flaggedExecutionCountsByResourceType);
+ }
+
private void validatePluginContainerInventory() {
System.out.println("Validating PC inventory...");
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceDiscoveryComponent.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceDiscoveryComponent.java
index 43ccfd4..8091054 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceDiscoveryComponent.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/inventory/testplugin/TestResourceDiscoveryComponent.java
@@ -19,6 +19,8 @@
package org.rhq.core.pc.inventory.testplugin;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
import org.rhq.core.domain.resource.ResourceType;
@@ -33,11 +35,21 @@ import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
*/
public class TestResourceDiscoveryComponent implements
ResourceDiscoveryComponent<ResourceComponent<?>> {
+ private static Map<ResourceType, Integer> executionCountsByResourceType = new
HashMap();
+
@Override
public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<ResourceComponent<?>>
discoveryContext)
throws InvalidPluginConfigurationException, Exception {
ResourceType resourceType = discoveryContext.getResourceType();
+
+ Integer count = executionCountsByResourceType.get(resourceType);
+ if (count == null) {
+ executionCountsByResourceType.put(resourceType, 1);
+ } else {
+ executionCountsByResourceType.put(resourceType, count + 1);
+ }
+
DiscoveredResourceDetails resourceDetails = new
DiscoveredResourceDetails(resourceType,
"SINGLETON", resourceType.getName(), "1.0",
resourceType.getDescription(),
discoveryContext.getDefaultPluginConfiguration(), null);
@@ -45,4 +57,8 @@ public class TestResourceDiscoveryComponent implements
ResourceDiscoveryComponen
return Collections.singleton(resourceDetails);
}
+ public static Map<ResourceType, Integer> getExecutionCountsByResourceType() {
+ return executionCountsByResourceType;
+ }
+
}