[rhq] Branch 'bug/759615' - 3 commits - modules/enterprise modules/plugins
by mazz
modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientFactory.java | 5 +-
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java | 6 +--
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java | 3 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java | 3 -
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java | 3 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java | 17 +++++-----
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java | 2 -
7 files changed, 22 insertions(+), 17 deletions(-)
New commits:
commit 5e187ddde1d437afc8d0e7e706ed0ea451225587
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Mar 30 11:07:13 2012 -0400
[BZ 759615] put our dynamic class definition in a separate package to avoid conflict with signed packages
diff --git a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientFactory.java b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientFactory.java
index 2c1258d..74c0019 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientFactory.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/ResourceClientFactory.java
@@ -144,9 +144,10 @@ public class ResourceClientFactory {
private Class<?> defineCustomInterface(ResourceClientProxy proxy) {
try {
- // define the dynamic class
+ // define the dynamic class - do not put it in any known rhq package in case our jars are signed (see BZ-794503)
ClassPool pool = ClassPool.getDefault();
- CtClass customClass = pool.makeInterface(ResourceClientProxy.class.getName() + proxy.fingerprint);
+ CtClass customClass = pool.makeInterface("org.rhq.bindings.client.dynamic."
+ + ResourceClientProxy.class.getSimpleName() + proxy.fingerprint);
for (String key : proxy.allProperties.keySet()) {
Object prop = proxy.allProperties.get(key);
commit ae9c8d0116e63386df6cce506de33adbedfa3020
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 30 12:36:11 2012 +0200
config file arguments (option -c to start scripts) must be relative.
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 8557a5d..2eec0d5 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
@@ -76,7 +76,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
// Only barf a stack trace for runtime exceptions.
log.error("Discovery of a " + discoveryContext.getResourceType().getName()
+ " Resource failed for " + processScanResult.getProcessInfo() + ".", e);
- } catch (Exception e) {
+ } catch (Exception e) {
log.error("Discovery of a " + discoveryContext.getResourceType().getName()
+ " Resource failed for " + processScanResult.getProcessInfo() + " - cause: " + e);
}
@@ -85,7 +85,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
return discoveredResources;
}
- protected DiscoveredResourceDetails buildResourceDetails(ResourceDiscoveryContext discoveryContext,
+ protected DiscoveredResourceDetails buildResourceDetails(ResourceDiscoveryContext discoveryContext,
ProcessScanResult psr) throws Exception {
Configuration pluginConfig = discoveryContext.getDefaultPluginConfiguration();
// IF SE, then look at domain/configuration/host.xml <management interface="default" port="9990
@@ -172,7 +172,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
String cwd = process.getExecutable().getCwd();
baseDir = new File(cwd, baseDirString);
if (!baseDir.exists()) {
- baseDir = new File(homeDir, baseDirString);
+ baseDir = new File(homeDir, baseDirString);
}
}
}
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 6fbfcef..20e5518 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
@@ -281,14 +281,17 @@ public class BaseServerComponent<T extends ResourceComponent<?>> extends BaseCom
String configFile;
BaseProcessDiscovery processDiscovery;
+ String configDir = pluginConfig.getSimpleValue("configDir",null);
switch (mode) {
case STANDALONE:
processDiscovery = new StandaloneASDiscovery();
configFile = pluginConfig.getSimpleValue("config", null);
+ configFile = configDir + File.separator + configFile;
break;
case HOST:
processDiscovery = new HostControllerDiscovery();
configFile = pluginConfig.getSimpleValue("hostConfig", null);
+ configFile = configDir + File.separator + configFile;
break;
default:
throw new IllegalArgumentException("Unsupported mode: " + mode);
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
index 225468f..a7e684d 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
@@ -101,8 +101,7 @@ public class HostControllerDiscovery extends BaseProcessDiscovery {
Configuration pluginConfig = details.getPluginConfiguration();
String domainConfig = getServerConfigFromCommandLine(psr.getProcessInfo().getCommandLine(), getMode());
pluginConfig.put(new PropertySimple("domainConfig", domainConfig));
- String configDirString = pluginConfig.getSimpleValue("configDir", null);
- pluginConfig.put(new PropertySimple("hostConfig", getHostXmlFile(process, new File(configDirString))));
+ pluginConfig.put(new PropertySimple("hostConfig", getHostXmlFileName(process)));
return details;
}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
index 4a80c60..2075385 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
@@ -111,8 +111,7 @@ public class StandaloneASDiscovery extends BaseProcessDiscovery {
DiscoveredResourceDetails details = super.buildResourceDetails(discoveryContext, psr);
ProcessInfo process = psr.getProcessInfo();
Configuration pluginConfig = details.getPluginConfiguration();
- String configDirString = pluginConfig.getSimpleValue("configDir", null);
- pluginConfig.put(new PropertySimple("config", getHostXmlFile(process, new File(configDirString))));
+ pluginConfig.put(new PropertySimple("config", getHostXmlFileName(process)));
return details;
}
commit 638c1dba23ad218e56fb8b1456b07c82e608574f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 30 09:41:28 2012 +0200
Try to better see why this is failing.
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
index f34f674..0dd5d0c 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
@@ -78,6 +78,10 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
public void addBinding() throws Exception {
Configuration configuration = loadConfig();
+ PropertyList pl = (PropertyList) configuration.get("*");
+ int count = pl.getList().size();
+
+ // Now add a binding
PropertyMap map = new PropertyMap("binding");
PropertySimple ps = new PropertySimple("name","bla");
map.put(ps);
@@ -87,18 +91,17 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
map.put(ps);
ps = new PropertySimple("multicast-port:expr","${foo.bar.baz:12346}");
map.put(ps);
- PropertyList pl = (PropertyList) configuration.get("*");
- int count = pl.getList().size();
pl.add(map);
ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
+ assert response.getConfigurationUpdateId() == 1 : "Expected update id 1, but got " + response.getConfigurationUpdateId();
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ (count+1);
}
@Test(priority = 11)
@@ -117,7 +120,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
PropertyList pl = (PropertyList) configuration.get("*");
pl.add(map);
- ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
+ ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(2,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
@@ -136,7 +139,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
assert map != null : "Did not find 'bla2' in the returned config";
map.put(new PropertySimple("port:expr",22355));
map.put(new PropertySimple("fixed-port",true));
- request = new ConfigurationUpdateRequest(2,configuration,getResource().getId());
+ request = new ConfigurationUpdateRequest(3,configuration,getResource().getId());
response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config update resulted in this error: " + response.getErrorMessage();
@@ -160,7 +163,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
int count = pl.getList().size();
pl.add(map);
- ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
+ ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(4,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
@@ -180,7 +183,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
}
assert pl.getList().size() == count;
- request = new ConfigurationUpdateRequest(3,configuration,getResource().getId());
+ request = new ConfigurationUpdateRequest(5,configuration,getResource().getId());
response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Property removal resulted in this error: " + response.getErrorMessage();
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
index df9eb7a..99f8347 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
@@ -95,7 +95,7 @@ public class SocketBindingTest extends AbstractJBossAS7PluginTest {
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ (count+1);
}
@Test(priority = 11)
12 years, 1 month
[rhq] modules/plugins
by snegrea
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 187 ++++++----
1 file changed, 119 insertions(+), 68 deletions(-)
New commits:
commit 3a75aca1065721cb8c667a378ee66b8cc2f082e5
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Mar 30 09:51:38 2012 -0500
Added support for EE subsystem. Update CMP subsystems to allow multiple Hilo Keygenerators. Added support for JDNI bindings in the naming 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 cec63da..497a38b 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
@@ -2387,11 +2387,10 @@ working area for individual server instances</li></ul>"/>
</resource-configuration>
</server>
- <server name="Naming"
+ <service name="Naming"
discovery="SubsystemDiscovery"
class="NamingComponent"
- singleton="true"
- >
+ singleton="true">
<runs-inside>
<parent-resource-type name="Host" plugin="jboss-as-7"/>
@@ -2420,67 +2419,85 @@ working area for individual server instances</li></ul>"/>
</c:list-property>
</results>
</operation>
- </server>
+ <service name="Binding"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="JNDI bindings for primitive types"
+ singleton="true">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="binding"/>
+ </plugin-configuration>
- <service name="Transactions Subsystem"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- description="The transactions subsystem."
- >
-
- <runs-inside>
- <parent-resource-type name="Profile" plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="subsystem=transactions"/>
- </plugin-configuration>
-
- <metric property="number-of-nested-transactions" description="The total number of nested (sub) transactions created."
- measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
- <metric property="number-of-timed-out-transactions" description="The number of transactions that have rolled back due to timeout."
- measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
- <metric property="number-of-committed-transactions" description="The number of committed transactions."
- measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
- <metric property="number-of-transactions" description="The total number of transactions (top-level and nested) created"
- measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
- <metric property="number-of-heuristics" description="The number of transactions which have terminated with heuristic outcomes."
- measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
- <metric property="number-of-aborted-transactions" description="The number of aborted (i.e. rolledback) transactions."
- measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
- <metric property="number-of-inflight-transactions" description="The number of transactions that have begun but not yet terminated."
- measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
- <metric property="number-of-application-rollbacks" description="The number of transactions that have been rolled back by application request. This includes those that timeout, since the timeout behaviour is considered an attribute of the application configuration."
- measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
- <metric property="number-of-resource-rollbacks" description="The number of transactions that rolled back due to resource (participant) failure."
- measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
-
- <resource-configuration>
- <c:simple-property name="relative-to" required="false" type="string" readOnly="false" defaultValue="jboss.server.data.dir"
- description="References a global path configuration in the domain model, defaulting to the JBoss Application Server data directory (jboss.server.data.dir). The value of the 'path' attribute will treated as relative to this path. Use an empty string to disable the default behavior and force the value of the 'path' attribute to be treated as an absolute path."/>
- <c:simple-property name="process-id-uuid" required="false" type="boolean" readOnly="false" description="Indicates whether the transaction manager should use a UUID based process id."/>
- <c:simple-property name="socket-binding" required="false" type="string" readOnly="false" description="Used to reference the correct socket binding to use for the recovery environment."/>
- <c:simple-property name="jts" required="false" type="boolean" readOnly="false" defaultValue="false" description="If true this enables the Java Transaction Service"/>
- <c:simple-property name="object-store-path" required="false" type="string" readOnly="false" defaultValue="tx-object-store"
- description="Denotes a relative or absolute filesystem path denoting where the transaction manager object store should store data. By default the value is treated as relative to the path denoted by the 'relative-to' attribute."/>
- <c:simple-property name="path" required="false" type="string" readOnly="false" defaultValue="var" description="Denotes a relative or absolute filesystem path denoting where the transaction manager core should store data. By default the value is treated as relative to the path denoted by the 'relative-to' attribute."/>
- <c:simple-property name="process-id-socket-binding" required="false" type="string" readOnly="false" description="The name of the socket binding configuration to use if the transaction manager should use a socket-based process id. Will be 'undefined' if 'process-id-uuid' is 'true'; otherwise must be set."/>
- <c:simple-property name="default-timeout" required="false" type="integer" readOnly="false" defaultValue="300" description="The default timeout."/>
- <c:simple-property name="process-id-socket-max-ports" required="false" type="integer" readOnly="false" defaultValue="10" description="The maximum number of ports to search for an open port if the transaction manager should use a socket-based process id. If the port specified by the socket binding referenced in 'process-id-socket-binding' is occupied, the next higher port will be tried until an open port is found or the number of ports specified by this attribute have been tried. Will be 'undefined' if 'process-id-uuid' is 'true'."/>
- <c:simple-property name="recovery-listener" required="false" type="boolean" readOnly="false" defaultValue="false" description="Used to specify if the recovery system should listen on a network socket or not."/>
- <c:simple-property name="status-socket-binding" required="false" type="string" readOnly="false" description="Used to reference the correct socket binding to use for the transaction status manager."/>
- <c:simple-property name="node-identifier" required="false" type="string" readOnly="false" defaultValue="1" description="Used to set the node identifier on the core environment."/>
- <c:simple-property name="enable-tsm-status" required="false" type="boolean" readOnly="false" defaultValue="false" description="Whether the transaction status manager (TSM) service, needed for out of process recovery, should be provided or not.."/>
- <c:simple-property name="object-store-relative-to" required="false" type="string" readOnly="false" defaultValue="jboss.server.data.dir"
- description="References a global path configuration in the domain model, defaulting to the JBoss Application Server data directory (jboss.server.data.dir). The value of the 'path' attribute will treated as relative to this path. Use an empty string to disable the default behavior and force the value of the 'path' attribute to be treated as an absolute path."/>
- <c:simple-property name="enable-statistics" required="false" type="boolean" readOnly="false" defaultValue="false" description="Whether statistics should be enabled."/>
- </resource-configuration>
-
- </service>
+ <resource-configuration>
+ <c:simple-property name="binding-type" required="false" type="string" readOnly="false" description="The type of binding to create, may be simple, lookup or object-factory"/>
+ <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="Transactions Subsystem"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ description="The transactions subsystem.">
+
+ <runs-inside>
+ <parent-resource-type name="Profile" plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="subsystem=transactions"/>
+ </plugin-configuration>
+
+ <metric property="number-of-nested-transactions" description="The total number of nested (sub) transactions created."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
+ <metric property="number-of-timed-out-transactions" description="The number of transactions that have rolled back due to timeout."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
+ <metric property="number-of-committed-transactions" description="The number of committed transactions."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
+ <metric property="number-of-transactions" description="The total number of transactions (top-level and nested) created"
+ measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
+ <metric property="number-of-heuristics" description="The number of transactions which have terminated with heuristic outcomes."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
+ <metric property="number-of-aborted-transactions" description="The number of aborted (i.e. rolledback) transactions."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
+ <metric property="number-of-inflight-transactions" description="The number of transactions that have begun but not yet terminated."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="false"/>
+ <metric property="number-of-application-rollbacks" description="The number of transactions that have been rolled back by application request. This includes those that timeout, since the timeout behaviour is considered an attribute of the application configuration."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
+ <metric property="number-of-resource-rollbacks" description="The number of transactions that rolled back due to resource (participant) failure."
+ measurementType="trendsup" defaultInterval="300000" defaultOn="true"/>
+
+ <resource-configuration>
+ <c:simple-property name="relative-to" required="false" type="string" readOnly="false" defaultValue="jboss.server.data.dir"
+ description="References a global path configuration in the domain model, defaulting to the JBoss Application Server data directory (jboss.server.data.dir). The value of the 'path' attribute will treated as relative to this path. Use an empty string to disable the default behavior and force the value of the 'path' attribute to be treated as an absolute path."/>
+ <c:simple-property name="process-id-uuid" required="false" type="boolean" readOnly="false" description="Indicates whether the transaction manager should use a UUID based process id."/>
+ <c:simple-property name="socket-binding" required="false" type="string" readOnly="false" description="Used to reference the correct socket binding to use for the recovery environment."/>
+ <c:simple-property name="jts" required="false" type="boolean" readOnly="false" defaultValue="false" description="If true this enables the Java Transaction Service"/>
+ <c:simple-property name="object-store-path" required="false" type="string" readOnly="false" defaultValue="tx-object-store"
+ description="Denotes a relative or absolute filesystem path denoting where the transaction manager object store should store data. By default the value is treated as relative to the path denoted by the 'relative-to' attribute."/>
+ <c:simple-property name="path" required="false" type="string" readOnly="false" defaultValue="var" description="Denotes a relative or absolute filesystem path denoting where the transaction manager core should store data. By default the value is treated as relative to the path denoted by the 'relative-to' attribute."/>
+ <c:simple-property name="process-id-socket-binding" required="false" type="string" readOnly="false" description="The name of the socket binding configuration to use if the transaction manager should use a socket-based process id. Will be 'undefined' if 'process-id-uuid' is 'true'; otherwise must be set."/>
+ <c:simple-property name="default-timeout" required="false" type="integer" readOnly="false" defaultValue="300" description="The default timeout."/>
+ <c:simple-property name="process-id-socket-max-ports" required="false" type="integer" readOnly="false" defaultValue="10" description="The maximum number of ports to search for an open port if the transaction manager should use a socket-based process id. If the port specified by the socket binding referenced in 'process-id-socket-binding' is occupied, the next higher port will be tried until an open port is found or the number of ports specified by this attribute have been tried. Will be 'undefined' if 'process-id-uuid' is 'true'."/>
+ <c:simple-property name="recovery-listener" required="false" type="boolean" readOnly="false" defaultValue="false" description="Used to specify if the recovery system should listen on a network socket or not."/>
+ <c:simple-property name="status-socket-binding" required="false" type="string" readOnly="false" description="Used to reference the correct socket binding to use for the transaction status manager."/>
+ <c:simple-property name="node-identifier" required="false" type="string" readOnly="false" defaultValue="1" description="Used to set the node identifier on the core environment."/>
+ <c:simple-property name="enable-tsm-status" required="false" type="boolean" readOnly="false" defaultValue="false" description="Whether the transaction status manager (TSM) service, needed for out of process recovery, should be provided or not.."/>
+ <c:simple-property name="object-store-relative-to" required="false" type="string" readOnly="false" defaultValue="jboss.server.data.dir"
+ description="References a global path configuration in the domain model, defaulting to the JBoss Application Server data directory (jboss.server.data.dir). The value of the 'path' attribute will treated as relative to this path. Use an empty string to disable the default behavior and force the value of the 'path' attribute to be treated as an absolute path."/>
+ <c:simple-property name="enable-statistics" required="false" type="boolean" readOnly="false" defaultValue="false" description="Whether statistics should be enabled."/>
+ </resource-configuration>
+
+ </service>
<service name="Network Interface"
discovery="SubsystemDiscovery"
@@ -2498,16 +2515,16 @@ working area for individual server instances</li></ul>"/>
</plugin-configuration>
</service>
+
<service name="SocketBindingGroup"
discovery="SubsystemDiscovery"
- class="SocketBindingGroupComponent"
- >
+ class="SocketBindingGroupComponent">
+
<runs-inside>
<parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
<parent-resource-type name="JBossAS7 Host Controller" plugin="jboss-as-7"/>
</runs-inside>
-
<plugin-configuration>
<c:simple-property name="path" readOnly="true" default="socket-binding-group"/>
</plugin-configuration>
@@ -2897,8 +2914,16 @@ working area for individual server instances</li></ul>"/>
<c:simple-property name="path" default="subsystem=cmp" readOnly="true"/>
</plugin-configuration>
- <resource-configuration>
- <c:group name="child:hilo-keygenerator=hilo-keygenerator" displayName="HiLo based key generators.">
+ <service name="HiloKeygenerator"
+ 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"/>
@@ -2909,9 +2934,35 @@ working area for individual server instances</li></ul>"/>
<c:simple-property name="sequence-column" required="false" type="string" readOnly="true" description="The sequence column name"/>
<c:simple-property name="sequence-name" required="false" type="string" readOnly="true" description="The name of the sequence"/>
<c:simple-property name="table-name" required="false" type="string" readOnly="true" description="The table name"/>
- </c:group>
- </resource-configuration>
+ </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="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="subsystem=ee" 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." >
+ <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>
</plugin>
12 years, 1 month
[rhq] 3 commits - modules/core modules/plugins
by ips
modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java | 4
modules/plugins/jboss-as-7/pom.xml | 56 +++++++++-
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java | 53 ++++-----
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java | 11 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java | 26 ++--
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java | 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java | 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java | 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HornetQComponent.java | 6 -
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java | 8 -
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java | 3
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java | 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Address.java | 2
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 8 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/XmlFileReadingTest.java | 4
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java | 8 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java | 10 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java | 4
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java | 12 +-
modules/plugins/platform/src/main/java/org/rhq/plugins/platform/LinuxPlatformComponent.java | 51 +++++----
20 files changed, 166 insertions(+), 112 deletions(-)
New commits:
commit 60eff4ace2f42790a3edceb22db6b4e0986e26b9
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 10:27:52 2012 -0400
make sure itests run in desired order; use exec plugin, rather than arquillian plugin, in pom to start as7 standalone instance; various minor tweaks; turn down some logging to make log less cluttered
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 2c6a98e..6aa58df 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -297,9 +297,9 @@
</execution>
</executions>
</plugin>
-
+<!--
<plugin>
- <!-- use the arquillian plugin to start/stop the standalone server -->
+ <!- - use the arquillian plugin to start/stop the standalone server - ->
<groupId>org.jboss.arquillian.maven</groupId>
<artifactId>arquillian-maven-plugin</artifactId>
<version>1.0.0.Alpha2</version>
@@ -343,15 +343,63 @@
</dependencies>
</plugin>
-
+-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1.jbossorg-3</version>
<executions>
+
+ <execution>
+ <id>start-as7-standalone</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <background>true</background>
+ <!-- test blocks until the port at backgroundPollingAddress is available (waiting for starting) -->
+ <!-- when maven jvm exits, this plugin will kill the running servers -->
+ <backgroundPollingAddress>${jboss.standalone.bindAddress}:${jboss.standalone.nativeManagementPort}
+ </backgroundPollingAddress>
+ <executable>${java.home}/bin/java</executable>
+ <arguments>
+ <!-- Process Controller Java options -->
+ <argument>-D[Standalone]</argument>
+ <argument>-server</argument>
+ <argument>-XX:+UseCompressedOops</argument>
+ <argument>-XX:+TieredCompilation</argument>
+ <argument>-Xms64m</argument>
+ <argument>-Xmx512m</argument>
+ <argument>-XX:MaxPermSize=256m</argument>
+ <argument>-Djava.net.preferIPv4Stack=true</argument>
+ <argument>-Dorg.jboss.resolver.warning=true</argument>
+ <argument>-Dsun.rmi.dgc.client.gcInterval=3600000</argument>
+ <argument>-Dsun.rmi.dgc.server.gcInterval=3600000</argument>
+ <argument>-Djboss.modules.system.pkgs=org.jboss.byteman</argument>
+ <argument>-Djava.awt.headless=true</argument>
+ <argument>-Djboss.server.default.config=standalone.xml</argument>
+ <argument>-Dorg.jboss.boot.log.file=${jboss7.home}/standalone/log/boot.log</argument>
+ <argument>-Dlogging.configuration=file:${jboss7.home}/standalone/configuration/logging.properties</argument>
+ <argument>-jar</argument>
+ <argument>${jboss7.home}/jboss-modules.jar</argument>
+ <argument>-mp</argument>
+ <argument>${jboss7.home}/modules</argument>
+ <argument>-jaxpmodule</argument>
+ <argument>javax.xml.jaxp-provider</argument>
+ <argument>org.jboss.as.standalone</argument>
+ <argument>-Djboss.home.dir=${jboss7.home}</argument>
+ <argument>-Djboss.bind.address.management=${jboss.standalone.bindAddress}</argument>
+ <argument>-Djboss.bind.address=${jboss.standalone.bindAddress}</argument>
+ <argument>-Djboss.bind.address.unsecure=${jboss.standalone.bindAddress}</argument>
+ <argument>-Djboss.socket.binding.port-offset=${jboss.standalone.portOffset}</argument>
+ </arguments>
+ </configuration>
+ </execution>
+
<execution>
- <id>start-jboss7-host-controller</id>
+ <id>start-as7-domain</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
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 5c1356a..39c3bd9 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
@@ -38,6 +38,7 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.util.stream.StreamUtil;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.Result;
@@ -114,7 +115,7 @@ public class ASConnection {
* @see #executeComplex(org.rhq.modules.plugins.jbossas7.json.Operation)
*/
public JsonNode executeRaw(Operation operation) {
- return executeRaw(operation, 10);
+ return executeRaw(operation, 20);
}
/**
@@ -169,8 +170,8 @@ public class ASConnection {
}
InputStream inputStream;
- BufferedReader br = null;
- InputStream es = null;
+ BufferedReader inputReader = null;
+ InputStream errorStream = null;
try {
//add additional request property to include-defaults=true to all requests.
//if it's already set we leave it alone and assume that Operation creator is taking over control.
@@ -215,17 +216,13 @@ public class ASConnection {
}
if (inputStream != null) {
- br = new BufferedReader(new InputStreamReader(inputStream));
- String line;
- StringBuilder builder = new StringBuilder();
- while ((line = br.readLine()) != null) {
- builder.append(line);
- }
+ inputReader = new BufferedReader(new InputStreamReader(inputStream));
+ String responseBody = StreamUtil.slurp(inputReader);
String outcome;
JsonNode operationResult;
- if (builder.length() > 0) {
- outcome = builder.toString();
+ if (responseBody.length() > 0) {
+ outcome = responseBody;
operationResult = mapper.readTree(outcome);
if (verbose) {
ObjectMapper om2 = new ObjectMapper();
@@ -240,26 +237,27 @@ public class ASConnection {
noResult.setOutcome("failure");
operationResult = mapper.valueToTree(noResult);
}
+
return operationResult;
} else {
//if not properly authorized sends plugin exception for visual indicator in the ui.
if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED
|| responseCode == HttpURLConnection.HTTP_BAD_METHOD) {
if (log.isDebugEnabled()) {
- log.debug("[" + url + "] Response was empty and response code was " + responseCode + " "
+ log.debug("Response to " + operation + " was empty and response code was " + responseCode + " "
+ conn.getResponseMessage() + ".");
}
throw new InvalidPluginConfigurationException(
"Credentials for plugin to connect to AS7 management interface are invalid. Update Connection Settings with valid credentials.");
} else {
- log.error("[" + url + "] Response was empty and response code was " + responseCode + " "
- + conn.getResponseMessage() + ".");
+ log.error("Response to " + operation + " was empty and response code was " + responseCode + " ("
+ + conn.getResponseMessage() + ").");
}
}
} catch (IllegalArgumentException iae) {
- log.error("Illegal argument " + iae + "\n\t for input " + operation);
+ log.error("Illegal argument for input " + operation + ": " + iae.getMessage());
} catch (SocketTimeoutException ste) {
- log.error("Request to AS timed out " + ste.getMessage());
+ log.error(operation + " timed out: " + ste.getMessage());
conn.disconnect();
Result failure = new Result();
failure.setFailureDescription(ste.getMessage());
@@ -269,20 +267,20 @@ public class ASConnection {
JsonNode ret = mapper.valueToTree(failure);
return ret;
} catch (IOException e) {
- log.error("Failed to get data: " + e.getMessage());
+ log.error("Failed to get data: " + e);
//the following code is in place to help keep-alive http connection re-use to occur.
if (conn != null) {//on error conditions it's still necessary to read the response so JDK knows can reuse
//the http connections behind the scenes.
- es = conn.getErrorStream();
- if (es != null) {
- BufferedReader dr = new BufferedReader(new InputStreamReader(es));
+ errorStream = conn.getErrorStream();
+ if (errorStream != null) {
+ BufferedReader dr = new BufferedReader(new InputStreamReader(errorStream));
String ignore = null;
try {
while ((ignore = dr.readLine()) != null) {
//already reported error. just empty stream.
}
- es.close();
+ errorStream.close();
} catch (IOException e1) {
// ignore
}
@@ -298,20 +296,21 @@ public class ASConnection {
return ret;
} finally {
- if (br != null) {
+ if (inputReader != null) {
try {
- br.close();
+ inputReader.close();
} catch (IOException e) {
- log.error(e.getMessage());
+ log.error("Failed to close HTTP connection input stream: " + e.getMessage());
}
}
- if (es != null) {
+ if (errorStream != null) {
try {
- es.close();
+ errorStream.close();
} catch (IOException e) {
- log.error(e.getMessage());
+ log.error("Failed to close HTTP connection error stream: " + e.getMessage());
}
}
+
long t2 = System.currentTimeMillis();
PluginStats stats = PluginStats.getInstance();
stats.incrementRequestCount();
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
index c4c5c03..c225406 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
@@ -115,8 +115,10 @@ public class ASUploadConnection {
os.flush();
int code = connection.getResponseCode();
- log.info("Response code for file upload: " + code);
- if (code==500)
+ if (code != 200) {
+ log.warn("Response code for file upload: " + code + " " + connection.getResponseMessage());
+ }
+ if (code == 500)
is = connection.getErrorStream();
else
is = connection.getInputStream();
@@ -208,7 +210,6 @@ public class ASUploadConnection {
String reason = reasonNode.getTextValue();
return true;
}
-
} catch (Exception e) {
log.error(e);
return true;
@@ -217,12 +218,12 @@ public class ASUploadConnection {
return false;
}
-
private void closeQuietly(final Closeable closeable) {
if(closeable != null) {
try {
closeable.close();
- } catch (final IOException e) {}
+ } catch (final IOException ignore) {
+ }
}
}
}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
index a1993bc..aaa688a 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
@@ -92,12 +92,12 @@ public abstract class AbstractBaseDiscovery<T extends ResourceComponent<?>> impl
* @see #readStandaloneOrHostXmlFromFile(String) for how to obtain the parsed xml
* @param commandLine Command line arguments of the process to
*/
- protected HostPort getManagementPortFromHostXml(String[] commandLine) {
+ protected HostPort getManagementHostPortFromHostXml(String[] commandLine) {
if (hostXml == null)
throw new IllegalArgumentException(CALL_READ_STANDALONE_OR_HOST_XML_FIRST);
String portString;
- String interfaceExpession;
+ String interfaceExpression;
String socketBindingName;
@@ -106,10 +106,10 @@ public abstract class AbstractBaseDiscovery<T extends ResourceComponent<?>> impl
String portOffset = null;
if (!socketInterface.isEmpty()) {
- interfaceExpession = obtainXmlPropertyViaXPath("//interfaces/interface[@name='" + socketInterface
+ interfaceExpression = obtainXmlPropertyViaXPath("//interfaces/interface[@name='" + socketInterface
+ "']/inet-address/@value");
- if (interfaceExpession.isEmpty()) {
- interfaceExpession = obtainXmlPropertyViaXPath("//interfaces/interface[@name='" + socketInterface
+ if (interfaceExpression.isEmpty()) {
+ interfaceExpression = obtainXmlPropertyViaXPath("//interfaces/interface[@name='" + socketInterface
+ "']/loopback-address/@value");
}
portString = obtainXmlPropertyViaXPath("//management/management-interfaces/http-interface/socket/@port");
@@ -117,10 +117,10 @@ public abstract class AbstractBaseDiscovery<T extends ResourceComponent<?>> impl
// old AS7.0, early 7.1 style
portString = obtainXmlPropertyViaXPath("//management/management-interfaces/http-interface/@port");
String interfaceName = obtainXmlPropertyViaXPath("//management/management-interfaces/http-interface/@interface");
- interfaceExpession = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ interfaceExpression = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ "']/inet-address/@value");
- if (interfaceExpession.isEmpty()) {
- interfaceExpession = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ if (interfaceExpression.isEmpty()) {
+ interfaceExpression = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ "']/loopback-address/@value");
}
} else {
@@ -136,17 +136,17 @@ public abstract class AbstractBaseDiscovery<T extends ResourceComponent<?>> impl
portOffset = obtainXmlPropertyViaXPath(xpathExpression);
// TODO the next may also be expressed differently
- interfaceExpession = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ interfaceExpression = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ "']/inet-address/@value");
- if (interfaceExpession.isEmpty()) {
- interfaceExpession = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ if (interfaceExpression.isEmpty()) {
+ interfaceExpression = obtainXmlPropertyViaXPath("/server/interfaces/interface[@name='" + interfaceName
+ "']/loopback-address/@value");
}
}
HostPort hp = new HostPort();
- if (!interfaceExpession.isEmpty())
- hp.host = replaceDollarExpression(interfaceExpession, commandLine, "localhost");
+ if (!interfaceExpression.isEmpty())
+ hp.host = replaceDollarExpression(interfaceExpression, commandLine, "localhost");
else
hp.host = "localhost"; // Fallback
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 590da14..cea3ee6 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
@@ -163,7 +163,7 @@ public class BaseComponent<T extends ResourceComponent<?>> implements AS7Compone
String reqName = req.getName();
ComplexRequest request = null;
- Operation op = null;
+ Operation op;
if (reqName.contains(":")) {
request = ComplexRequest.create(reqName);
op = new ReadAttribute(address, request.getProp());
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 2eec0d5..bffac1c 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
@@ -116,7 +116,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
fillUserPassFromFile(pluginConfig, getMode(), baseDir);
File logFile = getLogFile(getLogDir(process, baseDir));
initLogEventSourcesConfigProp(logFile.getPath(), pluginConfig);
- HostPort managementHostPort = getManagementPortFromHostXml(commandLine);
+ HostPort managementHostPort = getManagementHostPortFromHostXml(commandLine);
pluginConfig.put(new PropertySimple("hostname", managementHostPort.host));
pluginConfig.put(new PropertySimple("port", managementHostPort.port));
pluginConfig.put(new PropertySimple("realm", getManagementSecurityRealmFromHostXml()));
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 20e5518..79fc444 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
@@ -357,8 +357,8 @@ public class BaseServerComponent<T extends ResourceComponent<?>> extends BaseCom
Result res = getASConnection().execute(op);
if (res.isSuccess()) {
- Long startTime= (Long) res.getResult();
- MeasurementDataTrait data = new MeasurementDataTrait(request,new Date(startTime).toString());
+ Long startTime = (Long) res.getResult();
+ MeasurementDataTrait data = new MeasurementDataTrait(request, new Date(startTime).toString());
report.addData(data);
}
}
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 c578607..d07ebeb 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
@@ -40,10 +40,8 @@ public class HornetQComponent extends BaseComponent {
targetAddress.add(targetType.as7name,resourceName);
List<String> entries;
- Operation op;
-
Result res;
- op = new Operation("read-operation-description",targetAddress);
+ Operation op = new Operation("read-operation-description",targetAddress);
op.addAdditionalProperty("name","add");
ComplexResult cres = getASConnection().executeComplex(op);
Map<String,Map<String,Object>> definitions;
@@ -205,7 +203,7 @@ public class HornetQComponent extends BaseComponent {
/**
* Create a Type
* @param descriptorName type name as it is listed in the plugin descriptor
- * @param as7name the type undder which as7 knows it.
+ * @param as7name the type by which as7 knows it.
*/
CreationType(String descriptorName, String as7name) {
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
index a7e684d..140cef6 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
@@ -82,14 +82,16 @@ public class HostControllerDiscovery extends BaseProcessDiscovery {
@Override
protected String buildDefaultResourceName(HostPort hostPort, String configName, JBossProductType productType) {
- String suffix = (hostPort.isLocal) ? "Domain Controller" : "Host Controller";
+ boolean isDomainController = hostPort.isLocal;
+ String suffix = (isDomainController) ? "Domain Controller" : "Host Controller";
return configName + " " + productType.NAME + " " + suffix;
}
@Override
protected String buildDefaultResourceDescription(HostPort hostPort, JBossProductType productType) {
- String prefix = (hostPort.isLocal) ? "Domain controller" : "Host controller";
- String suffix = (hostPort.isLocal) ? "domain" : "host";
+ boolean isDomainController = hostPort.isLocal;
+ String prefix = (isDomainController) ? "Domain controller" : "Host controller";
+ String suffix = (isDomainController) ? "domain" : "host";
return prefix + " for a " + productType.FULL_NAME + " " + suffix;
}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 69bd8d4..0308fd1 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -45,8 +45,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*
* @author Heiko W. Rupp
*/
-public class ManagedASDiscovery extends AbstractBaseDiscovery<HostControllerComponent<?>>
- {
+public class ManagedASDiscovery extends AbstractBaseDiscovery<HostControllerComponent<?>> {
private HostControllerComponent parentComponent;
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
index 2075385..848f0e7 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
@@ -97,8 +97,8 @@ public class StandaloneASDiscovery extends BaseProcessDiscovery {
}
@Override
- protected HostPort getManagementPortFromHostXml(String[] commandLine) {
- HostPort managementPort = super.getManagementPortFromHostXml(commandLine);
+ protected HostPort getManagementHostPortFromHostXml(String[] commandLine) {
+ HostPort managementPort = super.getManagementHostPortFromHostXml(commandLine);
if (!managementPort.withOffset) {
managementPort = checkForSocketBindingOffset(managementPort, commandLine);
}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Address.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Address.java
index 504be88..9fbe31b 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Address.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Address.java
@@ -49,7 +49,7 @@ public class Address {
}
/**
- * Construct an Addres by cloning another
+ * Construct an Address by cloning another
* @param other Address to clone
*/
public Address(Address other) {
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 47ad52d..cec63da 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
@@ -118,8 +118,7 @@
<metric property="_internal:mgmtRequests" category="performance" dataType="measurement" defaultInterval="120000"
displayType="summary" measurementType="trendsup" description="Number of requests sent to the controller"
- displayName="Number of management requests"
- />
+ displayName="Number of management requests"/>
<metric property="_internal:requestTime" category="performance" dataType="measurement" defaultInterval="120000"
displayType="summary" measurementType="trendsup" description="Total time for requests" units="milliseconds"
displayName="Time used for management requests"/>
@@ -424,6 +423,7 @@
</service>
</server>
+
<server name="JBossAS7 Standalone Server"
discovery="StandaloneASDiscovery"
class="StandaloneASComponent"
@@ -495,10 +495,10 @@
displayType="summary" measurementType="dynamic" description="Max time for a request since last metric get" units="milliseconds"
displayName="Maximum request time"/>
- <metric property="server-state" dataType="trait" displayName="Server state" description="Detailed server state"
+ <metric property="server-state" dataType="trait" displayName="Server State" description="Detailed server state"
displayType="summary"/>
&serverKindMetrics;
- <metric property="startTime" dataType="trait" displayName="Start time of the server" defaultOn="true"/>
+ <metric property="startTime" dataType="trait" displayName="Server Start Time" defaultOn="true"/>
<event name="logEntry" description="an entry in a log file"/>
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/XmlFileReadingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/XmlFileReadingTest.java
index 7c7c70f..243574e 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/XmlFileReadingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/XmlFileReadingTest.java
@@ -17,7 +17,7 @@ public class XmlFileReadingTest {
URL url = getClass().getClassLoader().getResource("standalone70.xml");
bd.readStandaloneOrHostXmlFromFile(url.getFile());
- AbstractBaseDiscovery.HostPort hp = bd.getManagementPortFromHostXml(new String[]{});
+ AbstractBaseDiscovery.HostPort hp = bd.getManagementHostPortFromHostXml(new String[]{});
System.out.println(hp);
assert hp.host.equals("127.0.0.70") : "Host is " + hp.host;
assert hp.port==19990 : "Port is " + hp.port;
@@ -29,7 +29,7 @@ public class XmlFileReadingTest {
URL url = getClass().getClassLoader().getResource("standalone71.xml");
bd.readStandaloneOrHostXmlFromFile(url.getFile());
- AbstractBaseDiscovery.HostPort hp = bd.getManagementPortFromHostXml(new String[]{});
+ AbstractBaseDiscovery.HostPort hp = bd.getManagementHostPortFromHostXml(new String[]{});
System.out.println(hp);
// hp : HostPort{host='localhost', port=9990, isLocal=true}
assert hp.host.equals("127.0.0.71") : "Host is " + hp.host;
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 5400e57..a4b6123 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
@@ -57,7 +57,7 @@ public class DomainServerComponentTest extends AbstractServerComponentTest {
return "jboss.domain.portOffset";
}
- @Test(priority = 20, groups = "discovery")
+ @Test(priority = 1000, groups = "discovery")
@RunDiscovery
public void testDomainServerDiscovery() throws Exception {
super.testAutoDiscovery();
@@ -65,20 +65,20 @@ public class DomainServerComponentTest extends AbstractServerComponentTest {
// ******************************* METRICS ******************************* //
@Override
- @Test(priority = 21, enabled = true)
+ @Test(priority = 1001, enabled = true)
public void testMetricsHaveNonNullValues() throws Exception {
super.testMetricsHaveNonNullValues();
}
@Override
- @Test(priority = 21, enabled = true)
+ @Test(priority = 1002, enabled = true)
public void testReleaseVersionTrait() throws Exception {
super.testReleaseVersionTrait();
}
// ******************************* OPERATIONS ******************************* //
// TODO: Re-enable this once "shutdown" operation has been fixed.
- @Test(priority = 22, enabled = false)
+ @Test(priority = 1003, enabled = false)
public void testDomainServerShutdownAndStartOperations() throws Exception {
super.testShutdownAndStartOperations();
}
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
index 0dd5d0c..f7730c8 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
@@ -54,7 +54,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
public static final ResourceType RESOURCE_TYPE = new ResourceType("SocketBindingGroup", PLUGIN_NAME, ResourceCategory.SERVICE, null);
private static final String RESOURCE_KEY = "socket-binding-group=standard-sockets";
- @Test(priority = 10,groups = "discovery")
+ @Test(priority = 1010,groups = "discovery")
@RunDiscovery(discoverServices = true, discoverServers = true)
public void runDiscovery() throws Exception {
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
@@ -68,13 +68,13 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
}
- @Test(priority = 11)
+ @Test(priority = 1011)
public void loadBindings() throws Exception {
loadConfig();
}
- @Test(priority = 11)
+ @Test(priority = 1011)
public void addBinding() throws Exception {
Configuration configuration = loadConfig();
@@ -104,7 +104,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ (count+1);
}
- @Test(priority = 11)
+ @Test(priority = 1011)
public void addModifyBinding() throws Exception {
Configuration configuration = loadConfig();
@@ -146,7 +146,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
}
- @Test(priority = 11)
+ @Test(priority = 1011)
public void addRemoveBinding() throws Exception {
Configuration configuration = loadConfig();
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
index 99f8347..279efdf 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
@@ -56,13 +56,13 @@ public class SocketBindingTest extends AbstractJBossAS7PluginTest {
private static final String RESOURCE_KEY = "socket-binding-group=standard-sockets";
@Test(priority = 10,groups = "discovery")
- @RunDiscovery(discoverServices = true, discoverServers = true) public void doSomeDiscovery() throws Exception {
+ @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)
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 a221a27..9bd1d56 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
@@ -64,7 +64,7 @@ public class StandaloneServerComponentTest extends AbstractServerComponentTest {
return "jboss.standalone.portOffset";
}
- @Test(priority = 10, groups = "discovery")
+ @Test(priority = 1, groups = "discovery")
@RunDiscovery
public void testStandaloneServerDiscovery() throws Exception {
super.testAutoDiscovery();
@@ -72,31 +72,31 @@ public class StandaloneServerComponentTest extends AbstractServerComponentTest {
// ******************************* METRICS ******************************* //
@Override
- @Test(priority = 11, enabled = true)
+ @Test(priority = 2, enabled = true)
public void testMetricsHaveNonNullValues() throws Exception {
super.testMetricsHaveNonNullValues();
}
@Override
- @Test(priority = 11, enabled = true)
+ @Test(priority = 3, enabled = true)
public void testReleaseVersionTrait() throws Exception {
super.testReleaseVersionTrait();
}
// ******************************* OPERATIONS ******************************* //
- @Test(priority = 12)
+ @Test(priority = 4)
public void testReloadOperation() throws Exception {
invokeOperationAndAssertSuccess(getServerResource(), RELOAD_OPERATION_NAME, null);
}
// TODO: Re-enable this once "shutdown" operation has been fixed.
- @Test(priority = 13, enabled = false)
+ @Test(priority = 5, enabled = false)
public void testStandaloneServerShutdownAndStartOperations() throws Exception {
super.testShutdownAndStartOperations();
}
// TODO: Re-enable once fixed.
- @Test(priority = 13, dependsOnMethods = "testStandaloneServerShutdownAndStartOperations", enabled = false)
+ @Test(priority = 5, dependsOnMethods = "testStandaloneServerShutdownAndStartOperations", enabled = false)
public void testRestartOperation() throws Exception {
AvailabilityType avail = getAvailability(getServerResource());
assertEquals(avail, AvailabilityType.UP);
commit 5ed1b78e4863ef169825f18c2562297831d2d7f1
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 09:51:54 2012 -0400
use longs, not ints, for timeout vars
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 8a28883..05e1578 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
@@ -151,7 +151,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
protected AvailabilityType getAvailability(Resource resource)
throws PluginContainerException {
ResourceContainer resourceContainer = this.pluginContainer.getInventoryManager().getResourceContainer(resource);
- int timeoutMillis = 5000;
+ long timeoutMillis = 5000;
AvailabilityFacet availFacet = resourceContainer.createResourceComponentProxy(AvailabilityFacet.class,
FacetLockType.READ, timeoutMillis, false, false);
AvailabilityType avail;
@@ -292,7 +292,7 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
+ "] is defined for ResourceType {" + resourceType.getPlugin() + "}" + resourceType.getName() + ".");
ResourceContainer resourceContainer = this.pluginContainer.getInventoryManager().getResourceContainer(resource);
- int timeoutMillis = 7000;
+ long timeoutMillis = 5000;
MeasurementFacet measurementFacet = resourceContainer.createResourceComponentProxy(MeasurementFacet.class,
FacetLockType.READ, timeoutMillis, false, false);
MeasurementReport report = new MeasurementReport();
commit 8281cfec83438bad0251a739b106a25d338b0d25
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Mar 29 16:41:34 2012 -0400
don't attempt to do any yum stuff if the internal yum server is disabled
diff --git a/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/LinuxPlatformComponent.java b/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/LinuxPlatformComponent.java
index 38833eb..1f336fa 100644
--- a/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/LinuxPlatformComponent.java
+++ b/modules/plugins/platform/src/main/java/org/rhq/plugins/platform/LinuxPlatformComponent.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
@@ -57,6 +57,7 @@ import org.rhq.plugins.platform.content.yum.YumProxy;
import org.rhq.plugins.platform.content.yum.YumServer;
public class LinuxPlatformComponent extends PosixPlatformComponent implements ContentFacet {
+
// the prefix for all distro trait names
private static final String DISTRO_TRAIT_NAME_PREFIX = "distro.";
@@ -66,15 +67,12 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
private final Log log = LogFactory.getLog(LinuxPlatformComponent.class);
- private ContentContext contentContext;
-
- private YumServer yumServer = new YumServer();
- private YumProxy yumProxy = new YumProxy();
+ private YumServer yumServer;
+ private YumProxy yumProxy;
private boolean enableContentDiscovery = false;
private boolean enableInternalYumServer = false;
-
@Override
public void start(ResourceContext context) {
super.start(context);
@@ -106,17 +104,17 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
startWithContentContext(context.getContentContext());
-
return;
}
@Override
public void stop() {
-
- try {
- yumServer.halt();
- } catch (Exception e) {
- log.warn("Failed to shutdown the yum server", e);
+ if (yumServer != null) {
+ try {
+ yumServer.halt();
+ } catch (Exception e) {
+ log.warn("Failed to shutdown the yum server.", e);
+ }
}
super.stop();
@@ -124,17 +122,18 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
private void startWithContentContext(ContentContext context) {
if (this.enableInternalYumServer) {
+ yumServer = new YumServer();
+ yumProxy = new YumProxy();
+
int port = yumPort();
log.debug("yum port=[" + port + "]");
- this.contentContext = context;
try {
YumContext yumContext = new PluginContext(port, this.resourceContext, context);
yumServer.start(yumContext);
yumProxy.init(this.resourceContext);
-
} catch (Exception e) {
- log.error("Start failed:", e);
+ log.error("Failed to start yum server.", e);
}
} else {
log.info("Internal yum server is disabled.");
@@ -163,6 +162,10 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
}
public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails> packages, ContentServices contentServices) {
+ if (!this.enableInternalYumServer) {
+ throw new UnsupportedOperationException("Internal yum server is disabled - this operation is a no-op.");
+ }
+
try {
DeployPackagesResponse result = new DeployPackagesResponse(ContentResponseResult.SUCCESS);
List<String> pkgs = new ArrayList<String>();
@@ -188,6 +191,10 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
}
public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) {
+ if (!this.enableInternalYumServer) {
+ throw new UnsupportedOperationException("Internal yum server is disabled - this operation is a no-op.");
+ }
+
try {
RemovePackagesResponse result = new RemovePackagesResponse(ContentResponseResult.SUCCESS);
List<String> pkgs = new ArrayList<String>();
@@ -223,14 +230,13 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
@Override
public OperationResult invokeOperation(String name, Configuration parameters) throws Exception {
if ("cleanYumMetadataCache".equals(name)) {
- if (this.yumServer.isStarted()) {
- log.info("Cleaning yum metadata");
- yumServer.cleanMetadata();
- yumProxy.cleanMetadata();
- return new OperationResult();
- } else {
- throw new UnsupportedOperationException("Internal yum server is disabled, this operation is a no-op");
+ if (!this.enableInternalYumServer) {
+ throw new UnsupportedOperationException("Internal yum server is disabled - this operation is a no-op.");
}
+ log.info("Cleaning yum metadata...");
+ yumServer.cleanMetadata();
+ yumProxy.cleanMetadata();
+ return new OperationResult();
}
return super.invokeOperation(name, parameters);
@@ -253,4 +259,5 @@ public class LinuxPlatformComponent extends PosixPlatformComponent implements Co
PropertySimple p = this.resourceContext.getPluginConfiguration().getSimple("yumPort");
return ((p != null) ? p.getIntegerValue() : 9080);
}
+
}
\ No newline at end of file
12 years, 1 month
[rhq] modules/plugins
by Heiko W. Rupp
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java | 6 +++---
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java | 3 +++
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java | 3 +--
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java | 3 +--
4 files changed, 8 insertions(+), 7 deletions(-)
New commits:
commit 5619c878efca96488a615418adda77d016b9a14a
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 30 12:36:11 2012 +0200
config file arguments (option -c to start scripts) must be relative.
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 8557a5d..2eec0d5 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
@@ -76,7 +76,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
// Only barf a stack trace for runtime exceptions.
log.error("Discovery of a " + discoveryContext.getResourceType().getName()
+ " Resource failed for " + processScanResult.getProcessInfo() + ".", e);
- } catch (Exception e) {
+ } catch (Exception e) {
log.error("Discovery of a " + discoveryContext.getResourceType().getName()
+ " Resource failed for " + processScanResult.getProcessInfo() + " - cause: " + e);
}
@@ -85,7 +85,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
return discoveredResources;
}
- protected DiscoveredResourceDetails buildResourceDetails(ResourceDiscoveryContext discoveryContext,
+ protected DiscoveredResourceDetails buildResourceDetails(ResourceDiscoveryContext discoveryContext,
ProcessScanResult psr) throws Exception {
Configuration pluginConfig = discoveryContext.getDefaultPluginConfiguration();
// IF SE, then look at domain/configuration/host.xml <management interface="default" port="9990
@@ -172,7 +172,7 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
String cwd = process.getExecutable().getCwd();
baseDir = new File(cwd, baseDirString);
if (!baseDir.exists()) {
- baseDir = new File(homeDir, baseDirString);
+ baseDir = new File(homeDir, baseDirString);
}
}
}
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 6fbfcef..20e5518 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
@@ -281,14 +281,17 @@ public class BaseServerComponent<T extends ResourceComponent<?>> extends BaseCom
String configFile;
BaseProcessDiscovery processDiscovery;
+ String configDir = pluginConfig.getSimpleValue("configDir",null);
switch (mode) {
case STANDALONE:
processDiscovery = new StandaloneASDiscovery();
configFile = pluginConfig.getSimpleValue("config", null);
+ configFile = configDir + File.separator + configFile;
break;
case HOST:
processDiscovery = new HostControllerDiscovery();
configFile = pluginConfig.getSimpleValue("hostConfig", null);
+ configFile = configDir + File.separator + configFile;
break;
default:
throw new IllegalArgumentException("Unsupported mode: " + mode);
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
index 225468f..a7e684d 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerDiscovery.java
@@ -101,8 +101,7 @@ public class HostControllerDiscovery extends BaseProcessDiscovery {
Configuration pluginConfig = details.getPluginConfiguration();
String domainConfig = getServerConfigFromCommandLine(psr.getProcessInfo().getCommandLine(), getMode());
pluginConfig.put(new PropertySimple("domainConfig", domainConfig));
- String configDirString = pluginConfig.getSimpleValue("configDir", null);
- pluginConfig.put(new PropertySimple("hostConfig", getHostXmlFile(process, new File(configDirString))));
+ pluginConfig.put(new PropertySimple("hostConfig", getHostXmlFileName(process)));
return details;
}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
index 4a80c60..2075385 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
@@ -111,8 +111,7 @@ public class StandaloneASDiscovery extends BaseProcessDiscovery {
DiscoveredResourceDetails details = super.buildResourceDetails(discoveryContext, psr);
ProcessInfo process = psr.getProcessInfo();
Configuration pluginConfig = details.getPluginConfiguration();
- String configDirString = pluginConfig.getSimpleValue("configDir", null);
- pluginConfig.put(new PropertySimple("config", getHostXmlFile(process, new File(configDirString))));
+ pluginConfig.put(new PropertySimple("config", getHostXmlFileName(process)));
return details;
}
12 years, 1 month
[rhq] modules/plugins
by Heiko W. Rupp
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java | 17 +++++-----
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java | 2 -
2 files changed, 11 insertions(+), 8 deletions(-)
New commits:
commit 925c404c21caef9b7ace944cbf4966198fae2607
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 30 09:41:28 2012 +0200
Try to better see why this is failing.
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
index f34f674..0dd5d0c 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
@@ -78,6 +78,10 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
public void addBinding() throws Exception {
Configuration configuration = loadConfig();
+ PropertyList pl = (PropertyList) configuration.get("*");
+ int count = pl.getList().size();
+
+ // Now add a binding
PropertyMap map = new PropertyMap("binding");
PropertySimple ps = new PropertySimple("name","bla");
map.put(ps);
@@ -87,18 +91,17 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
map.put(ps);
ps = new PropertySimple("multicast-port:expr","${foo.bar.baz:12346}");
map.put(ps);
- PropertyList pl = (PropertyList) configuration.get("*");
- int count = pl.getList().size();
pl.add(map);
ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
+ assert response.getConfigurationUpdateId() == 1 : "Expected update id 1, but got " + response.getConfigurationUpdateId();
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ (count+1);
}
@Test(priority = 11)
@@ -117,7 +120,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
PropertyList pl = (PropertyList) configuration.get("*");
pl.add(map);
- ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
+ ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(2,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
@@ -136,7 +139,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
assert map != null : "Did not find 'bla2' in the returned config";
map.put(new PropertySimple("port:expr",22355));
map.put(new PropertySimple("fixed-port",true));
- request = new ConfigurationUpdateRequest(2,configuration,getResource().getId());
+ request = new ConfigurationUpdateRequest(3,configuration,getResource().getId());
response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config update resulted in this error: " + response.getErrorMessage();
@@ -160,7 +163,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
int count = pl.getList().size();
pl.add(map);
- ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(1,configuration,getResource().getId());
+ ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(4,configuration,getResource().getId());
ConfigurationUpdateResponse response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Config add resulted in this error: " + response.getErrorMessage();
@@ -180,7 +183,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
}
assert pl.getList().size() == count;
- request = new ConfigurationUpdateRequest(3,configuration,getResource().getId());
+ request = new ConfigurationUpdateRequest(5,configuration,getResource().getId());
response = pluginContainer.getConfigurationManager().executeUpdateResourceConfigurationImmediately(request);
assert response!=null;
assert response.getErrorMessage()==null: "Property removal resulted in this error: " + response.getErrorMessage();
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
index df9eb7a..99f8347 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
@@ -95,7 +95,7 @@ public class SocketBindingTest extends AbstractJBossAS7PluginTest {
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ (count+1);
}
@Test(priority = 11)
12 years, 1 month
[rhq] Branch 'bug/759615' - etc/m2 modules/core modules/enterprise
by mazz
etc/m2/settings.xml | 4
modules/core/dbutils/src/main/java/org/rhq/core/db/H2DatabaseType.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/server/EntitySerializer.java | 296 +++++
modules/core/domain/src/main/java/org/rhq/core/domain/server/ExternalizableStrategy.java | 64 +
modules/core/domain/src/main/java/org/rhq/core/domain/server/H2CustomDialect.java | 45
modules/core/domain/src/main/java/org/rhq/core/domain/server/PersistenceUtility.java | 563 ++++++++++
modules/core/domain/src/main/java/org/rhq/core/domain/util/PageControl.java | 2
modules/core/domain/src/main/java/org/rhq/core/server/EntitySerializer.java | 296 -----
modules/core/domain/src/main/java/org/rhq/core/server/ExternalizableStrategy.java | 64 -
modules/core/domain/src/main/java/org/rhq/core/server/H2CustomDialect.java | 45
modules/core/domain/src/main/java/org/rhq/core/server/PersistenceUtility.java | 563 ----------
modules/core/domain/src/test/java/org/rhq/core/domain/test/QueryAllTest.java | 2
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/ExternalizableStrategyCommandPreprocessor.java | 2
modules/enterprise/gui/coregui/src/main/resources/org/rhq/core/RHQDomain.gwt.xml | 1
modules/enterprise/gui/installer-war/src/main/java/org/rhq/enterprise/installer/ConfigurationBean.java | 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/ExternalizableStrategyCommandListener.java | 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java | 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/util/StatisticsUtility.java | 2
modules/enterprise/gui/portal-war/src/main/webapp/admin/test/browser.jsp | 2
modules/enterprise/gui/portal-war/src/main/webapp/admin/test/control.jsp | 2
modules/enterprise/gui/portal-war/src/main/webapp/admin/test/hibernate.jsp | 2
modules/enterprise/remoting/client-api/src/main/java/org/rhq/enterprise/clientapi/RemoteClientProxy.java | 2
modules/enterprise/server/itests/src/test/java/org/rhq/enterprise/server/drift/ManageSnapshotsTest.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/agentclient/impl/AgentClientImpl.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java | 2
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/alert/AlertManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/AffinityGroupManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/PartitionEventManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/AdvisoryManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentSourceManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/CallTimeDataManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementProblemManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteSafeInvocationHandler.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteWsInvocationHandler.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/LdapGroupManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/AlertSubsystemManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/ConfigurationSubsystemManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/OperationHistorySubsystemManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/CoreTestBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/DiscoveryTestBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernatePerformanceMonitor.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernateStatisticsStopWatch.java | 2
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 2
65 files changed, 1026 insertions(+), 1025 deletions(-)
New commits:
commit a6ae8342006320402958a4fcf6dedc1a4ea217fc
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Mar 29 17:50:17 2012 -0400
[BZ 759615] refactor the domain jar's org.rhq.core.server package name to org.rhq.core.domain.server
diff --git a/etc/m2/settings.xml b/etc/m2/settings.xml
index 1bbc1e2..af1441e 100644
--- a/etc/m2/settings.xml
+++ b/etc/m2/settings.xml
@@ -154,7 +154,7 @@
<rhq.test.ds.port>9092</rhq.test.ds.port>
<rhq.test.ds.db-name>rhq</rhq.test.ds.db-name>
<!-- This custom dialect is required for proper operation using H2, see class JavaDoc for more info -->
- <rhq.test.ds.hibernate-dialect>org.rhq.core.server.H2CustomDialect</rhq.test.ds.hibernate-dialect>
+ <rhq.test.ds.hibernate-dialect>org.rhq.core.domain.server.H2CustomDialect</rhq.test.ds.hibernate-dialect>
<!-- quartz properties -->
<rhq.test.quartz.driverDelegateClass>org.quartz.impl.jdbcjobstore.StdJDBCDelegate</rhq.test.quartz.driverDelegateClass>
<rhq.test.quartz.selectWithLockSQL>SELECT * FROM {0}LOCKS ROWLOCK WHERE LOCK_NAME = ? FOR UPDATE</rhq.test.quartz.selectWithLockSQL>
@@ -170,7 +170,7 @@
<rhq.dev.ds.port>9092</rhq.dev.ds.port>
<rhq.dev.ds.db-name>rhq</rhq.dev.ds.db-name>
<!-- This custom dialect is required for proper operation using H2, see class JavaDoc for more info -->
- <rhq.dev.ds.hibernate-dialect>org.rhq.core.server.H2CustomDialect</rhq.dev.ds.hibernate-dialect>
+ <rhq.dev.ds.hibernate-dialect>org.rhq.core.domain.server.H2CustomDialect</rhq.dev.ds.hibernate-dialect>
<!-- quartz properties -->
<rhq.dev.quartz.driverDelegateClass>org.quartz.impl.jdbcjobstore.StdJDBCDelegate</rhq.dev.quartz.driverDelegateClass>
<rhq.dev.quartz.selectWithLockSQL>SELECT * FROM {0}LOCKS ROWLOCK WHERE LOCK_NAME = ? FOR UPDATE</rhq.dev.quartz.selectWithLockSQL>
diff --git a/modules/core/dbutils/src/main/java/org/rhq/core/db/H2DatabaseType.java b/modules/core/dbutils/src/main/java/org/rhq/core/db/H2DatabaseType.java
index e7258bd..05f8de4 100644
--- a/modules/core/dbutils/src/main/java/org/rhq/core/db/H2DatabaseType.java
+++ b/modules/core/dbutils/src/main/java/org/rhq/core/db/H2DatabaseType.java
@@ -46,7 +46,7 @@ public abstract class H2DatabaseType extends DatabaseType {
}
public String getHibernateDialect() {
- return "org.rhq.core.server.H2CustomDialect";
+ return "org.rhq.core.domain.server.H2CustomDialect";
}
/**
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/server/EntitySerializer.java b/modules/core/domain/src/main/java/org/rhq/core/domain/server/EntitySerializer.java
new file mode 100644
index 0000000..5c05c57
--- /dev/null
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/server/EntitySerializer.java
@@ -0,0 +1,296 @@
+/*
+ * 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.domain.server;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Id;
+
+import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.server.ExternalizableStrategy.Subsystem;
+
+/**
+ * A utility specifically tailored to entities which will iterate over its persistence fields with a consistent
+ * ordering for serialization and deserialization. If this class is passed a non-entity object, it will ignore
+ * field-level annotations and just serialize and deserialize all fields in that object.
+ *
+ * @author Joseph Marques
+ */
+public class EntitySerializer {
+ private static Set<Class<? extends Annotation>> PERSISTENCE_ANNOTATIONS = new HashSet<Class<? extends Annotation>>();
+ static {
+ PERSISTENCE_ANNOTATIONS.add(Id.class);
+ PERSISTENCE_ANNOTATIONS.add(Column.class);
+ PERSISTENCE_ANNOTATIONS.add(ManyToOne.class);
+ PERSISTENCE_ANNOTATIONS.add(OneToMany.class);
+ PERSISTENCE_ANNOTATIONS.add(ManyToMany.class);
+ }
+
+ private static Set<Class<?>> BASIC_TYPES = new HashSet<Class<?>>();
+ static {
+ BASIC_TYPES.add(Byte.TYPE);
+ BASIC_TYPES.add(Short.TYPE);
+ BASIC_TYPES.add(Integer.TYPE);
+ BASIC_TYPES.add(Long.TYPE);
+ BASIC_TYPES.add(Float.TYPE);
+ BASIC_TYPES.add(Double.TYPE);
+ BASIC_TYPES.add(Boolean.TYPE);
+ }
+
+ private static Comparator<Field> fieldComparator = new Comparator<Field>() {
+ public int compare(Field first, Field second) {
+ return first.getName().compareTo(second.getName());
+ }
+ };
+
+ private static Field[] getFields(Object object) {
+ Class<?> objectClass = object.getClass();
+ Entity entityAnnotation = objectClass.getAnnotation(Entity.class);
+
+ List<Field> serializableFields;
+ if (entityAnnotation == null) {
+ serializableFields = getNonEntityFieldList(object);
+ } else {
+ serializableFields = getEntityFieldList(object);
+ }
+
+ Collections.sort(serializableFields, fieldComparator);
+
+ Field[] results = serializableFields.toArray(new Field[serializableFields.size()]);
+ return results;
+ }
+
+ private static List<Field> getNonEntityFieldList(Object object) {
+ Class<?> objectClass = object.getClass();
+ Field[] fields = objectClass.getDeclaredFields();
+ List<Field> serializableFields = new ArrayList<Field>();
+
+ for (Field field : fields) {
+ serializableFields.add(field);
+ field.setAccessible(true);
+ }
+
+ return serializableFields;
+ }
+
+ private static List<Field> getEntityFieldList(Object entity) {
+ Class<?> entityClass = entity.getClass();
+ Entity entityAnnotation = entityClass.getAnnotation(Entity.class);
+ if (entityAnnotation == null) {
+ throw new IllegalArgumentException("EntitySerializer only introspects objects annotated with @Entity ");
+ }
+
+ List<Field> serializableFields = new ArrayList<Field>();
+
+ while (entityClass != null) {
+
+ Field[] fields = entityClass.getDeclaredFields();
+ for (Field field : fields) {
+ Annotation[] fieldAnnotations = field.getAnnotations();
+ for (Annotation fieldAnnotation : fieldAnnotations) {
+ if (PERSISTENCE_ANNOTATIONS.contains(fieldAnnotation.annotationType())) {
+ serializableFields.add(field);
+ field.setAccessible(true);
+ break;
+ }
+ }
+ }
+ entityClass = entityClass.getSuperclass();
+ }
+
+ return serializableFields;
+ }
+
+ public static void writeExternalRemote(Object object, ObjectOutput out) throws IOException {
+ Field[] fields = getFields(object);
+ for (Field field : fields) {
+ //System.out.println("Serializing " + field.getName() + "...");
+ try {
+ Class<?> type = field.getType();
+ Object value = field.get(object);
+
+ if (BASIC_TYPES.contains(type)) {
+ if (type.equals(Byte.TYPE)) {
+ out.writeByte((Byte) value);
+ } else if (type.equals(Short.TYPE)) {
+ out.writeShort((Short) value);
+ } else if (type.equals(Integer.TYPE)) {
+ out.writeInt((Integer) value);
+ } else if (type.equals(Long.TYPE)) {
+ out.writeLong((Long) value);
+ } else if (type.equals(Float.TYPE)) {
+ out.writeFloat((Float) value);
+ } else if (type.equals(Double.TYPE)) {
+ out.writeDouble((Double) value);
+ } else if (type.equals(Boolean.TYPE)) {
+ out.writeBoolean((Boolean) value);
+ } else {
+ throw new IllegalStateException(
+ "BASIC_TYPES contains an entry that doesn't have serialization support: " + type);
+ }
+ continue;
+ }
+
+ // either a string, an enum, numeric wrapper, collection, or some other object
+ out.writeObject(value);
+ } catch (IllegalAccessException iae) {
+ throw new IllegalStateException("Could not access field '" + field.getName() + "' for serialization");
+ }
+ }
+ }
+
+ public static void readExternalRemote(Object object, ObjectInput in) throws IOException, ClassNotFoundException {
+ Field[] fields = getFields(object);
+ for (Field field : fields) {
+ //System.out.println("Deserializing " + field.getName() + "...");
+ try {
+ Class<?> type = field.getType();
+
+ if (BASIC_TYPES.contains(type)) {
+ if (type.equals(Byte.TYPE)) {
+ field.setByte(object, in.readByte());
+ } else if (type.equals(Short.TYPE)) {
+ field.setShort(object, in.readShort());
+ } else if (type.equals(Integer.TYPE)) {
+ field.setInt(object, in.readInt());
+ } else if (type.equals(Long.TYPE)) {
+ field.setLong(object, in.readLong());
+ } else if (type.equals(Float.TYPE)) {
+ field.setFloat(object, in.readFloat());
+ } else if (type.equals(Double.TYPE)) {
+ field.setDouble(object, in.readDouble());
+ } else if (type.equals(Boolean.TYPE)) {
+ field.setBoolean(object, in.readBoolean());
+ } else {
+ throw new IllegalStateException(
+ "BASIC_TYPES contains an entry that doesn't have deserialization support: " + type);
+ }
+ continue;
+ }
+
+ // either a string, an enum, numeric wrapper, collection, or some other object
+ field.set(object, in.readObject());
+ } catch (IllegalAccessException iae) {
+ throw new IllegalStateException("Could not access field '" + field.getName() + "' for deserialization");
+ }
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ ExternalizableStrategy.setStrategy(Subsystem.REFLECTIVE_SERIALIZATION);
+
+ // create objects
+ Agent writeAgent = new Agent("reflectiveAgent", "reflectiveAddress", 0, "reflectiveEndpoint", "reflectiveToken");
+
+ ResourceType writeResourceType = new ResourceType();
+ writeResourceType.setName("reflectiveType");
+ writeResourceType.setPlugin("reflectivePlugin");
+ writeResourceType.setId(7);
+
+ Resource writeParentResource = new Resource();
+ writeParentResource.setId(11);
+ writeParentResource.setName("reflectiveParentResource");
+ writeParentResource.setResourceKey("reflectiveParentKey");
+
+ Resource writeResource = new Resource();
+ writeResource.setId(42);
+ writeResource.setName("reflectiveResource");
+ writeResource.setResourceKey("reflectiveKey");
+
+ // setup relationships
+ writeResource.setAgent(writeAgent);
+ writeResource.setResourceType(writeResourceType);
+ writeResource.setParentResource(writeParentResource);
+
+ System.out.println("BEFORE");
+ System.out.println(writeResource.toString());
+ System.out.println("BEFORE");
+
+ String tempDir = System.getProperty("java.io.tmpdir");
+ File tempFile = new File(tempDir, "entitySerializerTest.txt");
+
+ FileOutputStream fos = new FileOutputStream(tempFile);
+ try {
+ ObjectOutput output = new ObjectOutputStream(fos);
+ try {
+ writeExternalRemote(writeResource, output);
+ } finally {
+ output.close();
+ }
+ } finally {
+ fos.close();
+ }
+
+ Resource readResource = new Resource();
+ FileInputStream fis = new FileInputStream(tempFile);
+ try {
+ ObjectInput ois = new ObjectInputStream(fis);
+ try {
+ readExternalRemote(readResource, ois);
+ } finally {
+ ois.close();
+ }
+ } finally {
+ fis.close();
+ }
+
+ // quick verification
+ System.out.println("AFTER");
+ System.out.println(readResource.toString());
+ System.out.println("AFTER");
+
+ // deeper verification
+ boolean equalsResource = writeResource.equals(readResource);
+ boolean equalsParentResource = writeParentResource.equals(readResource.getParentResource());
+ boolean equalsResourceType = writeResourceType.equals(readResource.getResourceType());
+ boolean equalsAgent = writeAgent.equals(readResource.getAgent());
+
+ System.out.println("equalsResource: " + equalsResource);
+ System.out.println("equalsParentResource: " + equalsParentResource);
+ System.out.println("equalsResourceType: " + equalsResourceType);
+ System.out.println("equalsAgent: " + equalsAgent);
+ }
+
+}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/server/ExternalizableStrategy.java b/modules/core/domain/src/main/java/org/rhq/core/domain/server/ExternalizableStrategy.java
new file mode 100644
index 0000000..f7ad860
--- /dev/null
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/server/ExternalizableStrategy.java
@@ -0,0 +1,64 @@
+/*
+ * 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.domain.server;
+
+/**
+ * This uses a ThreadLocal to bind an externalization strategy based on the invoking subsystem. In other
+ * words, when we know we're serializing for Server-Agent communication then set to AGENT, when we know we're
+ * serializing for RemoteClient-Server communication set to REMOTEAPI. By keeping this info on the thread
+ * we avoid having to tag all of the relevant objects that will be serialized.
+ *
+ * @author jay shaughnessy
+ */
+public class ExternalizableStrategy {
+
+ public enum Subsystem {
+ AGENT((char) 1), // set bidirectionally for agent<--->server communication
+ REFLECTIVE_SERIALIZATION((char) 3); // set unidirectionally for both CLI-->server and WS-->server communication
+
+ private char id;
+
+ Subsystem(char id) {
+ this.id = id;
+ }
+
+ public char id() {
+ return id;
+ }
+ }
+
+ private static ThreadLocal<Subsystem> strategy = new ThreadLocal<Subsystem>() {
+
+ protected ExternalizableStrategy.Subsystem initialValue() {
+ return Subsystem.AGENT;
+ }
+ };
+
+ public static Subsystem getStrategy() {
+ return strategy.get();
+ }
+
+ public static void setStrategy(Subsystem newStrategy) {
+ strategy.set(newStrategy);
+ }
+}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/server/H2CustomDialect.java b/modules/core/domain/src/main/java/org/rhq/core/domain/server/H2CustomDialect.java
new file mode 100644
index 0000000..cb73aef
--- /dev/null
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/server/H2CustomDialect.java
@@ -0,0 +1,45 @@
+/*
+ * 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.domain.server;
+
+import org.hibernate.dialect.H2Dialect;
+
+/**
+ * This class extends the basic H2Dialect that comes in the
+ * Hibernate core distribution to force it to use sequences
+ * for H2 database.
+ *
+ * @author Joseph Marques
+ */
+public class H2CustomDialect extends H2Dialect {
+
+ @Override
+ public boolean supportsIdentityColumns() {
+ /*
+ * By default, GeneratorType.AUTO strategy will choose IDENTITY if a database supports it.
+ * However, the embedded database was originally written using sequences. Later, SQL Server
+ * support was added which required changing the generation strategy from SEQUENCE to AUTO.
+ * This broke support for the embedded database because the H2Dialect was trying to use
+ * identity data types for key columns, which the H2DatabaseType did not support. This hack
+ * basically tricks Hibernate into believing that H2 doesn't support identity types, which
+ * then forces it to fall back to using the SEQUENCE strategy.
+ */
+ return false;
+ }
+}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/server/PersistenceUtility.java b/modules/core/domain/src/main/java/org/rhq/core/domain/server/PersistenceUtility.java
new file mode 100644
index 0000000..662d97c
--- /dev/null
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/server/PersistenceUtility.java
@@ -0,0 +1,563 @@
+/*
+ * 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.domain.server;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.ejb.EntityManagerImpl;
+import org.hibernate.engine.NamedQueryDefinition;
+import org.hibernate.engine.SessionFactoryImplementor;
+import org.hibernate.jmx.StatisticsService;
+import org.hibernate.stat.Statistics;
+import org.hibernate.type.CustomType;
+import org.hibernate.type.EntityType;
+import org.hibernate.type.PrimitiveType;
+import org.hibernate.type.Type;
+
+import org.rhq.core.domain.util.OrderingField;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.core.domain.util.PageOrdering;
+
+/**
+ * Various persistence utility methods - mostly Hibernate-specific.
+ *
+ * @author Heiko Rupp
+ * @author Joseph Marques
+ * @author Greg Hinkle
+ */
+public class PersistenceUtility {
+ private static final Log LOG = LogFactory.getLog(PersistenceUtility.class);
+
+ private static final Pattern COUNT_QUERY_PATTERN = Pattern.compile("^(\\s*SELECT\\s+)(.*?)(\\s+FROM.*)",
+ Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
+ private static final Pattern COUNT_QUERY_REMOVE_FETCH = Pattern.compile("FETCH", Pattern.CASE_INSENSITIVE
+ | Pattern.MULTILINE | Pattern.DOTALL);
+
+ public static final String HIBERNATE_STATISTICS_MBEAN_OBJECTNAME = "Hibernate:type=statistics,application=RHQ";
+
+ @SuppressWarnings("unchecked")
+ // used in hibernate.jsp
+ public static String getDisplayString(Type hibernateType) {
+ if (hibernateType instanceof EntityType) {
+ return hibernateType.getName() + " (enter integer of ID / primary key field)";
+ } else if (hibernateType instanceof CustomType) {
+ if (Enum.class.isAssignableFrom(hibernateType.getReturnedClass())) {
+ Class<? extends Enum<?>> enumClass = (Class<? extends Enum<?>>) hibernateType.getReturnedClass();
+ StringBuilder result = new StringBuilder();
+ result.append(enumClass.getName());
+ result.append(" (");
+ boolean first = true;
+ for (Enum<?> nextEnum : enumClass.getEnumConstants()) {
+ if (!first) {
+ result.append(" | ");
+ } else {
+ first = false;
+ }
+ result.append(nextEnum.name());
+ }
+ result.append(")");
+ return result.toString();
+ }
+ }
+ return hibernateType == null ? "" : hibernateType.getName();
+ }
+
+ @SuppressWarnings("unchecked")
+ // used in hibernate.jsp
+ public static Object cast(String value, Type hibernateType) {
+ if (hibernateType instanceof PrimitiveType) {
+ Class<?> type = ((PrimitiveType) hibernateType).getPrimitiveClass();
+ if (type.equals(Byte.TYPE)) {
+ return Byte.valueOf(value);
+ } else if (type.equals(Short.TYPE)) {
+ return Short.valueOf(value);
+ } else if (type.equals(Integer.TYPE)) {
+ return Integer.valueOf(value);
+ } else if (type.equals(Long.TYPE)) {
+ return Long.valueOf(value);
+ } else if (type.equals(Float.TYPE)) {
+ return Float.valueOf(value);
+ } else if (type.equals(Double.TYPE)) {
+ return Double.valueOf(value);
+ } else if (type.equals(Boolean.TYPE)) {
+ return Boolean.valueOf(value);
+ }
+ } else if (hibernateType instanceof EntityType) {
+ String entityName = ((EntityType) hibernateType).getAssociatedEntityName();
+ try {
+ Class<?> entityClass = Class.forName(entityName);
+ Object entity = entityClass.newInstance();
+
+ Field primaryKeyField = entityClass.getDeclaredField("id");
+ primaryKeyField.setAccessible(true);
+ primaryKeyField.setInt(entity, Integer.valueOf(value));
+ return entity;
+ } catch (Throwable t) {
+ throw new IllegalArgumentException("Type[" + entityName + "] must have PK field named 'id'");
+ }
+ } else if (hibernateType instanceof CustomType) {
+ if (Enum.class.isAssignableFrom(hibernateType.getReturnedClass())) {
+ Class<? extends Enum<?>> enumClass = hibernateType.getReturnedClass();
+ Enum<?>[] enumValues = enumClass.getEnumConstants();
+ try {
+ int enumOrdinal = Integer.valueOf(value);
+ try {
+ return enumValues[enumOrdinal];
+ } catch (ArrayIndexOutOfBoundsException aioobe) {
+ throw new IllegalArgumentException("There is no " + enumClass.getSimpleName()
+ + " enum with ordinal '" + enumOrdinal + "'");
+ }
+ } catch (NumberFormatException nfe) {
+ String ucaseValue = value.toUpperCase();
+ for (Enum<?> nextEnum : enumValues) {
+ if (nextEnum.name().toUpperCase().equals(ucaseValue)) {
+ return nextEnum;
+ }
+ }
+ throw new IllegalArgumentException("There is no " + enumClass.getSimpleName() + " enum with name '"
+ + value + "'");
+ }
+ }
+ }
+ return value;
+ }
+
+ /**
+ * Used to create queries to use with the {@link org.rhq.core.domain.util.PageControl} objects. The query will already have its sort column
+ * and order appended as well as having its first result and max results set according to the page control data.
+ *
+ * @param entityManager your entity manager
+ * @param queryName name of the query
+ * @param pageControl the controls on the paging and sorting
+ *
+ * @return a preconfigured query for ordered pagination
+ */
+ public static Query createQueryWithOrderBy(EntityManager entityManager, String queryName, PageControl pageControl) {
+ Query query;
+
+ if (pageControl.getPrimarySortColumn() != null) {
+ query = createQueryWithOrderBy(entityManager, queryName, pageControl.getOrderingFieldsAsArray());
+ } else {
+ StackTraceElement caller = new Throwable().fillInStackTrace().getStackTrace()[1];
+ LOG.warn("Queries should really supply default sort columns. Caller did not: " + caller);
+
+ // Use the standard named query if no sorting is specified
+ query = entityManager.createNamedQuery(queryName);
+ }
+
+ setDataPage(query, pageControl);
+
+ return query;
+ }
+
+ /**
+ * Create a query from a named query with a transformed order by clause with multiple new ordery by clauses.
+ *
+ * @param entityManager the entity manager to build the query against
+ * @param queryName the name of the query to transform
+ * @param orderByFields an array of clauses to contribute to the order by
+ *
+ * @return the transformed query
+ */
+ public static Query createQueryWithOrderBy(EntityManager entityManager, String queryName,
+ OrderingField... orderByFields) {
+ NamedQueryDefinition ndc = getNamedQueryDefinition(entityManager, queryName);
+ StringBuilder query = new StringBuilder(ndc.getQueryString());
+ buildOrderBy(query, orderByFields);
+ return entityManager.createQuery(query.toString());
+ }
+
+ private static StringBuilder buildOrderBy(StringBuilder query, OrderingField... orderByFields) {
+ boolean first = true;
+ for (OrderingField orderingField : orderByFields) {
+ if (first) {
+ // TODO GH: We could see if there already is an order by clause and contribute or override it
+ query.append(" ORDER BY ");
+ first = false;
+ } else {
+ query.append(", ");
+ }
+
+ query.append(orderingField.getField()).append(" ").append(orderingField.getOrdering());
+ }
+
+ return query;
+ }
+
+ private static String getOrderByFragment(OrderingField... orderByFields) {
+ boolean first = true;
+ StringBuilder builder = new StringBuilder();
+ for (OrderingField orderingField : orderByFields) {
+ if (first) {
+ builder.append(" ORDER BY ");
+ first = false;
+ } else {
+ builder.append(", ");
+ }
+
+ builder.append(orderingField.getField()).append(" ").append(orderingField.getOrdering());
+ }
+
+ return builder.toString();
+ }
+
+ /**
+ * Builds a count(*) version of the named query so we don't have duplicate all our queries to use two query
+ * pagination model.
+ *
+ * @param em the entity manager to build the query for
+ * @param queryName the NamedQuery to transform
+ *
+ * @return a query that can be bound and executed to get the total count of results
+ */
+ public static Query createCountQuery(EntityManager em, String queryName) {
+ return createCountQuery(em, queryName, "*");
+ }
+
+ /**
+ * Builds a count(*) version of the named query so we don't have duplicate all our queries to use two query
+ * pagination model.
+ *
+ * @param entityManager the entity manager to build the query for
+ * @param queryName the NamedQuery to transform
+ * @param countItem the object or attribute that needs to be counted, when it's ambiguous
+ *
+ * @return a query that can be bound and executed to get the total count of results
+ */
+ public static Query createCountQuery(EntityManager entityManager, String queryName, String countItem) {
+ NamedQueryDefinition namedQueryDefinition = getNamedQueryDefinition(entityManager, queryName);
+ String query = namedQueryDefinition.getQueryString();
+
+ Matcher matcher = COUNT_QUERY_PATTERN.matcher(query);
+ if (!matcher.find()) {
+ throw new RuntimeException("Unable to transform query into count query [" + queryName + " - " + query + "]");
+ }
+
+ String newQuery = matcher.group(1) + "COUNT(" + countItem + ")" + matcher.group(3);
+
+ matcher = COUNT_QUERY_REMOVE_FETCH.matcher(newQuery);
+ if (matcher.find()) {
+ StringBuffer buffer = new StringBuffer();
+ do {
+ matcher.appendReplacement(buffer, "");
+ } while (matcher.find());
+ matcher.appendTail(buffer);
+ newQuery = buffer.toString();
+ }
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Transformed query to count query [" + queryName + "] resulting in [" + newQuery + "]");
+ }
+
+ return entityManager.createQuery(newQuery);
+ }
+
+ public static void setDataPage(Query query, PageControl pageControl) {
+ if (pageControl.getPageSize() > 0) {
+ query.setFirstResult(pageControl.getStartRow());
+ query.setMaxResults(pageControl.getPageSize());
+ }
+ }
+
+ /**
+ * Creates and executes a filter query for a collection relationship. This executes without passing back the query
+ * object because the most common case is to simply paginate for a relationship. Use the createFilter method to
+ * create more generic filters and get access to the hibernate query object for setting parameters etc.
+ *
+ * @param entityManager
+ * @param collection
+ * @param pageControl
+ *
+ * @return the result list of the entities from the filtered relationship
+ */
+ @SuppressWarnings("unchecked")
+ public static PageList createPaginationFilter(EntityManager entityManager, Collection collection,
+ PageControl pageControl) {
+ if (collection == null) {
+ return new PageList(pageControl);
+ }
+
+ String filter = "";
+ if (pageControl.getPrimarySortColumn() != null) {
+ PageOrdering order = (pageControl.getPrimarySortOrder() == null) ? PageOrdering.ASC : pageControl
+ .getPrimarySortOrder();
+ filter = getOrderByFragment(new OrderingField(pageControl.getPrimarySortColumn(), order));
+ }
+
+ org.hibernate.Query query = getHibernateSession(entityManager).createFilter(collection, filter);
+ if (pageControl.getPageSize() > 0) {
+ query.setFirstResult(pageControl.getPageNumber() * pageControl.getPageSize());
+ query.setMaxResults(pageControl.getPageSize());
+ }
+
+ // TODO GH: Always flushing is probably not what we really want here
+ // relationship filters don't seem to cause the proper flush, so manually flush
+ getHibernateSession(entityManager).flush();
+
+ // TODO GH: This can only create unbounded PageLists since I don't know how to do a count query to find the size
+ return new PageList<Object>(query.list(), pageControl);
+ }
+
+ /**
+ * Use this inside subclasses as a convenience method.
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> List<T> findByCriteria(EntityManager entityManager, Class<T> type,
+ org.hibernate.criterion.Criterion... criterion) {
+ // Using Hibernate, more difficult with EntityManager and EJB-QL
+ org.hibernate.Criteria crit = getHibernateSession(entityManager).createCriteria(type);
+ for (org.hibernate.criterion.Criterion c : criterion) {
+ crit.add(c);
+ }
+
+ return crit.list();
+ }
+
+ public static Session getHibernateSession(EntityManager entityManager) {
+ Session session;
+ if (entityManager.getDelegate() instanceof EntityManagerImpl) {
+ EntityManagerImpl entityManagerImpl = (EntityManagerImpl) entityManager.getDelegate();
+ session = entityManagerImpl.getSession();
+ } else {
+ session = (Session) entityManager.getDelegate();
+ }
+
+ return session;
+ }
+
+ /**
+ * Enables the hibernate statistics mbean to provide access to information on the ejb3 persistence tier.
+ *
+ * @param entityManager an inject entity manager whose session factory will be tracked with these statistics
+ * @param server the MBeanServer where the statistics MBean should be registered; if <code>null</code>, the
+ * first one in the list returned by MBeanServerFactory.findMBeanServer(null) is used
+ */
+ public static void enableHibernateStatistics(EntityManager entityManager, MBeanServer server) {
+ try {
+ SessionFactory sessionFactory = PersistenceUtility.getHibernateSession(entityManager).getSessionFactory();
+
+ if (server == null) {
+ ArrayList<MBeanServer> list = MBeanServerFactory.findMBeanServer(null);
+ server = list.get(0);
+ }
+
+ ObjectName objectName = new ObjectName(HIBERNATE_STATISTICS_MBEAN_OBJECTNAME);
+ StatisticsService mBean = new StatisticsService();
+ mBean.setSessionFactory(sessionFactory);
+ server.registerMBean(mBean, objectName);
+ sessionFactory.getStatistics().setStatisticsEnabled(true);
+ } catch (InstanceAlreadyExistsException iaee) {
+ LOG.info("Duplicate mbean registration ignored: " + HIBERNATE_STATISTICS_MBEAN_OBJECTNAME);
+ } catch (Exception e) {
+ LOG.warn("Couldn't register hibernate statistics mbean", e);
+ }
+ }
+
+ public static Statistics getStatisticsService(EntityManager entityManager, MBeanServer server) {
+ Session hibernateSession = PersistenceUtility.getHibernateSession(entityManager);
+ SessionFactory hibernateSessionFactory = hibernateSession.getSessionFactory();
+ Statistics hibernateStatistics = hibernateSessionFactory.getStatistics();
+ return hibernateStatistics;
+ }
+
+ private static NamedQueryDefinition getNamedQueryDefinition(EntityManager entityManager, String queryName) {
+ SessionFactoryImplementor sessionFactory = getHibernateSessionFactoryImplementor(entityManager);
+ NamedQueryDefinition namedQueryDefinition = sessionFactory.getNamedQuery(queryName);
+ if (namedQueryDefinition == null) {
+ throw new RuntimeException("EJB3 query not found [" + queryName + "]");
+ }
+
+ return namedQueryDefinition;
+ }
+
+ private static SessionFactoryImplementor getHibernateSessionFactoryImplementor(EntityManager entityManager) {
+ Session session = getHibernateSession(entityManager);
+ SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();
+ return sessionFactory;
+ }
+
+ // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
+ public static String addPostgresNativePagingSortingToQuery(String query, PageControl pageControl) {
+ return addLimitOffsetToQuery(query, pageControl);
+ }
+
+ // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
+ public static String addOracleNativePagingSortingToQuery(String query, PageControl pageControl) {
+ StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
+
+ int minRowNum = pageControl.getStartRow() + 1;
+ int maxRowNum = minRowNum + pageControl.getPageSize() - 1;
+
+ // pagination calculations based off of double-projection of the results
+ queryWithPagingSorting.append("SELECT outerResults.* FROM ( ");
+
+ queryWithPagingSorting.append("SELECT innerResults.*, ROWNUM rnum FROM ( ");
+ queryWithPagingSorting.append(query);
+ // for oracle, order by occurs at the end of the original query, whether grouped or not
+ queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray()));
+ queryWithPagingSorting.append(" ) innerResults ");
+
+ // for oracle, paginate high off of the inner projection
+ queryWithPagingSorting.append(" WHERE ROWNUM <= ").append(maxRowNum);
+
+ // for oracle, paginate low off of the outer projection
+ queryWithPagingSorting.append(" ) outerResults ");
+ queryWithPagingSorting.append(" WHERE rnum >= ").append(minRowNum);
+
+ return queryWithPagingSorting.toString();
+ }
+
+ /**
+ * Note: always put the rownum column at the END of the columns, so that code
+ * which relies on index-based access to the result set data doesn't break
+ *
+ * Method 1:
+ *
+ * SELECT outerResults.* FROM (
+ * SELECT innerResults.*,
+ * ROW_NUMBER() OVER( {orderByClause} ) AS rownum
+ * FROM ( {queryWithoutOrderBy} ) AS innerResults
+ * ) AS outerResults
+ * WHERE rownum <= maxRowNum AND rownum >= minRowNum
+ *
+ * The above method fails in circumstances where the orderByClause is built up with
+ * aliases that aren't in the explicit select list returned from queryWithoutOrderBy
+ *
+ *
+ * Method 2:
+ *
+ * Fix above shortcomings by pushing the orderByClause into the actual select list
+ *
+ * SELECT singleResults.* FROM (
+ * {queryWithoutOrderBySelectList}
+ * , ROW_NUMBER() OVER( {orderByClause} ) AS rownum
+ * {queryWithoutOrderByRestOfQuery}
+ * ) AS singleResults
+ * WHERE rownum <= maxRowNum AND rownum >= minRowNum
+ *
+ *
+ * Actually, both of the above methods have small flaws. The first can not sort by columns that
+ * aren't in the explicit return list. The second can not sort by computed columns and subqueries
+ * in the select list. The only way I see how this can work is by modifying the queryWithoutOrderBy
+ * to explicitly return all parameters that will be sorted on (even if the use case wouldn't normally
+ * require them to be in the select list), alias them, and order by the aliases by modifying the web
+ * ui code to use those tokens when generating the sortable column headers (jmarques - June/2009)
+ */
+ public static String addSQLServerNativePagingSortingToQuery(String query, PageControl pageControl) {
+ return addSQLServerNativePagingSortingToQuery(query, pageControl, false);
+ }
+
+ public static String addSQLServerNativePagingSortingToQuery(String query, PageControl pageControl,
+ boolean alternatePagingStyle) {
+ StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
+
+ int minRowNum = pageControl.getStartRow() + 1;
+ int maxRowNum = minRowNum + pageControl.getPageSize() - 1;
+
+ String orderByClause = getOrderByFragment(pageControl.getOrderingFieldsAsArray());
+
+ if (alternatePagingStyle) {
+ int index = findSelectListEndIndex(query);
+ String selectList = query.substring(0, index);
+ String restOfQuery = query.substring(index);
+ queryWithPagingSorting.append("SELECT singleResults.* FROM ( ");
+ queryWithPagingSorting.append(selectList);
+ queryWithPagingSorting.append(", ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum ");
+ queryWithPagingSorting.append(restOfQuery);
+ queryWithPagingSorting.append(") AS singleResults ");
+ } else {
+ queryWithPagingSorting.append("SELECT outerResults.* FROM ( ");
+ queryWithPagingSorting.append(" SELECT innerResults.*, ");
+ queryWithPagingSorting.append(" ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum ");
+ queryWithPagingSorting.append(" FROM ( " + query + " ) AS innerResults ");
+ queryWithPagingSorting.append(" ) AS outerResults ");
+ }
+ queryWithPagingSorting.append("WHERE rownum <= ").append(maxRowNum);
+ queryWithPagingSorting.append(" AND rownum >= ").append(minRowNum);
+
+ return queryWithPagingSorting.toString();
+ }
+
+ // beginning of from clause (not counting retrievals via subqueries) should indicate end of select list
+ private static int findSelectListEndIndex(String query) {
+ int nesting = 0;
+ query = query.toLowerCase();
+ StringBuilder wordBuffer = new StringBuilder();
+ for (int i = 0; i < query.length(); i++) {
+ char next = query.charAt(i);
+ if (next == '(') {
+ nesting++;
+ } else if (next == ')') {
+ nesting--;
+ } else {
+ if (nesting != 0) {
+ continue;
+ }
+ if (Character.isLetter(next)) {
+ wordBuffer.append(next);
+ if (wordBuffer.toString().equals("from")) {
+ return i - 4; // return index representing the character just before "from"
+ }
+ } else {
+ wordBuffer.setLength(0); // clear buffer if we find any non-letter
+ }
+ }
+ }
+ throw new IllegalArgumentException("Could not find select list end index");
+ }
+
+ // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
+ public static String addH2NativePagingSortingToQuery(String query, PageControl pageControl) {
+ return addLimitOffsetToQuery(query, pageControl);
+ }
+
+ private static String addLimitOffsetToQuery(String query, PageControl pageControl) {
+ StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
+ queryWithPagingSorting.append(query);
+
+ // for postgres, first order by
+ queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray()));
+
+ // for postgres, then paginate
+ queryWithPagingSorting.append(" LIMIT ").append(pageControl.getPageSize());
+ queryWithPagingSorting.append(" OFFSET ").append(pageControl.getStartRow());
+
+ return queryWithPagingSorting.toString();
+ }
+}
\ No newline at end of file
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/util/PageControl.java b/modules/core/domain/src/main/java/org/rhq/core/domain/util/PageControl.java
index e24805c..6963141 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/util/PageControl.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/util/PageControl.java
@@ -29,7 +29,7 @@ import java.util.List;
/**
* Used to pass information on pagination and sorting to data lookup methods.
- * {@link org.rhq.core.server.PersistenceUtility} provides several methods
+ * {@link org.rhq.core.domain.server.PersistenceUtility} provides several methods
* that can be called to apply PageControls to various types of queries.
*
* @author Greg Hinkle
diff --git a/modules/core/domain/src/main/java/org/rhq/core/server/EntitySerializer.java b/modules/core/domain/src/main/java/org/rhq/core/server/EntitySerializer.java
deleted file mode 100644
index cdacd46..0000000
--- a/modules/core/domain/src/main/java/org/rhq/core/server/EntitySerializer.java
+++ /dev/null
@@ -1,296 +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, 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.server;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.persistence.Id;
-
-import org.rhq.core.domain.resource.Agent;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.server.ExternalizableStrategy.Subsystem;
-
-/**
- * A utility specifically tailored to entities which will iterate over its persistence fields with a consistent
- * ordering for serialization and deserialization. If this class is passed a non-entity object, it will ignore
- * field-level annotations and just serialize and deserialize all fields in that object.
- *
- * @author Joseph Marques
- */
-public class EntitySerializer {
- private static Set<Class<? extends Annotation>> PERSISTENCE_ANNOTATIONS = new HashSet<Class<? extends Annotation>>();
- static {
- PERSISTENCE_ANNOTATIONS.add(Id.class);
- PERSISTENCE_ANNOTATIONS.add(Column.class);
- PERSISTENCE_ANNOTATIONS.add(ManyToOne.class);
- PERSISTENCE_ANNOTATIONS.add(OneToMany.class);
- PERSISTENCE_ANNOTATIONS.add(ManyToMany.class);
- }
-
- private static Set<Class<?>> BASIC_TYPES = new HashSet<Class<?>>();
- static {
- BASIC_TYPES.add(Byte.TYPE);
- BASIC_TYPES.add(Short.TYPE);
- BASIC_TYPES.add(Integer.TYPE);
- BASIC_TYPES.add(Long.TYPE);
- BASIC_TYPES.add(Float.TYPE);
- BASIC_TYPES.add(Double.TYPE);
- BASIC_TYPES.add(Boolean.TYPE);
- }
-
- private static Comparator<Field> fieldComparator = new Comparator<Field>() {
- public int compare(Field first, Field second) {
- return first.getName().compareTo(second.getName());
- }
- };
-
- private static Field[] getFields(Object object) {
- Class<?> objectClass = object.getClass();
- Entity entityAnnotation = objectClass.getAnnotation(Entity.class);
-
- List<Field> serializableFields;
- if (entityAnnotation == null) {
- serializableFields = getNonEntityFieldList(object);
- } else {
- serializableFields = getEntityFieldList(object);
- }
-
- Collections.sort(serializableFields, fieldComparator);
-
- Field[] results = serializableFields.toArray(new Field[serializableFields.size()]);
- return results;
- }
-
- private static List<Field> getNonEntityFieldList(Object object) {
- Class<?> objectClass = object.getClass();
- Field[] fields = objectClass.getDeclaredFields();
- List<Field> serializableFields = new ArrayList<Field>();
-
- for (Field field : fields) {
- serializableFields.add(field);
- field.setAccessible(true);
- }
-
- return serializableFields;
- }
-
- private static List<Field> getEntityFieldList(Object entity) {
- Class<?> entityClass = entity.getClass();
- Entity entityAnnotation = entityClass.getAnnotation(Entity.class);
- if (entityAnnotation == null) {
- throw new IllegalArgumentException("EntitySerializer only introspects objects annotated with @Entity ");
- }
-
- List<Field> serializableFields = new ArrayList<Field>();
-
- while (entityClass != null) {
-
- Field[] fields = entityClass.getDeclaredFields();
- for (Field field : fields) {
- Annotation[] fieldAnnotations = field.getAnnotations();
- for (Annotation fieldAnnotation : fieldAnnotations) {
- if (PERSISTENCE_ANNOTATIONS.contains(fieldAnnotation.annotationType())) {
- serializableFields.add(field);
- field.setAccessible(true);
- break;
- }
- }
- }
- entityClass = entityClass.getSuperclass();
- }
-
- return serializableFields;
- }
-
- public static void writeExternalRemote(Object object, ObjectOutput out) throws IOException {
- Field[] fields = getFields(object);
- for (Field field : fields) {
- //System.out.println("Serializing " + field.getName() + "...");
- try {
- Class<?> type = field.getType();
- Object value = field.get(object);
-
- if (BASIC_TYPES.contains(type)) {
- if (type.equals(Byte.TYPE)) {
- out.writeByte((Byte) value);
- } else if (type.equals(Short.TYPE)) {
- out.writeShort((Short) value);
- } else if (type.equals(Integer.TYPE)) {
- out.writeInt((Integer) value);
- } else if (type.equals(Long.TYPE)) {
- out.writeLong((Long) value);
- } else if (type.equals(Float.TYPE)) {
- out.writeFloat((Float) value);
- } else if (type.equals(Double.TYPE)) {
- out.writeDouble((Double) value);
- } else if (type.equals(Boolean.TYPE)) {
- out.writeBoolean((Boolean) value);
- } else {
- throw new IllegalStateException(
- "BASIC_TYPES contains an entry that doesn't have serialization support: " + type);
- }
- continue;
- }
-
- // either a string, an enum, numeric wrapper, collection, or some other object
- out.writeObject(value);
- } catch (IllegalAccessException iae) {
- throw new IllegalStateException("Could not access field '" + field.getName() + "' for serialization");
- }
- }
- }
-
- public static void readExternalRemote(Object object, ObjectInput in) throws IOException, ClassNotFoundException {
- Field[] fields = getFields(object);
- for (Field field : fields) {
- //System.out.println("Deserializing " + field.getName() + "...");
- try {
- Class<?> type = field.getType();
-
- if (BASIC_TYPES.contains(type)) {
- if (type.equals(Byte.TYPE)) {
- field.setByte(object, in.readByte());
- } else if (type.equals(Short.TYPE)) {
- field.setShort(object, in.readShort());
- } else if (type.equals(Integer.TYPE)) {
- field.setInt(object, in.readInt());
- } else if (type.equals(Long.TYPE)) {
- field.setLong(object, in.readLong());
- } else if (type.equals(Float.TYPE)) {
- field.setFloat(object, in.readFloat());
- } else if (type.equals(Double.TYPE)) {
- field.setDouble(object, in.readDouble());
- } else if (type.equals(Boolean.TYPE)) {
- field.setBoolean(object, in.readBoolean());
- } else {
- throw new IllegalStateException(
- "BASIC_TYPES contains an entry that doesn't have deserialization support: " + type);
- }
- continue;
- }
-
- // either a string, an enum, numeric wrapper, collection, or some other object
- field.set(object, in.readObject());
- } catch (IllegalAccessException iae) {
- throw new IllegalStateException("Could not access field '" + field.getName() + "' for deserialization");
- }
- }
- }
-
- public static void main(String[] args) throws Exception {
- ExternalizableStrategy.setStrategy(Subsystem.REFLECTIVE_SERIALIZATION);
-
- // create objects
- Agent writeAgent = new Agent("reflectiveAgent", "reflectiveAddress", 0, "reflectiveEndpoint", "reflectiveToken");
-
- ResourceType writeResourceType = new ResourceType();
- writeResourceType.setName("reflectiveType");
- writeResourceType.setPlugin("reflectivePlugin");
- writeResourceType.setId(7);
-
- Resource writeParentResource = new Resource();
- writeParentResource.setId(11);
- writeParentResource.setName("reflectiveParentResource");
- writeParentResource.setResourceKey("reflectiveParentKey");
-
- Resource writeResource = new Resource();
- writeResource.setId(42);
- writeResource.setName("reflectiveResource");
- writeResource.setResourceKey("reflectiveKey");
-
- // setup relationships
- writeResource.setAgent(writeAgent);
- writeResource.setResourceType(writeResourceType);
- writeResource.setParentResource(writeParentResource);
-
- System.out.println("BEFORE");
- System.out.println(writeResource.toString());
- System.out.println("BEFORE");
-
- String tempDir = System.getProperty("java.io.tmpdir");
- File tempFile = new File(tempDir, "entitySerializerTest.txt");
-
- FileOutputStream fos = new FileOutputStream(tempFile);
- try {
- ObjectOutput output = new ObjectOutputStream(fos);
- try {
- writeExternalRemote(writeResource, output);
- } finally {
- output.close();
- }
- } finally {
- fos.close();
- }
-
- Resource readResource = new Resource();
- FileInputStream fis = new FileInputStream(tempFile);
- try {
- ObjectInput ois = new ObjectInputStream(fis);
- try {
- readExternalRemote(readResource, ois);
- } finally {
- ois.close();
- }
- } finally {
- fis.close();
- }
-
- // quick verification
- System.out.println("AFTER");
- System.out.println(readResource.toString());
- System.out.println("AFTER");
-
- // deeper verification
- boolean equalsResource = writeResource.equals(readResource);
- boolean equalsParentResource = writeParentResource.equals(readResource.getParentResource());
- boolean equalsResourceType = writeResourceType.equals(readResource.getResourceType());
- boolean equalsAgent = writeAgent.equals(readResource.getAgent());
-
- System.out.println("equalsResource: " + equalsResource);
- System.out.println("equalsParentResource: " + equalsParentResource);
- System.out.println("equalsResourceType: " + equalsResourceType);
- System.out.println("equalsAgent: " + equalsAgent);
- }
-
-}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/server/ExternalizableStrategy.java b/modules/core/domain/src/main/java/org/rhq/core/server/ExternalizableStrategy.java
deleted file mode 100644
index a43fcdc..0000000
--- a/modules/core/domain/src/main/java/org/rhq/core/server/ExternalizableStrategy.java
+++ /dev/null
@@ -1,64 +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, 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.server;
-
-/**
- * This uses a ThreadLocal to bind an externalization strategy based on the invoking subsystem. In other
- * words, when we know we're serializing for Server-Agent communication then set to AGENT, when we know we're
- * serializing for RemoteClient-Server communication set to REMOTEAPI. By keeping this info on the thread
- * we avoid having to tag all of the relevant objects that will be serialized.
- *
- * @author jay shaughnessy
- */
-public class ExternalizableStrategy {
-
- public enum Subsystem {
- AGENT((char) 1), // set bidirectionally for agent<--->server communication
- REFLECTIVE_SERIALIZATION((char) 3); // set unidirectionally for both CLI-->server and WS-->server communication
-
- private char id;
-
- Subsystem(char id) {
- this.id = id;
- }
-
- public char id() {
- return id;
- }
- }
-
- private static ThreadLocal<Subsystem> strategy = new ThreadLocal<Subsystem>() {
-
- protected ExternalizableStrategy.Subsystem initialValue() {
- return Subsystem.AGENT;
- }
- };
-
- public static Subsystem getStrategy() {
- return strategy.get();
- }
-
- public static void setStrategy(Subsystem newStrategy) {
- strategy.set(newStrategy);
- }
-}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/server/H2CustomDialect.java b/modules/core/domain/src/main/java/org/rhq/core/server/H2CustomDialect.java
deleted file mode 100644
index cbbb8c5..0000000
--- a/modules/core/domain/src/main/java/org/rhq/core/server/H2CustomDialect.java
+++ /dev/null
@@ -1,45 +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.core.server;
-
-import org.hibernate.dialect.H2Dialect;
-
-/**
- * This class extends the basic H2Dialect that comes in the
- * Hibernate core distribution to force it to use sequences
- * for H2 database.
- *
- * @author Joseph Marques
- */
-public class H2CustomDialect extends H2Dialect {
-
- @Override
- public boolean supportsIdentityColumns() {
- /*
- * By default, GeneratorType.AUTO strategy will choose IDENTITY if a database supports it.
- * However, the embedded database was originally written using sequences. Later, SQL Server
- * support was added which required changing the generation strategy from SEQUENCE to AUTO.
- * This broke support for the embedded database because the H2Dialect was trying to use
- * identity data types for key columns, which the H2DatabaseType did not support. This hack
- * basically tricks Hibernate into believing that H2 doesn't support identity types, which
- * then forces it to fall back to using the SEQUENCE strategy.
- */
- return false;
- }
-}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/server/PersistenceUtility.java b/modules/core/domain/src/main/java/org/rhq/core/server/PersistenceUtility.java
deleted file mode 100644
index 82c315e..0000000
--- a/modules/core/domain/src/main/java/org/rhq/core/server/PersistenceUtility.java
+++ /dev/null
@@ -1,563 +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, 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.server;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.ObjectName;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.ejb.EntityManagerImpl;
-import org.hibernate.engine.NamedQueryDefinition;
-import org.hibernate.engine.SessionFactoryImplementor;
-import org.hibernate.jmx.StatisticsService;
-import org.hibernate.stat.Statistics;
-import org.hibernate.type.CustomType;
-import org.hibernate.type.EntityType;
-import org.hibernate.type.PrimitiveType;
-import org.hibernate.type.Type;
-
-import org.rhq.core.domain.util.OrderingField;
-import org.rhq.core.domain.util.PageControl;
-import org.rhq.core.domain.util.PageList;
-import org.rhq.core.domain.util.PageOrdering;
-
-/**
- * Various persistence utility methods - mostly Hibernate-specific.
- *
- * @author Heiko Rupp
- * @author Joseph Marques
- * @author Greg Hinkle
- */
-public class PersistenceUtility {
- private static final Log LOG = LogFactory.getLog(PersistenceUtility.class);
-
- private static final Pattern COUNT_QUERY_PATTERN = Pattern.compile("^(\\s*SELECT\\s+)(.*?)(\\s+FROM.*)",
- Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
- private static final Pattern COUNT_QUERY_REMOVE_FETCH = Pattern.compile("FETCH", Pattern.CASE_INSENSITIVE
- | Pattern.MULTILINE | Pattern.DOTALL);
-
- public static final String HIBERNATE_STATISTICS_MBEAN_OBJECTNAME = "Hibernate:type=statistics,application=RHQ";
-
- @SuppressWarnings("unchecked")
- // used in hibernate.jsp
- public static String getDisplayString(Type hibernateType) {
- if (hibernateType instanceof EntityType) {
- return hibernateType.getName() + " (enter integer of ID / primary key field)";
- } else if (hibernateType instanceof CustomType) {
- if (Enum.class.isAssignableFrom(hibernateType.getReturnedClass())) {
- Class<? extends Enum<?>> enumClass = (Class<? extends Enum<?>>) hibernateType.getReturnedClass();
- StringBuilder result = new StringBuilder();
- result.append(enumClass.getName());
- result.append(" (");
- boolean first = true;
- for (Enum<?> nextEnum : enumClass.getEnumConstants()) {
- if (!first) {
- result.append(" | ");
- } else {
- first = false;
- }
- result.append(nextEnum.name());
- }
- result.append(")");
- return result.toString();
- }
- }
- return hibernateType == null ? "" : hibernateType.getName();
- }
-
- @SuppressWarnings("unchecked")
- // used in hibernate.jsp
- public static Object cast(String value, Type hibernateType) {
- if (hibernateType instanceof PrimitiveType) {
- Class<?> type = ((PrimitiveType) hibernateType).getPrimitiveClass();
- if (type.equals(Byte.TYPE)) {
- return Byte.valueOf(value);
- } else if (type.equals(Short.TYPE)) {
- return Short.valueOf(value);
- } else if (type.equals(Integer.TYPE)) {
- return Integer.valueOf(value);
- } else if (type.equals(Long.TYPE)) {
- return Long.valueOf(value);
- } else if (type.equals(Float.TYPE)) {
- return Float.valueOf(value);
- } else if (type.equals(Double.TYPE)) {
- return Double.valueOf(value);
- } else if (type.equals(Boolean.TYPE)) {
- return Boolean.valueOf(value);
- }
- } else if (hibernateType instanceof EntityType) {
- String entityName = ((EntityType) hibernateType).getAssociatedEntityName();
- try {
- Class<?> entityClass = Class.forName(entityName);
- Object entity = entityClass.newInstance();
-
- Field primaryKeyField = entityClass.getDeclaredField("id");
- primaryKeyField.setAccessible(true);
- primaryKeyField.setInt(entity, Integer.valueOf(value));
- return entity;
- } catch (Throwable t) {
- throw new IllegalArgumentException("Type[" + entityName + "] must have PK field named 'id'");
- }
- } else if (hibernateType instanceof CustomType) {
- if (Enum.class.isAssignableFrom(hibernateType.getReturnedClass())) {
- Class<? extends Enum<?>> enumClass = hibernateType.getReturnedClass();
- Enum<?>[] enumValues = enumClass.getEnumConstants();
- try {
- int enumOrdinal = Integer.valueOf(value);
- try {
- return enumValues[enumOrdinal];
- } catch (ArrayIndexOutOfBoundsException aioobe) {
- throw new IllegalArgumentException("There is no " + enumClass.getSimpleName()
- + " enum with ordinal '" + enumOrdinal + "'");
- }
- } catch (NumberFormatException nfe) {
- String ucaseValue = value.toUpperCase();
- for (Enum<?> nextEnum : enumValues) {
- if (nextEnum.name().toUpperCase().equals(ucaseValue)) {
- return nextEnum;
- }
- }
- throw new IllegalArgumentException("There is no " + enumClass.getSimpleName() + " enum with name '"
- + value + "'");
- }
- }
- }
- return value;
- }
-
- /**
- * Used to create queries to use with the {@link org.rhq.core.domain.util.PageControl} objects. The query will already have its sort column
- * and order appended as well as having its first result and max results set according to the page control data.
- *
- * @param entityManager your entity manager
- * @param queryName name of the query
- * @param pageControl the controls on the paging and sorting
- *
- * @return a preconfigured query for ordered pagination
- */
- public static Query createQueryWithOrderBy(EntityManager entityManager, String queryName, PageControl pageControl) {
- Query query;
-
- if (pageControl.getPrimarySortColumn() != null) {
- query = createQueryWithOrderBy(entityManager, queryName, pageControl.getOrderingFieldsAsArray());
- } else {
- StackTraceElement caller = new Throwable().fillInStackTrace().getStackTrace()[1];
- LOG.warn("Queries should really supply default sort columns. Caller did not: " + caller);
-
- // Use the standard named query if no sorting is specified
- query = entityManager.createNamedQuery(queryName);
- }
-
- setDataPage(query, pageControl);
-
- return query;
- }
-
- /**
- * Create a query from a named query with a transformed order by clause with multiple new ordery by clauses.
- *
- * @param entityManager the entity manager to build the query against
- * @param queryName the name of the query to transform
- * @param orderByFields an array of clauses to contribute to the order by
- *
- * @return the transformed query
- */
- public static Query createQueryWithOrderBy(EntityManager entityManager, String queryName,
- OrderingField... orderByFields) {
- NamedQueryDefinition ndc = getNamedQueryDefinition(entityManager, queryName);
- StringBuilder query = new StringBuilder(ndc.getQueryString());
- buildOrderBy(query, orderByFields);
- return entityManager.createQuery(query.toString());
- }
-
- private static StringBuilder buildOrderBy(StringBuilder query, OrderingField... orderByFields) {
- boolean first = true;
- for (OrderingField orderingField : orderByFields) {
- if (first) {
- // TODO GH: We could see if there already is an order by clause and contribute or override it
- query.append(" ORDER BY ");
- first = false;
- } else {
- query.append(", ");
- }
-
- query.append(orderingField.getField()).append(" ").append(orderingField.getOrdering());
- }
-
- return query;
- }
-
- private static String getOrderByFragment(OrderingField... orderByFields) {
- boolean first = true;
- StringBuilder builder = new StringBuilder();
- for (OrderingField orderingField : orderByFields) {
- if (first) {
- builder.append(" ORDER BY ");
- first = false;
- } else {
- builder.append(", ");
- }
-
- builder.append(orderingField.getField()).append(" ").append(orderingField.getOrdering());
- }
-
- return builder.toString();
- }
-
- /**
- * Builds a count(*) version of the named query so we don't have duplicate all our queries to use two query
- * pagination model.
- *
- * @param em the entity manager to build the query for
- * @param queryName the NamedQuery to transform
- *
- * @return a query that can be bound and executed to get the total count of results
- */
- public static Query createCountQuery(EntityManager em, String queryName) {
- return createCountQuery(em, queryName, "*");
- }
-
- /**
- * Builds a count(*) version of the named query so we don't have duplicate all our queries to use two query
- * pagination model.
- *
- * @param entityManager the entity manager to build the query for
- * @param queryName the NamedQuery to transform
- * @param countItem the object or attribute that needs to be counted, when it's ambiguous
- *
- * @return a query that can be bound and executed to get the total count of results
- */
- public static Query createCountQuery(EntityManager entityManager, String queryName, String countItem) {
- NamedQueryDefinition namedQueryDefinition = getNamedQueryDefinition(entityManager, queryName);
- String query = namedQueryDefinition.getQueryString();
-
- Matcher matcher = COUNT_QUERY_PATTERN.matcher(query);
- if (!matcher.find()) {
- throw new RuntimeException("Unable to transform query into count query [" + queryName + " - " + query + "]");
- }
-
- String newQuery = matcher.group(1) + "COUNT(" + countItem + ")" + matcher.group(3);
-
- matcher = COUNT_QUERY_REMOVE_FETCH.matcher(newQuery);
- if (matcher.find()) {
- StringBuffer buffer = new StringBuffer();
- do {
- matcher.appendReplacement(buffer, "");
- } while (matcher.find());
- matcher.appendTail(buffer);
- newQuery = buffer.toString();
- }
- if (LOG.isTraceEnabled()) {
- LOG.trace("Transformed query to count query [" + queryName + "] resulting in [" + newQuery + "]");
- }
-
- return entityManager.createQuery(newQuery);
- }
-
- public static void setDataPage(Query query, PageControl pageControl) {
- if (pageControl.getPageSize() > 0) {
- query.setFirstResult(pageControl.getStartRow());
- query.setMaxResults(pageControl.getPageSize());
- }
- }
-
- /**
- * Creates and executes a filter query for a collection relationship. This executes without passing back the query
- * object because the most common case is to simply paginate for a relationship. Use the createFilter method to
- * create more generic filters and get access to the hibernate query object for setting parameters etc.
- *
- * @param entityManager
- * @param collection
- * @param pageControl
- *
- * @return the result list of the entities from the filtered relationship
- */
- @SuppressWarnings("unchecked")
- public static PageList createPaginationFilter(EntityManager entityManager, Collection collection,
- PageControl pageControl) {
- if (collection == null) {
- return new PageList(pageControl);
- }
-
- String filter = "";
- if (pageControl.getPrimarySortColumn() != null) {
- PageOrdering order = (pageControl.getPrimarySortOrder() == null) ? PageOrdering.ASC : pageControl
- .getPrimarySortOrder();
- filter = getOrderByFragment(new OrderingField(pageControl.getPrimarySortColumn(), order));
- }
-
- org.hibernate.Query query = getHibernateSession(entityManager).createFilter(collection, filter);
- if (pageControl.getPageSize() > 0) {
- query.setFirstResult(pageControl.getPageNumber() * pageControl.getPageSize());
- query.setMaxResults(pageControl.getPageSize());
- }
-
- // TODO GH: Always flushing is probably not what we really want here
- // relationship filters don't seem to cause the proper flush, so manually flush
- getHibernateSession(entityManager).flush();
-
- // TODO GH: This can only create unbounded PageLists since I don't know how to do a count query to find the size
- return new PageList<Object>(query.list(), pageControl);
- }
-
- /**
- * Use this inside subclasses as a convenience method.
- */
- @SuppressWarnings("unchecked")
- public static <T> List<T> findByCriteria(EntityManager entityManager, Class<T> type,
- org.hibernate.criterion.Criterion... criterion) {
- // Using Hibernate, more difficult with EntityManager and EJB-QL
- org.hibernate.Criteria crit = getHibernateSession(entityManager).createCriteria(type);
- for (org.hibernate.criterion.Criterion c : criterion) {
- crit.add(c);
- }
-
- return crit.list();
- }
-
- public static Session getHibernateSession(EntityManager entityManager) {
- Session session;
- if (entityManager.getDelegate() instanceof EntityManagerImpl) {
- EntityManagerImpl entityManagerImpl = (EntityManagerImpl) entityManager.getDelegate();
- session = entityManagerImpl.getSession();
- } else {
- session = (Session) entityManager.getDelegate();
- }
-
- return session;
- }
-
- /**
- * Enables the hibernate statistics mbean to provide access to information on the ejb3 persistence tier.
- *
- * @param entityManager an inject entity manager whose session factory will be tracked with these statistics
- * @param server the MBeanServer where the statistics MBean should be registered; if <code>null</code>, the
- * first one in the list returned by MBeanServerFactory.findMBeanServer(null) is used
- */
- public static void enableHibernateStatistics(EntityManager entityManager, MBeanServer server) {
- try {
- SessionFactory sessionFactory = PersistenceUtility.getHibernateSession(entityManager).getSessionFactory();
-
- if (server == null) {
- ArrayList<MBeanServer> list = MBeanServerFactory.findMBeanServer(null);
- server = list.get(0);
- }
-
- ObjectName objectName = new ObjectName(HIBERNATE_STATISTICS_MBEAN_OBJECTNAME);
- StatisticsService mBean = new StatisticsService();
- mBean.setSessionFactory(sessionFactory);
- server.registerMBean(mBean, objectName);
- sessionFactory.getStatistics().setStatisticsEnabled(true);
- } catch (InstanceAlreadyExistsException iaee) {
- LOG.info("Duplicate mbean registration ignored: " + HIBERNATE_STATISTICS_MBEAN_OBJECTNAME);
- } catch (Exception e) {
- LOG.warn("Couldn't register hibernate statistics mbean", e);
- }
- }
-
- public static Statistics getStatisticsService(EntityManager entityManager, MBeanServer server) {
- Session hibernateSession = PersistenceUtility.getHibernateSession(entityManager);
- SessionFactory hibernateSessionFactory = hibernateSession.getSessionFactory();
- Statistics hibernateStatistics = hibernateSessionFactory.getStatistics();
- return hibernateStatistics;
- }
-
- private static NamedQueryDefinition getNamedQueryDefinition(EntityManager entityManager, String queryName) {
- SessionFactoryImplementor sessionFactory = getHibernateSessionFactoryImplementor(entityManager);
- NamedQueryDefinition namedQueryDefinition = sessionFactory.getNamedQuery(queryName);
- if (namedQueryDefinition == null) {
- throw new RuntimeException("EJB3 query not found [" + queryName + "]");
- }
-
- return namedQueryDefinition;
- }
-
- private static SessionFactoryImplementor getHibernateSessionFactoryImplementor(EntityManager entityManager) {
- Session session = getHibernateSession(entityManager);
- SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();
- return sessionFactory;
- }
-
- // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
- public static String addPostgresNativePagingSortingToQuery(String query, PageControl pageControl) {
- return addLimitOffsetToQuery(query, pageControl);
- }
-
- // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
- public static String addOracleNativePagingSortingToQuery(String query, PageControl pageControl) {
- StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
-
- int minRowNum = pageControl.getStartRow() + 1;
- int maxRowNum = minRowNum + pageControl.getPageSize() - 1;
-
- // pagination calculations based off of double-projection of the results
- queryWithPagingSorting.append("SELECT outerResults.* FROM ( ");
-
- queryWithPagingSorting.append("SELECT innerResults.*, ROWNUM rnum FROM ( ");
- queryWithPagingSorting.append(query);
- // for oracle, order by occurs at the end of the original query, whether grouped or not
- queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray()));
- queryWithPagingSorting.append(" ) innerResults ");
-
- // for oracle, paginate high off of the inner projection
- queryWithPagingSorting.append(" WHERE ROWNUM <= ").append(maxRowNum);
-
- // for oracle, paginate low off of the outer projection
- queryWithPagingSorting.append(" ) outerResults ");
- queryWithPagingSorting.append(" WHERE rnum >= ").append(minRowNum);
-
- return queryWithPagingSorting.toString();
- }
-
- /**
- * Note: always put the rownum column at the END of the columns, so that code
- * which relies on index-based access to the result set data doesn't break
- *
- * Method 1:
- *
- * SELECT outerResults.* FROM (
- * SELECT innerResults.*,
- * ROW_NUMBER() OVER( {orderByClause} ) AS rownum
- * FROM ( {queryWithoutOrderBy} ) AS innerResults
- * ) AS outerResults
- * WHERE rownum <= maxRowNum AND rownum >= minRowNum
- *
- * The above method fails in circumstances where the orderByClause is built up with
- * aliases that aren't in the explicit select list returned from queryWithoutOrderBy
- *
- *
- * Method 2:
- *
- * Fix above shortcomings by pushing the orderByClause into the actual select list
- *
- * SELECT singleResults.* FROM (
- * {queryWithoutOrderBySelectList}
- * , ROW_NUMBER() OVER( {orderByClause} ) AS rownum
- * {queryWithoutOrderByRestOfQuery}
- * ) AS singleResults
- * WHERE rownum <= maxRowNum AND rownum >= minRowNum
- *
- *
- * Actually, both of the above methods have small flaws. The first can not sort by columns that
- * aren't in the explicit return list. The second can not sort by computed columns and subqueries
- * in the select list. The only way I see how this can work is by modifying the queryWithoutOrderBy
- * to explicitly return all parameters that will be sorted on (even if the use case wouldn't normally
- * require them to be in the select list), alias them, and order by the aliases by modifying the web
- * ui code to use those tokens when generating the sortable column headers (jmarques - June/2009)
- */
- public static String addSQLServerNativePagingSortingToQuery(String query, PageControl pageControl) {
- return addSQLServerNativePagingSortingToQuery(query, pageControl, false);
- }
-
- public static String addSQLServerNativePagingSortingToQuery(String query, PageControl pageControl,
- boolean alternatePagingStyle) {
- StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
-
- int minRowNum = pageControl.getStartRow() + 1;
- int maxRowNum = minRowNum + pageControl.getPageSize() - 1;
-
- String orderByClause = getOrderByFragment(pageControl.getOrderingFieldsAsArray());
-
- if (alternatePagingStyle) {
- int index = findSelectListEndIndex(query);
- String selectList = query.substring(0, index);
- String restOfQuery = query.substring(index);
- queryWithPagingSorting.append("SELECT singleResults.* FROM ( ");
- queryWithPagingSorting.append(selectList);
- queryWithPagingSorting.append(", ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum ");
- queryWithPagingSorting.append(restOfQuery);
- queryWithPagingSorting.append(") AS singleResults ");
- } else {
- queryWithPagingSorting.append("SELECT outerResults.* FROM ( ");
- queryWithPagingSorting.append(" SELECT innerResults.*, ");
- queryWithPagingSorting.append(" ROW_NUMBER() OVER( " + orderByClause + " ) AS rownum ");
- queryWithPagingSorting.append(" FROM ( " + query + " ) AS innerResults ");
- queryWithPagingSorting.append(" ) AS outerResults ");
- }
- queryWithPagingSorting.append("WHERE rownum <= ").append(maxRowNum);
- queryWithPagingSorting.append(" AND rownum >= ").append(minRowNum);
-
- return queryWithPagingSorting.toString();
- }
-
- // beginning of from clause (not counting retrievals via subqueries) should indicate end of select list
- private static int findSelectListEndIndex(String query) {
- int nesting = 0;
- query = query.toLowerCase();
- StringBuilder wordBuffer = new StringBuilder();
- for (int i = 0; i < query.length(); i++) {
- char next = query.charAt(i);
- if (next == '(') {
- nesting++;
- } else if (next == ')') {
- nesting--;
- } else {
- if (nesting != 0) {
- continue;
- }
- if (Character.isLetter(next)) {
- wordBuffer.append(next);
- if (wordBuffer.toString().equals("from")) {
- return i - 4; // return index representing the character just before "from"
- }
- } else {
- wordBuffer.setLength(0); // clear buffer if we find any non-letter
- }
- }
- }
- throw new IllegalArgumentException("Could not find select list end index");
- }
-
- // wanted to combine postgres and oracle methods, but org.rhq.core.db.DatabaseType objects are not visible to domain
- public static String addH2NativePagingSortingToQuery(String query, PageControl pageControl) {
- return addLimitOffsetToQuery(query, pageControl);
- }
-
- private static String addLimitOffsetToQuery(String query, PageControl pageControl) {
- StringBuilder queryWithPagingSorting = new StringBuilder(query.length() + 50);
- queryWithPagingSorting.append(query);
-
- // for postgres, first order by
- queryWithPagingSorting.append(getOrderByFragment(pageControl.getOrderingFieldsAsArray()));
-
- // for postgres, then paginate
- queryWithPagingSorting.append(" LIMIT ").append(pageControl.getPageSize());
- queryWithPagingSorting.append(" OFFSET ").append(pageControl.getStartRow());
-
- return queryWithPagingSorting.toString();
- }
-}
\ No newline at end of file
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/test/QueryAllTest.java b/modules/core/domain/src/test/java/org/rhq/core/domain/test/QueryAllTest.java
index 57aba89..754d331 100644
--- a/modules/core/domain/src/test/java/org/rhq/core/domain/test/QueryAllTest.java
+++ b/modules/core/domain/src/test/java/org/rhq/core/domain/test/QueryAllTest.java
@@ -90,9 +90,9 @@ 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.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.exception.ThrowableUtil;
@SuppressWarnings("unchecked")
diff --git a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/ExternalizableStrategyCommandPreprocessor.java b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/ExternalizableStrategyCommandPreprocessor.java
index 8eef33b..a6c520f 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/ExternalizableStrategyCommandPreprocessor.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/ExternalizableStrategyCommandPreprocessor.java
@@ -18,7 +18,7 @@
*/
package org.rhq.enterprise.agent;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
import org.rhq.enterprise.communications.command.Command;
import org.rhq.enterprise.communications.command.client.ClientCommandSender;
import org.rhq.enterprise.communications.command.client.CommandPreprocessor;
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/core/RHQDomain.gwt.xml b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/core/RHQDomain.gwt.xml
index 1be06f4..c8a85f0 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/core/RHQDomain.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/core/RHQDomain.gwt.xml
@@ -35,6 +35,7 @@
<!-- Exclude any domain classes that can not be used client-side due to use of unsupported class use -->
<exclude name="**/JPADriftFileBits.*"/> <!-- a server-side entity that requires SQL Blob support -->
<exclude name="sync/**"/> <!-- a server-side package used by the CLI to export system settings -->
+ <exclude name="server/**"/> <!-- a server-side package -->
</source>
<!--<generate-with class="org.rhq.core.rebind.RecordBuilderGenerator">
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 ae64ec4..1ee1741 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
@@ -671,7 +671,7 @@ public class ConfigurationBean {
dialect = "org.hibernate.dialect.Oracle10gDialect";
quartzDriverDelegateClass = "org.quartz.impl.jdbcjobstore.oracle.OracleDelegate";
} else if (db.toLowerCase().indexOf("h2") > -1) {
- dialect = "org.rhq.core.server.H2CustomDialect";
+ dialect = "org.rhq.core.domain.server.H2CustomDialect";
} else if (db.toLowerCase().indexOf("sqlserver") > -1) {
dialect = "org.hibernate.dialect.SQLServerDialect";
quartzDriverDelegateClass = "org.quartz.impl.jdbcjobstore.MSSQLDelegate";
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/ExternalizableStrategyCommandListener.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/ExternalizableStrategyCommandListener.java
index 7ca48b2..2833c9e 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/ExternalizableStrategyCommandListener.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/ExternalizableStrategyCommandListener.java
@@ -18,7 +18,7 @@
*/
package org.rhq.enterprise.gui.startup;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
import org.rhq.enterprise.communications.command.Command;
import org.rhq.enterprise.communications.command.CommandResponse;
import org.rhq.enterprise.communications.command.client.CommandPreprocessor;
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 8b94c7b..651129c 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
@@ -376,7 +376,7 @@ public class StartupServlet extends HttpServlet {
.getServiceContainer()
.addCommandListener(
new ExternalizableStrategyCommandListener(
- org.rhq.core.server.ExternalizableStrategy.Subsystem.AGENT));
+ org.rhq.core.domain.server.ExternalizableStrategy.Subsystem.AGENT));
} catch (Exception e) {
throw new ServletException("Cannot start the server-side communications services.", e);
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/util/StatisticsUtility.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/util/StatisticsUtility.java
index 0a6bb59..be34373 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/util/StatisticsUtility.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/util/StatisticsUtility.java
@@ -23,7 +23,7 @@ import org.hibernate.stat.Statistics;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.enterprise.server.util.LookupUtil;
/**
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/browser.jsp b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/browser.jsp
index 67587db..e379377 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/browser.jsp
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/browser.jsp
@@ -1,7 +1,7 @@
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="org.hibernate.engine.SessionFactoryImplementor" %>
-<%@ page import="org.rhq.core.server.PersistenceUtility" %>
+<%@ page import="org.rhq.core.domain.server.PersistenceUtility" %>
<%@ page import="org.rhq.enterprise.gui.legacy.util.SessionUtils" %>
<%@ page import="org.rhq.enterprise.server.util.LookupUtil" %>
<%@ page import="javax.naming.InitialContext" %>
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 0261703..1fbc38d 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
@@ -3,7 +3,7 @@
<%@ page import="java.util.Map" %>
<%@ page import="org.rhq.core.domain.auth.Subject" %>
-<%@ page import="org.rhq.core.server.PersistenceUtility" %>
+<%@ page import="org.rhq.core.domain.server.PersistenceUtility" %>
<%@ page import="org.rhq.enterprise.gui.legacy.util.SessionUtils"%>
<%@ page import="org.rhq.enterprise.gui.util.WebUtility"%>
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/hibernate.jsp b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/hibernate.jsp
index c151a34..ce3f671 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/hibernate.jsp
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/admin/test/hibernate.jsp
@@ -7,7 +7,7 @@
<%@ page import="org.hibernate.type.IntegerType" %>
<%@ page import="org.hibernate.type.LongType" %>
<%@ page import="org.hibernate.type.Type" %>
-<%@ page import="org.rhq.core.server.PersistenceUtility" %>
+<%@ page import="org.rhq.core.domain.server.PersistenceUtility" %>
<%@ page import="org.rhq.enterprise.gui.legacy.util.SessionUtils" %>
<%@ page import="org.rhq.enterprise.server.util.LookupUtil" %>
<%@ page import="javax.naming.InitialContext" %>
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 a3daeb7..e9751c2 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
@@ -29,7 +29,7 @@ import org.jboss.remoting.invocation.NameBasedInvocation;
import org.rhq.bindings.client.AbstractRhqFacadeProxy;
import org.rhq.bindings.client.RhqManagers;
import org.rhq.bindings.util.InterfaceSimplifier;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
/**
* This class acts as a local SLSB proxy to make remote invocations
diff --git a/modules/enterprise/server/itests/src/test/java/org/rhq/enterprise/server/drift/ManageSnapshotsTest.java b/modules/enterprise/server/itests/src/test/java/org/rhq/enterprise/server/drift/ManageSnapshotsTest.java
index 73ef3e3..bb132fe 100644
--- a/modules/enterprise/server/itests/src/test/java/org/rhq/enterprise/server/drift/ManageSnapshotsTest.java
+++ b/modules/enterprise/server/itests/src/test/java/org/rhq/enterprise/server/drift/ManageSnapshotsTest.java
@@ -52,8 +52,8 @@ import org.rhq.core.domain.drift.JPADrift;
import org.rhq.core.domain.drift.JPADriftChangeSet;
import org.rhq.core.domain.drift.JPADriftFile;
import org.rhq.core.domain.drift.JPADriftSet;
+import org.rhq.core.domain.server.EntitySerializer;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.EntitySerializer;
import org.rhq.test.AssertUtils;
import org.rhq.test.TransactionCallback;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/agentclient/impl/AgentClientImpl.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/agentclient/impl/AgentClientImpl.java
index 76d9c3e..219af8d 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/agentclient/impl/AgentClientImpl.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/agentclient/impl/AgentClientImpl.java
@@ -28,7 +28,7 @@ import org.rhq.core.clientapi.agent.measurement.MeasurementAgentService;
import org.rhq.core.clientapi.agent.operation.OperationAgentService;
import org.rhq.core.clientapi.agent.support.SupportAgentService;
import org.rhq.core.domain.resource.Agent;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
import org.rhq.enterprise.communications.Ping;
import org.rhq.enterprise.communications.command.Command;
import org.rhq.enterprise.communications.command.CommandResponse;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
index fa38154..fa03aaf 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
@@ -38,9 +38,9 @@ import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.composite.AbstractAlertConditionCategoryComposite;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.InventoryStatus;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.authz.PermissionException;
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 db954c4..79fca41 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
@@ -48,10 +48,10 @@ import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.NumericType;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.engine.AlertDefinitionEvent;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertManagerBean.java
index 38230af..672a2c9 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertManagerBean.java
@@ -67,10 +67,10 @@ import org.rhq.core.domain.measurement.MeasurementUnits;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceAncestryFormat;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.server.MeasurementConverter;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
index d8ce44e..94f1d35 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
@@ -37,10 +37,10 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
index 79bdec2..8974c30 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
@@ -39,10 +39,10 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
index 966a960..334b546 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
@@ -55,9 +55,9 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.criteria.RoleCriteria;
import org.rhq.core.domain.criteria.SubjectCriteria;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertNotificationManagerLocal;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java
index 6413b89..00fefd2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java
@@ -43,9 +43,9 @@ import org.rhq.core.domain.authz.Role;
import org.rhq.core.domain.criteria.RoleCriteria;
import org.rhq.core.domain.resource.group.LdapGroup;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertNotificationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/AffinityGroupManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/AffinityGroupManagerBean.java
index 8cf985b..2ebbdab 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/AffinityGroupManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/AffinityGroupManagerBean.java
@@ -38,9 +38,9 @@ import org.rhq.core.domain.cloud.PartitionEventType;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.cloud.composite.AffinityGroupCountComposite;
import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.RequiredPermission;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
index 4b98c67..01faa80 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
@@ -39,9 +39,9 @@ import org.rhq.core.domain.cloud.PartitionEventType;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.cloud.composite.ServerWithAgentCountComposite;
import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.authz.RequiredPermission;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/PartitionEventManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/PartitionEventManagerBean.java
index 8eb345b..147dbc0 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/PartitionEventManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/PartitionEventManagerBean.java
@@ -43,10 +43,10 @@ import org.rhq.core.domain.cloud.PartitionEventType;
import org.rhq.core.domain.cloud.PartitionEvent.ExecutionStatus;
import org.rhq.core.domain.cloud.composite.FailoverListComposite;
import org.rhq.core.domain.resource.Agent;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.RequiredPermission;
import org.rhq.enterprise.server.core.AgentManagerLocal;
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 f88d2ba..d29eaac 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
@@ -97,11 +97,11 @@ import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.core.util.exception.ThrowableUtil;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/AdvisoryManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/AdvisoryManagerBean.java
index 03530e9..c8f12e9 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/AdvisoryManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/AdvisoryManagerBean.java
@@ -38,9 +38,9 @@ import org.rhq.core.domain.content.AdvisoryCVE;
import org.rhq.core.domain.content.AdvisoryPackage;
import org.rhq.core.domain.content.CVE;
import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.RequiredPermission;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentSourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentSourceManagerBean.java
index 5f65afb..3f42ef7 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentSourceManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentSourceManagerBean.java
@@ -94,10 +94,10 @@ import org.rhq.core.domain.criteria.RepoCriteria;
import org.rhq.core.domain.resource.ProductVersion;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.core.util.stream.StreamUtil;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
index b14ca51..2455c49 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
@@ -50,11 +50,11 @@ import org.rhq.core.domain.content.composite.LoadedPackageBitsComposite;
import org.rhq.core.domain.content.composite.PackageListItemComposite;
import org.rhq.core.domain.content.composite.PackageVersionComposite;
import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java
index 959b321..4a7c2f2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/RepoManagerBean.java
@@ -69,10 +69,10 @@ import org.rhq.core.domain.content.transfer.SubscribedRepo;
import org.rhq.core.domain.criteria.PackageVersionCriteria;
import org.rhq.core.domain.criteria.RepoCriteria;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
index d851761..5a7d750 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
@@ -53,9 +53,9 @@ import org.rhq.core.domain.common.composite.SystemSetting;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.composite.AgentLastAvailabilityPingComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.stream.StreamUtil;
import org.rhq.enterprise.server.RHQConstants;
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 f74b287..ce4e6a7 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
@@ -71,10 +71,10 @@ import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceError;
import org.rhq.core.domain.resource.ResourceErrorType;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.agentclient.AgentClient;
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 ec1c956..75894ad 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
@@ -49,10 +49,10 @@ import org.rhq.core.domain.measurement.ResourceAvailability;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ResourceIdWithAvailabilityComposite;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.StopWatch;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/CallTimeDataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/CallTimeDataManagerBean.java
index dfaf5e8..82c1915 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/CallTimeDataManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/CallTimeDataManagerBean.java
@@ -55,10 +55,10 @@ import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.calltime.CallTimeData;
import org.rhq.core.domain.measurement.calltime.CallTimeDataComposite;
import org.rhq.core.domain.measurement.calltime.CallTimeDataValue;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
index 7a70948..32567f0 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
@@ -74,10 +74,10 @@ import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.core.util.jdbc.JDBCUtil;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
index 0bf42d3..cdfb7cc 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
@@ -51,10 +51,10 @@ import org.rhq.core.domain.measurement.MeasurementDataPK;
import org.rhq.core.domain.measurement.MeasurementOOB;
import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementProblemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementProblemManagerBean.java
index d398141..2804936 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementProblemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementProblemManagerBean.java
@@ -32,10 +32,10 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ProblemResourceComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
index 69a22db..77956e1 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java
@@ -78,11 +78,11 @@ 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.ResourceType;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
index 4c007ae..d95bd9f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java
@@ -77,10 +77,10 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.agentclient.AgentClient;
import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteSafeInvocationHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteSafeInvocationHandler.java
index d11cc03..8d5ca9a 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteSafeInvocationHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteSafeInvocationHandler.java
@@ -35,7 +35,7 @@ import org.jboss.remoting.ServerInvoker;
import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.invocation.NameBasedInvocation;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
import org.rhq.core.util.exception.WrappedRemotingException;
import org.rhq.enterprise.server.safeinvoker.HibernateDetachUtility;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteWsInvocationHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteWsInvocationHandler.java
index 22cbddb..16c2195 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteWsInvocationHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/remote/RemoteWsInvocationHandler.java
@@ -27,7 +27,7 @@ import org.jboss.remoting.ServerInvoker;
import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.invocation.NameBasedInvocation;
-import org.rhq.core.server.ExternalizableStrategy;
+import org.rhq.core.domain.server.ExternalizableStrategy;
import org.rhq.enterprise.server.safeinvoker.HibernateDetachUtility;
public class RemoteWsInvocationHandler implements ServerInvocationHandler {
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 6c016e7..214e46a 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
@@ -58,10 +58,10 @@ 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.ResourceType;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.agentclient.AgentClient;
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 6339eda..468f619 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
@@ -109,9 +109,9 @@ import org.rhq.core.domain.resource.flyweight.FlyweightCache;
import org.rhq.core.domain.resource.flyweight.ResourceFlyweight;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.AutoGroupComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.IntExtractor;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
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 2f00d16..eeeb4fc 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
@@ -51,9 +51,9 @@ import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.authz.Role;
import org.rhq.core.domain.common.composite.SystemSetting;
import org.rhq.core.domain.resource.group.LdapGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.authz.RequiredPermission;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
index eb493c3..d808969 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
@@ -76,10 +76,10 @@ import org.rhq.core.domain.resource.composite.ResourcePermission;
import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
index 8cc810f..3776c70 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
@@ -41,9 +41,9 @@ import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.ResourceGroupDefinitionCriteria;
import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/AlertSubsystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/AlertSubsystemManagerBean.java
index 6adb7e2..823c9f2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/AlertSubsystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/AlertSubsystemManagerBean.java
@@ -37,10 +37,10 @@ import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.composite.AlertDefinitionComposite;
import org.rhq.core.domain.alert.composite.AlertHistoryComposite;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/ConfigurationSubsystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/ConfigurationSubsystemManagerBean.java
index 6e6da2b..ff9ae0f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/ConfigurationSubsystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/ConfigurationSubsystemManagerBean.java
@@ -30,10 +30,10 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
import org.rhq.core.domain.configuration.composite.ConfigurationUpdateComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.util.QueryUtility;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/OperationHistorySubsystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/OperationHistorySubsystemManagerBean.java
index fbc7923..17a4ed4 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/OperationHistorySubsystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/subsystem/OperationHistorySubsystemManagerBean.java
@@ -30,10 +30,10 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.operation.ResourceOperationHistory;
import org.rhq.core.domain.operation.composite.ResourceOperationHistoryComposite;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.util.QueryUtility;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
index c3c26f2..849dfba 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
@@ -65,7 +65,7 @@ import org.rhq.core.domain.common.SystemConfiguration;
import org.rhq.core.domain.common.composite.SystemSetting;
import org.rhq.core.domain.common.composite.SystemSettings;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.util.ObjectNameFactory;
import org.rhq.core.util.StopWatch;
import org.rhq.enterprise.server.RHQConstants;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/CoreTestBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/CoreTestBean.java
index c56e395..be872ae 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/CoreTestBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/CoreTestBean.java
@@ -36,7 +36,7 @@ import org.rhq.core.clientapi.server.core.AgentRegistrationResults;
import org.rhq.core.clientapi.server.core.CoreServerService;
import org.rhq.core.domain.plugin.Plugin;
import org.rhq.core.domain.resource.Agent;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.core.CoreServerServiceImpl;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/DiscoveryTestBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/DiscoveryTestBean.java
index 6ac5be2..9fb1661 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/DiscoveryTestBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/test/DiscoveryTestBean.java
@@ -50,7 +50,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.resource.group.ResourceGroup;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.core.CoreServerServiceImpl;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java
index 9511e63..54fce8f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java
@@ -48,11 +48,11 @@ import org.rhq.core.domain.criteria.SubjectCriteria;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.search.SearchSubsystem;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.tagging.Tag;
import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.enterprise.server.search.SearchExpressionException;
import org.rhq.enterprise.server.search.execution.SearchTranslationManager;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernatePerformanceMonitor.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernatePerformanceMonitor.java
index 7c58b43..96394ce 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernatePerformanceMonitor.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernatePerformanceMonitor.java
@@ -30,7 +30,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.stat.Statistics;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
/**
* @author Joseph Marques
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernateStatisticsStopWatch.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernateStatisticsStopWatch.java
index 742adf9..d429bc8 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernateStatisticsStopWatch.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/HibernateStatisticsStopWatch.java
@@ -25,7 +25,7 @@ import javax.persistence.EntityManager;
import org.hibernate.stat.Statistics;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
/**
* @author Joseph Marques
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
index 43c1401..4647e1b 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
@@ -50,7 +50,7 @@ import org.jboss.mx.util.MBeanServerLocator;
import org.rhq.core.db.DatabaseTypeFactory;
import org.rhq.core.db.PostgresqlDatabaseType;
import org.rhq.core.domain.auth.Subject;
-import org.rhq.core.server.PersistenceUtility;
+import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SessionManager;
import org.rhq.enterprise.server.content.ContentSourceManagerBean;
12 years, 1 month
[rhq] 2 commits - modules/enterprise modules/plugins
by Heiko W. Rupp
modules/enterprise/server/container/src/main/resources/jbossas/server/default/deploy/rhq-cache-service.xml | 13 ++++++----
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java | 2 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java | 2 -
3 files changed, 10 insertions(+), 7 deletions(-)
New commits:
commit f5378271fb8e90481d30a08bf5c497350bf640d0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 29 21:36:17 2012 +0200
Make the cache local for now.
diff --git a/modules/enterprise/server/container/src/main/resources/jbossas/server/default/deploy/rhq-cache-service.xml b/modules/enterprise/server/container/src/main/resources/jbossas/server/default/deploy/rhq-cache-service.xml
index 4381fbb..79a9677 100644
--- a/modules/enterprise/server/container/src/main/resources/jbossas/server/default/deploy/rhq-cache-service.xml
+++ b/modules/enterprise/server/container/src/main/resources/jbossas/server/default/deploy/rhq-cache-service.xml
@@ -24,7 +24,7 @@
<attribute name="NodeLockingScheme">OPTIMISTIC</attribute>
<!-- Valid modes are LOCAL, REPL_ASYNC and REPL_SYNC -->
- <attribute name="CacheMode">REPL_ASYNC</attribute>
+ <attribute name="CacheMode">LOCAL</attribute>
<!-- Just used for async repl: use a replication queue -->
<attribute name="UseReplQueue">false</attribute>
@@ -45,19 +45,21 @@
e.g. file:/home/bela/default.xml
<attribute name="ClusterProperties"></attribute>
-->
+<!--
+
<attribute name="ClusterConfig">
<config>
- <!-- UDP: if you have a multihomed machine,
+ <!– UDP: if you have a multihomed machine,
set the bind_addr attribute to the appropriate NIC IP address, e.g bind_addr="192.168.0.2"
- -->
- <!-- UDP: On Windows machines, because of the media sense feature
+ –>
+ <!– UDP: On Windows machines, because of the media sense feature
being broken with multicast (even after disabling media sense)
set the loopback attribute to true
TODO need to parametrize and add to installer
- -->
+ –>
<UDP
mcast_addr="${jgroups.udp.mcast_addr:230.1.2.3}"
mcast_port="${jboss.alertcachepartition.mcast_port:48899}"
@@ -97,6 +99,7 @@
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true" />
</config>
</attribute>
+-->
<!-- Whether or not to fetch state on joining a cluster -->
<attribute name="FetchStateOnStartup">true</attribute>
commit 0f4fba5d025d9fc7a6cb7593bc00a55676d6b548
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 29 21:30:08 2012 +0200
Make the assertion print what was wrong.
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
index f222224..f34f674 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainSocketBindingTest.java
@@ -98,7 +98,7 @@ public class DomainSocketBindingTest extends AbstractJBossAS7PluginTest {
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
}
@Test(priority = 11)
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
index 8cd26d6..df9eb7a 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
@@ -95,7 +95,7 @@ public class SocketBindingTest extends AbstractJBossAS7PluginTest {
configuration = loadConfig();
pl = (PropertyList) configuration.get("*");
- assert pl.getList().size() == count+1;
+ assert pl.getList().size() == count+1 : "Got only " + pl.getList().size() + " items, expected "+ count+1;
}
@Test(priority = 11)
12 years, 1 month
[rhq] modules/plugins
by ips
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7Component.java | 26 +++
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java | 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java | 14 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java | 23 +--
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java | 3
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java | 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/HostControllerComponent.java | 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java | 8 -
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java | 71 ++++------
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 3
10 files changed, 93 insertions(+), 67 deletions(-)
New commits:
commit cb698b5d71f5fba5b329cd2d12082b7201710907
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Mar 29 13:37:46 2012 -0400
add a productType plugin config prop; generify some of the components; add an AS7Component interface
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7Component.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7Component.java
new file mode 100644
index 0000000..0dd4acd
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AS7Component.java
@@ -0,0 +1,26 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+
+/**
+ * An AS7 Resource component.
+ */
+public interface AS7Component<T extends ResourceComponent<?>> extends ResourceComponent<T> {
+
+ /**
+ * Returns the connection that can be used to send management requests to the managed AS& instance.
+ *
+ * @return the connection that can be used to send management requests to the managed AS& instance
+ */
+ ASConnection getASConnection();
+
+ /**
+ * Returns a path in the form (key=value)?(,key=value)* that can be used to construct an address to this component's
+ * underlying managed service.
+ *
+ * @return a path in the form (key=value)?(,key=value)* that can be used to construct an address to this component's
+ * underlying managed service
+ */
+ String getPath();
+
+}
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
index c3214ed..a1993bc 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
@@ -35,6 +35,8 @@ import org.apache.commons.logging.LogFactory;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Document;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.util.FileUtils;
import org.rhq.core.system.ProcessInfo;
@@ -43,7 +45,7 @@ import org.rhq.core.system.ProcessInfo;
* in the area of processes and host.xml
* @author Heiko W. Rupp
*/
-public class AbstractBaseDiscovery {
+public abstract class AbstractBaseDiscovery<T extends ResourceComponent<?>> implements ResourceDiscoveryComponent<T> {
private static final String HOME_DIR_SYSPROP = "jboss.home.dir";
private static final String BIND_ADDRESS_MANAGEMENT_SYSPROP = "jboss.bind.address.management";
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 e0f57d0..590da14 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
@@ -71,8 +71,9 @@ import org.rhq.modules.plugins.jbossas7.json.ReadResource;
import org.rhq.modules.plugins.jbossas7.json.Remove;
import org.rhq.modules.plugins.jbossas7.json.Result;
-public class BaseComponent<T extends ResourceComponent<?>> implements ResourceComponent<T>, MeasurementFacet,
- ConfigurationFacet, DeleteResourceFacet, CreateChildResourceFacet, OperationFacet {
+public class BaseComponent<T extends ResourceComponent<?>> implements AS7Component<T>, MeasurementFacet,
+ ConfigurationFacet, DeleteResourceFacet, CreateChildResourceFacet, OperationFacet {
+
private static final String INTERNAL = "_internal:";
private static final int INTERNAL_SIZE = INTERNAL.length();
private static final String LOCALHOST = "localhost";
@@ -80,7 +81,7 @@ public class BaseComponent<T extends ResourceComponent<?>> implements ResourceCo
public static final String MANAGED_SERVER = "Managed Server";
final Log log = LogFactory.getLog(this.getClass());
- ResourceContext context;
+ ResourceContext<T> context;
Configuration pluginConfiguration;
String myServerName;
ASConnection connection;
@@ -111,7 +112,7 @@ public class BaseComponent<T extends ResourceComponent<?>> implements ResourceCo
* Start the resource connection
* @see org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)
*/
- public void start(ResourceContext context) throws InvalidPluginConfigurationException, Exception {
+ public void start(ResourceContext<T> context) throws InvalidPluginConfigurationException, Exception {
this.context = context;
pluginConfiguration = context.getPluginConfiguration();
@@ -254,11 +255,11 @@ public class BaseComponent<T extends ResourceComponent<?>> implements ResourceCo
report.addData(data);
}
- protected ASConnection getASConnection() {
+ public ASConnection getASConnection() {
return connection;
}
- protected String getPath() {
+ public String getPath() {
return path;
}
@@ -656,4 +657,5 @@ public class BaseComponent<T extends ResourceComponent<?>> implements ResourceCo
return new ComplexRequest(tokenizer.nextToken(), tokenizer.nextToken());
}
}
+
}
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 4b421c4..8557a5d 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
@@ -94,10 +94,6 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
String[] commandLine = process.getCommandLine();
File homeDir = getHomeDir(process);
JBossProductType productType = JBossProductType.determineJBossProductType(homeDir);
- String version = determineServerVersionFromHomeDir(homeDir.getPath());
- if (productType != JBossProductType.AS) {
- version = productType.SHORT_NAME + " " + version;
- }
File baseDir = getBaseDir(process, homeDir);
String configName = baseDir.getName();
String key = baseDir.getPath();
@@ -124,13 +120,20 @@ public abstract class BaseProcessDiscovery extends AbstractBaseDiscovery
pluginConfig.put(new PropertySimple("hostname", managementHostPort.host));
pluginConfig.put(new PropertySimple("port", managementHostPort.port));
pluginConfig.put(new PropertySimple("realm", getManagementSecurityRealmFromHostXml()));
+ pluginConfig.put(new PropertySimple("productType", productType.name()));
- ProductInfo productInfo = new ProductInfo(managementHostPort.host, pluginConfig.getSimpleValue("user", null),
- pluginConfig.getSimpleValue("password", null), managementHostPort.port);
- productInfo = productInfo.getFromRemote();
- if (productInfo.fromRemote) {
- version = productInfo.productName + " " + productInfo.productVersion;
- name = productInfo.productName + " " + productInfo.serverName;
+ String version;
+ String versionFromHomeDir = determineServerVersionFromHomeDir(homeDir.getPath());
+ if (productType == JBossProductType.AS) {
+ version = versionFromHomeDir;
+ } else {
+ ProductInfo productInfo = new ProductInfo(managementHostPort.host, pluginConfig.getSimpleValue("user", null),
+ pluginConfig.getSimpleValue("password", null), managementHostPort.port);
+ productInfo = productInfo.getFromRemote();
+ String productVersion = (productInfo.fromRemote) ? productInfo.productVersion : versionFromHomeDir;
+ // TODO: Grab the product version from the product info properties file, so we aren't relying on connecting
+ // to the server to obtain it.
+ version = productType.SHORT_NAME + " " + productVersion;
}
// String javaClazz = psr.getProcessInfo().getName();
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 68a78c0..6fbfcef 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
@@ -38,6 +38,7 @@ 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.inventory.ResourceComponent;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.core.pluginapi.util.ProcessExecutionUtility;
@@ -56,7 +57,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*
* @author Heiko W. Rupp
*/
-public class BaseServerComponent extends BaseComponent implements MeasurementFacet {
+public class BaseServerComponent<T extends ResourceComponent<?>> extends BaseComponent<T> implements MeasurementFacet {
private static final String SEPARATOR = "\n-----------------------\n";
final Log log = LogFactory.getLog(BaseServerComponent.class);
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 25a5c9e..630556d 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
@@ -39,7 +39,6 @@ public class DatasourceComponent extends BaseComponent implements OperationFacet
if (operationName.equals("addDriver")) { // TODO decide if we need this at all. See also the plugin-descriptor
String drivername = parameters.getSimpleValue("driver-name", NOTSET);
-
Address theAddress = new Address(address);
theAddress.add("jdbc-driver", drivername);
@@ -47,8 +46,6 @@ public class DatasourceComponent extends BaseComponent implements OperationFacet
op.addAdditionalProperty("driver-name",drivername);
op.addAdditionalProperty("deployment-name",parameters.getSimpleValue("deployment-name", NOTSET));
op.addAdditionalProperty("driver-class-name",parameters.getSimpleValue("driver-class-name", NOTSET));
-
-
}
else if (operationName.equals("addDatasource")) {
String name = parameters.getSimpleValue("name",NOTSET);
@@ -118,7 +115,6 @@ public class DatasourceComponent extends BaseComponent implements OperationFacet
result.setErrorMessage(res.getFailureDescription());
}
-
return result;
}
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 85b3ece..555a017 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
@@ -27,6 +27,7 @@ import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.Address;
@@ -38,7 +39,8 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
* Component class for host- and domain controller
* @author Heiko W. Rupp
*/
-public class HostControllerComponent extends BaseServerComponent implements OperationFacet {
+public class HostControllerComponent<T extends ResourceComponent<?>> extends BaseServerComponent<T>
+ implements OperationFacet {
private final Log log = LogFactory.getLog(HostControllerComponent.class);
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 3f5efdb..d56f0c0 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
@@ -18,7 +18,6 @@
*/
package org.rhq.modules.plugins.jbossas7;
-
import java.util.Collections;
import java.util.Date;
import java.util.Map;
@@ -43,7 +42,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
* @author Heiko W. Rupp
*/
@SuppressWarnings("unused")
-public class ManagedASComponent extends BaseComponent {
+public class ManagedASComponent extends BaseComponent<HostControllerComponent<?>> {
/**
* Get the availability of the managed AS server. We can't just check if
@@ -53,13 +52,12 @@ public class ManagedASComponent extends BaseComponent {
*/
@Override
public AvailabilityType getAvailability() {
-
if (context.getResourceType().getName().equals("Managed Server")) {
Address theAddress = new Address();
- String host = pluginConfiguration.getSimpleValue("domainHost","local");
+ String host = pluginConfiguration.getSimpleValue("domainHost", "local");
theAddress.add("host",host);
theAddress.add("server-config", myServerName);
- Operation getStatus = new ReadAttribute(theAddress,"status");
+ Operation getStatus = new ReadAttribute(theAddress, "status");
Result result;
try {
result = connection.execute(getStatus);
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 9c7eb21..69bd8d4 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -31,7 +31,6 @@ import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
@@ -46,21 +45,23 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*
* @author Heiko W. Rupp
*/
-public class ManagedASDiscovery extends AbstractBaseDiscovery implements ResourceDiscoveryComponent
-
-{
+public class ManagedASDiscovery extends AbstractBaseDiscovery<HostControllerComponent<?>>
+ {
private HostControllerComponent parentComponent;
/**
* Run the auto-discovery
*/
- public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
+ public Set<DiscoveredResourceDetails> discoverResources(
+ ResourceDiscoveryContext<HostControllerComponent<?>> discoveryContext) throws Exception {
Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
- parentComponent = (HostControllerComponent) discoveryContext.getParentResourceComponent();
+ parentComponent = discoveryContext.getParentResourceComponent();
Configuration hcConfig = parentComponent.getHCConfig();
String hostName = hcConfig.getSimpleValue("domainHost", "master"); // TODO good default?
+ String productTypeString = hcConfig.getSimpleValue("productType", null);
+ JBossProductType productType = JBossProductType.valueOf(productTypeString);
HostInfo hostInfo = getHostInfo(hostName);
if (hostInfo == null)
@@ -69,61 +70,52 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery implements Resourc
try {
// get the HostController, as this is an indicator for managed AS
- // Now we have the host controller, lets get the host.xml file
+ // Now we have the host controller, let's get the host.xml file
// and obtain the servers from there.
- List<ServerInfo> serverNames;
- serverNames = getManagedServers(hostName);
+ List<ServerInfo> serverNames = getManagedServers(hostName);
for (ServerInfo serverInfo : serverNames) {
-
- Configuration config = discoveryContext.getDefaultPluginConfiguration();
- config.put(new PropertySimple("domainHost", hostName));
- config.put(new PropertySimple("group", serverInfo.group));
+ Configuration pluginConfig = discoveryContext.getDefaultPluginConfiguration();
+ pluginConfig.put(new PropertySimple("domainHost", hostName));
+ pluginConfig.put(new PropertySimple("group", serverInfo.group));
if (serverInfo.bindingGroup != null) {
- config.put(new PropertySimple("socket-binding-group", serverInfo.bindingGroup));
+ pluginConfig.put(new PropertySimple("socket-binding-group", serverInfo.bindingGroup));
} else {
String group = resolveSocketBindingGroup(serverInfo.group);
- config.put(new PropertySimple("socket-binding-group", group));
+ pluginConfig.put(new PropertySimple("socket-binding-group", group));
}
- config.put(new PropertySimple("socket-binding-port-offset", serverInfo.portOffset));
+ pluginConfig.put(new PropertySimple("socket-binding-port-offset", serverInfo.portOffset));
- String path = "host=" + hostName + ",server-config=" + serverInfo.name;
- config.put(new PropertySimple("path", path));
+ String path = "host=" + hostName + ",server-pluginConfig=" + serverInfo.name;
+ pluginConfig.put(new PropertySimple("path", path));
// get from the domain or other place as soon as the domain provides it.
//XXX hardcoded separators?
String serverLog = hcConfig.getSimpleValue("baseDir", "/tmp") + File.separator + "domain/servers/"
+ serverInfo.name + "/log/server.log";
- initLogEventSourcesConfigProp(serverLog, config);
+ initLogEventSourcesConfigProp(serverLog, pluginConfig);
String version;
- String resourceDescription;
-
- String resourceName = serverInfo.name;
-
- if (EAP.equalsIgnoreCase(hostInfo.productName)) {
- version = EAP_PREFIX + hostInfo.productVersion;
- resourceDescription = "Managed JBoss Enterprise Application Platform 6 server";
- resourceName = EAP_PREFIX + resourceName;
- } else if (JDG.equalsIgnoreCase(hostInfo.productName)) {
- version = JDG_PREFIX + hostInfo.productVersion;
- resourceDescription = "Managed JBoss Data Grid 6 server";
- } else {
- resourceDescription = "Managed AS7 server";
+ if (productType == JBossProductType.AS) {
version = hostInfo.releaseVersion;
+ } else {
+ version = productType.SHORT_NAME + " " + hostInfo.productVersion;
}
+ String resourceName = productType.SHORT_NAME + " " + serverInfo.name;
+ String resourceDescription = "Managed " + productType.FULL_NAME + " server";
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(discoveryContext.getResourceType(), // ResourceType
- hostName + "/" + serverInfo.name, // key
- resourceName, // Name
- version, // TODO get from Domain as soon as it is provided
- resourceDescription, // Description
- config, null);
+ String resourceKey = hostName + "/" + serverInfo.name;
+ // TODO: Try to find the process corresponding to the managed server, so we can include the ProcessInfo
+ // in the details.
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(discoveryContext.getResourceType(),
+ resourceKey, resourceName, version, resourceDescription, pluginConfig, null);
// Add to return values
discoveredResources.add(detail);
- log.info("Discovered new ... " + discoveryContext.getResourceType() + ", " + serverInfo);
+
+ log.info("Discovered new " + discoveryContext.getResourceType().getName() + " Resource with key ["
+ + detail.getResourceKey() + "].");
}
} catch (Exception e) {
log.warn("Discovery for a " + discoveryContext.getResourceType() + " failed for process " + " :"
@@ -225,4 +217,5 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery implements Resourc
String productName;
String releaseCodeName;
}
+
}
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 40c49c0..47ad52d 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
@@ -82,6 +82,7 @@
the JVM that should be used to start and shutdown the HostController instance;
defaults to the home directory of the RHQ Agent JRE."/>
<c:simple-property name="domainHost" type="string" readOnly="true" required="false" description="Host name within the AS7 domain"/>
+ <c:simple-property name="productType" type="string" readOnly="true" required="false" description="Server product type (e.g. AS or EAP)"/>
&logSources;
</plugin-configuration>
@@ -444,6 +445,8 @@
description="The absolute path to a JRE or JDK installation directory containing
the JVM that should be used to start and shutdown the JBossAS instance;
defaults to the home directory of the RHQ Agent JRE."/>
+ <c:simple-property name="productType" type="string" readOnly="true" required="false" description="Server product type (e.g. AS or EAP)"/>
+
&logSources;
</plugin-configuration>
12 years, 1 month
[rhq] modules/enterprise
by lkrejci
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java | 8 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/SubjectGWTService.java | 38 +++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java | 11 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java | 68 +++++++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/prefs/SubjectPreferencesCache.java | 16 ++
5 files changed, 120 insertions(+), 21 deletions(-)
New commits:
commit f125951729ef398cfb32a1365ef059e39273b467
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Mar 29 18:19:01 2012 +0200
[BZ 804303] - Instead of saving the whole set of preferences when changing
the view in the GWT UI, just persist only the prefs that have actually
changed in GWT.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index 514746c..0428671 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -23,7 +23,9 @@
package org.rhq.enterprise.gui.coregui.client;
import java.util.EnumSet;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.logging.Logger;
import com.google.gwt.event.dom.client.KeyCodes;
@@ -480,7 +482,11 @@ public class LoginView extends LocatableCanvas {
PropertySimple simple = new PropertySimple("isNewUser", null);
newSubject.getUserConfiguration().put(simple);
}
- GWTServiceLookup.getSubjectService().updateSubject(newSubject, new AsyncCallback<Subject>() {
+
+ Set<String> prefsChanges = new HashSet<String>();
+ prefsChanges.add("isNewUser");
+
+ GWTServiceLookup.getSubjectService().updateSubjectAndPreferences(newSubject, prefsChanges, new AsyncCallback<Subject>() {
public void onFailure(Throwable caught) {
Log.error("Failed to register LDAP subject '" + newSubject.getName() + "' " + caught.getMessage(),
caught);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/SubjectGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/SubjectGWTService.java
index 8e4640c..8063f20 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/SubjectGWTService.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/SubjectGWTService.java
@@ -18,6 +18,8 @@
*/
package org.rhq.enterprise.gui.coregui.client.gwt;
+import java.util.Set;
+
import com.google.gwt.user.client.rpc.RemoteService;
import org.rhq.core.domain.auth.Principal;
@@ -89,15 +91,17 @@ public interface SubjectGWTService extends RemoteService {
void logout(int sessionId) throws RuntimeException;
/**
- * Updates an existing subject with new data. This does <b>not</b> cascade any changes to the roles, but it will save
- * the subject's configuration.
- *
+ * Updates an existing subject with new data. This does <b>not</b> cascade any changes to the roles and it
+ * will <b>NOT</b> save the subject's preferences (the reason for that is that the preferences
+ * are still updated both in the old JSF UI as well as in the GWT UI and figuring out what values
+ * changed requires some more work than simply saving the GWT's view of the preferences).
+ *
* @param subjectToModify the subject whose data is to be updated (which may or may not be the same as <code>user</code>)
*
* @return the merged subject, which may or may not be the same instance of <code>subjectToModify</code>
*/
Subject updateSubject(Subject subjectToModify) throws RuntimeException;
-
+
/**
* Updates an existing subject with new data. This cascades changes to roles and LDAP roles, so the passed-in
* subject should be fully-fetched (i.e. both roles and LDAP roles should be fetched).
@@ -110,6 +114,32 @@ public interface SubjectGWTService extends RemoteService {
Subject updateSubject(Subject subjectToModify, String newPassword) throws RuntimeException;
/**
+ * This will update the preferences of the supplied subject (which might or might not be the same as the
+ * current user).
+ *
+ * @param subjectToModify the subject to modify the preferences of
+ * @param changedPrefs the set of preference names that are known to have changed - only the preferences
+ * with these names will be persisted to the database.
+ * @return the subject with the preferences updated to match the persisted state (which might contain
+ * additional changes - this is because the prefs are still being updated both in the GWT and JSF UIs).
+ *
+ * @throws RuntimeException
+ */
+ Subject updateSubjectPreferences(Subject subjectToModify, Set<String> changedPrefs) throws RuntimeException;
+
+ /**
+ * A combination of {@link #updateSubject(Subject)} and {@link #updateSubjectPreferences(Subject, Set)} methods.
+ * <p>
+ * This method will therefore modify both the subject and the preferences that changed.
+ *
+ * @param subjectToModify
+ * @param changedPrefs
+ * @return
+ * @throws RuntimeException
+ */
+ Subject updateSubjectAndPreferences(Subject subjectToModify, Set<String> changedPrefs) throws RuntimeException;
+
+ /**
* Queries subjects using current logged in user.
*
* @param criteria details for the search
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 25fed3a..09279cd 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
@@ -58,6 +58,8 @@ public class UserPreferences {
private ArrayList<UserPreferenceChangeListener> changeListeners = new ArrayList<UserPreferenceChangeListener>();
+ private HashSet<String> changedPreferenceKeys = new HashSet<String>();
+
// when these preferences change, they should not trigger a refresh.
private static ArrayList<String> preferencesThatShouldNotCauseRefresh;
static {
@@ -65,7 +67,7 @@ public class UserPreferences {
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCES);
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCE_GROUPS);
}
-
+
public UserPreferences(Subject subject) {
this.subject = subject;
this.userConfiguration = subject.getUserConfiguration();
@@ -269,6 +271,8 @@ public class UserPreferences {
prop.setStringValue(value);
}
+ changedPreferenceKeys.add(name);
+
UserPreferenceChangeEvent event = new AutoPersistAwareChangeEvent(name, value, oldValue, persistCallback);
for (UserPreferenceChangeListener listener : changeListeners) {
listener.onPreferenceChange(event);
@@ -291,6 +295,8 @@ public class UserPreferences {
listener.onPreferenceRemove(event);
}
}
+
+ changedPreferenceKeys.add(name);
}
public void clearConfiguration() {
@@ -309,7 +315,8 @@ public class UserPreferences {
}
public void store(AsyncCallback<Subject> persistCallback) {
- this.subjectService.updateSubject(this.subject, persistCallback);
+ this.subjectService.updateSubjectPreferences(this.subject, changedPreferenceKeys, persistCallback);
+ changedPreferenceKeys.clear();
}
public Configuration getConfiguration() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
index e175134..97ec22f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
@@ -18,7 +18,11 @@
*/
package org.rhq.enterprise.gui.coregui.server.gwt;
+import java.util.Set;
+
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.criteria.SubjectCriteria;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTService;
@@ -89,20 +93,7 @@ public class SubjectGWTServiceImpl extends AbstractGWTServiceImpl implements Sub
}
public Subject updateSubject(Subject subjectToModify) throws RuntimeException {
- try {
- Subject sessionSubject = getSessionSubject();
- Subject modifiedSubject;
- synchronized (subjectLock) {
- modifiedSubject = subjectManager.updateSubject(sessionSubject, subjectToModify);
- }
- Subject subject = SerialUtility.prepare(modifiedSubject, "SubjectManager.updateSubject");
- // Clear the prefs for this subject from the user prefs cache that portal-war uses, in case we just
- // changed any prefs; otherwise the cache would contain stale prefs.
- SubjectPreferencesCache.getInstance().clearConfiguration(subject.getId());
- return subject;
- } catch (Throwable t) {
- throw getExceptionToThrowToClient(t);
- }
+ return updateSubjectAndPreferences(subjectToModify, null, true, false);
}
public Subject updateSubject(Subject subjectToModify, String newPassword) throws RuntimeException {
@@ -122,6 +113,14 @@ public class SubjectGWTServiceImpl extends AbstractGWTServiceImpl implements Sub
}
}
+ public Subject updateSubjectPreferences(Subject subjectToModify, Set<String> changedPrefs) throws RuntimeException {
+ return updateSubjectAndPreferences(subjectToModify, changedPrefs, false, true);
+ }
+
+ public Subject updateSubjectAndPreferences(Subject subjectToModify, Set<String> changedPrefs) throws RuntimeException {
+ return updateSubjectAndPreferences(subjectToModify, changedPrefs, true, true);
+ }
+
public Subject processSubjectForLdap(Subject subjectToModify, String password) throws RuntimeException {
//no permissions check as embedded in the SLSB call.
try {
@@ -159,4 +158,45 @@ public class SubjectGWTServiceImpl extends AbstractGWTServiceImpl implements Sub
throw getExceptionToThrowToClient(t);
}
}
+
+ private Subject updateSubjectAndPreferences(Subject subjectToModify, Set<String> changedPrefs, boolean updateSubject, boolean updatePrefs) {
+ try {
+ Subject sessionSubject = getSessionSubject();
+ Subject modifiedSubject;
+ synchronized (subjectLock) {
+ if (!updateSubject) {
+ subjectToModify = subjectManager.getSubjectById(subjectToModify.getId());
+ }
+
+ Configuration persistedPrefs = SubjectPreferencesCache.getInstance().getPreferences(subjectToModify.getId());
+
+ if (updatePrefs && changedPrefs != null) {
+ Configuration userPrefs = subjectToModify.getUserConfiguration();
+ for(String name : changedPrefs) {
+ Property prop = userPrefs.get(name);
+ if (prop == null) {
+ persistedPrefs.remove(name);
+ } else {
+ persistedPrefs.put(prop);
+ }
+ }
+ }
+
+ subjectToModify.setUserConfiguration(persistedPrefs);
+
+ modifiedSubject = subjectManager.updateSubject(sessionSubject, subjectToModify);
+
+ if (updatePrefs) {
+ //clear the prefs cache so that JSF UI refreshes it
+ SubjectPreferencesCache.getInstance().clearConfiguration(subjectToModify.getId());
+ }
+ }
+
+ Subject subject = SerialUtility.prepare(modifiedSubject, "SubjectManager.updateSubjectPW");
+
+ return subject;
+ } catch (Throwable t) {
+ throw getExceptionToThrowToClient(t);
+ }
+ }
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/prefs/SubjectPreferencesCache.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/prefs/SubjectPreferencesCache.java
index 1b23660..d88bd85 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/prefs/SubjectPreferencesCache.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/prefs/SubjectPreferencesCache.java
@@ -114,6 +114,22 @@ public class SubjectPreferencesCache {
}
}
+ /**
+ * @param subjectId the subject to get preferences of
+ * @return the <b>COPY</b> of the configuration object - changes done to that instance will not be reflected in the persisted
+ * preferences
+ */
+ public synchronized Configuration getPreferences(int subjectId) {
+ load(subjectId);
+
+ Configuration config = subjectPreferences.get(subjectId);
+ if (config == null) {
+ return new Configuration();
+ } else {
+ return config.deepCopy();
+ }
+ }
+
public synchronized void clearConfiguration(int subjectId) {
if (log.isTraceEnabled()) {
log.trace("Removing PreferencesCache For " + subjectId);
12 years, 1 month