You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2010/06/14 14:34:48 UTC
svn commit: r954431 - in /qpid/trunk/qpid/java:
broker-plugins/experimental/slowconsumerdetection/
broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/
broker-plugins/experimental/slowconsumerdetect...
Author: ritchiem
Date: Mon Jun 14 12:34:48 2010
New Revision: 954431
URL: http://svn.apache.org/viewvc?rev=954431&view=rev
Log:
Update LogMessage Generation to be based on a the existance of a _logmessages.property file.
Added:
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/SlowConsumerDetection_logmessages.properties
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/TopicDeletePolicy_logmessages.properties
Removed:
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/LogMessages.properties
Modified:
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/build.xml
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
qpid/trunk/qpid/java/broker/src/velocity/java/org/apache/qpid/server/logging/GenerateLogMessages.java
Modified: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/build.xml?rev=954431&r1=954430&r2=954431&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/build.xml (original)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/build.xml Mon Jun 14 12:34:48 2010
@@ -39,7 +39,7 @@ nn - or more contributor license agreeme
<property name="gentools.home" location="${project.root}/../gentools" />
<property name="generated.package" value="org/apache/qpid/server/virtualhost/plugin/logging" />
- <property name="generated.dir" location="${module.precompiled}/${generated.package}" />
+ <property name="generated.dir" location="${module.precompiled}" />
<property name="velocity.compile.dir" value="${build.scratch}/broker/velocity"/>
<property name="velocity.timestamp" location="${generated.dir}/velocity.timestamp" />
@@ -56,14 +56,26 @@ nn - or more contributor license agreeme
<target name="gen_logging" depends="check_velocity_deps" unless="velocity.notRequired">
<mkdir dir="${generated.dir}"/>
+
+ <path id="logmessages.path">
+ <fileset dir="${module.src}">
+ <include name="**/*_logmessages.properties"/>
+ </fileset>
+ </path>
+
+ <pathconvert property="logmessages"
+ refid="logmessages.path"
+ pathsep=" "/>
+
+ <echo message="logmessages is ${logmessages}"/>
+
<java classname="org.apache.qpid.server.logging.GenerateLogMessages" fork="true" dir="${gentools.home}/src" failonerror="true">
- <arg value="-j"/>
- <arg value="-o"/>
- <arg value="${generated.dir}"/>
- <arg value="-t"/>
- <arg value="${project.root}/broker/src/velocity/templates/org/apache/qpid/server/logging/messages"/>
- <arg value="-r"/>
- <arg value="org.apache.qpid.server.virtualhost.plugin.logging.LogMessages"/>
+ <arg line="-r ${logmessages}"/>
+ <arg value="-j"/>
+ <arg value="-o"/>
+ <arg value="${generated.dir}"/>
+ <arg value="-t"/>
+ <arg value="${project.root}/broker/src/velocity/templates/org/apache/qpid/server/logging/messages"/>
<classpath>
<pathelement path="${project.root}/broker-plugins/experimental/slowconsumerdetection/src/main/java"/>
<pathelement path="${velocity.compile.dir}" />
Modified: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java?rev=954431&r1=954430&r2=954431&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/SlowConsumerDetection.java Mon Jun 14 12:34:48 2010
@@ -66,11 +66,11 @@ class SlowConsumerDetection extends Virt
@Override
public void execute()
{
- SlowConsumerDetectionMessages.SCD_RUNNING();
+ SlowConsumerDetectionMessages.RUNNING();
for (AMQQueue q : _virtualhost.getQueueRegistry().getQueues())
{
- SlowConsumerDetectionMessages.SCD_CHECKING_QUEUE(q.getName());
+ SlowConsumerDetectionMessages.CHECKING_QUEUE(q.getName());
try
{
SlowConsumerDetectionQueueConfiguration config =
@@ -91,7 +91,7 @@ class SlowConsumerDetection extends Virt
}
}
- SlowConsumerDetectionMessages.SCD_COMPLETE();
+ SlowConsumerDetectionMessages.COMPLETE();
}
public long getDelay()
Added: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/SlowConsumerDetection_logmessages.properties
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/SlowConsumerDetection_logmessages.properties?rev=954431&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/SlowConsumerDetection_logmessages.properties (added)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/SlowConsumerDetection_logmessages.properties Mon Jun 14 12:34:48 2010
@@ -0,0 +1,4 @@
+#SlowConsumerDetection.logMessages
+RUNNING = SCD-1001 : Running
+COMPLETE = SCD-1002 : Complete
+CHECKING_QUEUE = SCD-1003 : Checking Status of Queue {0}
\ No newline at end of file
Added: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/TopicDeletePolicy_logmessages.properties
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/TopicDeletePolicy_logmessages.properties?rev=954431&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/TopicDeletePolicy_logmessages.properties (added)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/logging/TopicDeletePolicy_logmessages.properties Mon Jun 14 12:34:48 2010
@@ -0,0 +1,3 @@
+#TopicDeletePolicy.logMessages
+DELETING_QUEUE = TDP-1001 : Deleting Queue
+DISCONNECTING = TDP-1002 : Disconnecting Session
\ No newline at end of file
Modified: qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java?rev=954431&r1=954430&r2=954431&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/experimental/slowconsumerdetection/src/main/java/org/apache/qpid/server/virtualhost/plugin/policies/TopicDeletePolicy.java Mon Jun 14 12:34:48 2010
@@ -86,7 +86,7 @@ public class TopicDeletePolicy implement
try
{
- CurrentActor.get().message(owner.getLogSubject(),TopicDeletePolicyMessages.TDP_DISCONNECTING());
+ CurrentActor.get().message(owner.getLogSubject(),TopicDeletePolicyMessages.DISCONNECTING());
// Close the consumer . this will cause autoDelete Queues to be purged
owner.getConnectionModel().
closeSession(owner, AMQConstant.RESOURCE_ERROR,
@@ -95,7 +95,7 @@ public class TopicDeletePolicy implement
// Actively delete non autoDelete queues if deletePersistent is set
if (!q.isAutoDelete() && (_configuration != null && _configuration.deletePersistent()))
{
- CurrentActor.get().message(q.getLogSubject(), TopicDeletePolicyMessages.TDP_DELETING_QUEUE());
+ CurrentActor.get().message(q.getLogSubject(), TopicDeletePolicyMessages.DELETING_QUEUE());
q.delete();
}
Modified: qpid/trunk/qpid/java/broker/src/velocity/java/org/apache/qpid/server/logging/GenerateLogMessages.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/velocity/java/org/apache/qpid/server/logging/GenerateLogMessages.java?rev=954431&r1=954430&r2=954431&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/velocity/java/org/apache/qpid/server/logging/GenerateLogMessages.java (original)
+++ qpid/trunk/qpid/java/broker/src/velocity/java/org/apache/qpid/server/logging/GenerateLogMessages.java Mon Jun 14 12:34:48 2010
@@ -31,7 +31,6 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;
@@ -39,10 +38,11 @@ public class GenerateLogMessages
{
private static String _tmplDir;
private String _outputDir;
- private String _resource;
+ private List<String> _logMessages = new LinkedList<String>();
public static void main(String[] args)
{
+ System.out.println("Starting LogMessage Generator");
GenerateLogMessages generator = null;
try
{
@@ -62,6 +62,7 @@ public class GenerateLogMessages
try
{
+ System.out.println("Running LogMessage Generator");
generator.run();
}
catch (InvalidTypeException e)
@@ -82,8 +83,8 @@ public class GenerateLogMessages
{
processArgs(args);
- // We need the template and output dirs set to run.
- if (_tmplDir == null || _outputDir == null)
+ // We need the template and input files to run.
+ if (_tmplDir == null || _outputDir == null || _logMessages.size() == 0)
{
showUsage();
throw new IllegalAccessException();
@@ -101,47 +102,23 @@ public class GenerateLogMessages
System.out.println("Usage: GenerateLogMessages: -t tmplDir");
System.out.println(" where -t tmplDir: Find templates in tmplDir.");
System.out.println(" -o outDir: Use outDir as the output dir.");
- System.out.println(" -r resource: The resource to build.");
}
public void run() throws InvalidTypeException, Exception
{
- Map<String,String> messageClasses = extractMessageClasses();
-
- for (String key : messageClasses.keySet())
- {
- createMessageClass(messageClasses.get(key),key);
- }
- }
-
- private Map<String, String> extractMessageClasses()
- {
-
- ResourceBundle _messages = ResourceBundle.getBundle(_resource, Locale.US);
-
- Enumeration<String> messageKeys = _messages.getKeys();
-
- Map<String,String> types = new HashMap<String, String>();
-
- //Identify 3-Digit keys
- while(messageKeys.hasMoreElements())
+ for (String file : _logMessages)
{
- String key = messageKeys.nextElement();
+ System.out.println("Processing File:" + file);
- if (key.length() == 3)
- {
- types.put(key,_messages.getString(key));
- }
+ createMessageClass(file);
}
-
- return types;
}
/**
* Process the args for:
- * -t|T value for the template location
- * -o|O value for the output directory
+ * -t|T value for the template location
+ * -o|O value for the output directory
*
* @param args the commandline arguments
*/
@@ -151,7 +128,11 @@ public class GenerateLogMessages
for (int i = 0; i < args.length; i++)
{
String arg = args[i];
- if (arg.charAt(0) == '-')
+ if (args[i].endsWith("_logmessages.properties"))
+ {
+ _logMessages.add(args[i]);
+ }
+ else if (arg.charAt(0) == '-')
{
switch (arg.charAt(1))
{
@@ -169,12 +150,6 @@ public class GenerateLogMessages
_tmplDir = args[i];
}
break;
- case 'r':
- case 'R':
- if (++i < args.length)
- {
- _resource = args[i];
- }
}
}
}
@@ -188,29 +163,54 @@ public class GenerateLogMessages
* The extraction is done based on typeIdentifier which is a 3-digit prefix
* on the messages e.g. BRK for Broker.
*
- * @param className The name for the file '_className_Messages.java'
- * @param typeIdentifier The 3 digit identifier
* @throws InvalidTypeException when an unknown parameter type is used in the properties file
- * @throws Exception thrown by velocity if there is an error
+ * @throws Exception thrown by velocity if there is an error
*/
- private void createMessageClass(String className, String typeIdentifier)
+ private void createMessageClass(String file)
throws InvalidTypeException, Exception
{
VelocityContext context = new VelocityContext();
- // Get the Data for this class and typeIdentifier
- HashMap<String, Object> typeData = prepareType(className, typeIdentifier);
+ String bundle = file.replace(File.separator, ".");
+ bundle = bundle.substring(bundle.indexOf("org."), bundle.indexOf(".properties"));
- context.put("package", _resource.substring(0, _resource.lastIndexOf(".")));
+ System.out.println("Creating Classes for bundle:" + bundle);
+
+ ResourceBundle fileBundle = ResourceBundle.getBundle(bundle, Locale.US);
+
+ // Pull the bit from /os/path/<className>.logMessages from the bundle name
+ String className = file.substring(file.lastIndexOf(File.separator) + 1, file.lastIndexOf("_"));
+ System.out.println("Creating ClassName form file:" + className);
+
+ String packageString = bundle.substring(0, bundle.indexOf(className));
+ String packagePath = packageString.replace(".", File.separator);
+
+ System.out.println("Package path:" + packagePath);
+
+ File outputDirectory = new File(_outputDir + File.separator + packagePath);
+ if (!outputDirectory.exists())
+ {
+ if (!outputDirectory.mkdirs())
+ {
+ throw new IllegalAccessException("Unable to create package structure:" + outputDirectory);
+ }
+ }
+
+ // Get the Data for this class and typeIdentifier
+ HashMap<String, Object> typeData = prepareType(className, fileBundle);
+
+ context.put("package", packageString.substring(0, packageString.lastIndexOf('.')));
//Store the resource Bundle name for the macro
- context.put("resource",_resource);
+ context.put("resource", bundle);
// Store this data in the context for the macro to access
context.put("type", typeData);
// Create the file writer to put the finished file in
- FileWriter output = new FileWriter(_outputDir + File.separator + className + "Messages.java");
+ String outputFile = _outputDir + File.separator + packagePath + className + "Messages.java";
+ System.out.println("Creating Java file:" + outputFile);
+ FileWriter output = new FileWriter(outputFile);
// Run Velocity to create the output file.
// Fix the default file encoding to 'ISO-8859-1' rather than let
@@ -250,26 +250,25 @@ public class GenerateLogMessages
*
* - name - ClassName ('Broker')
* - list[logEntryData] - methodName ('BRK_1001')
- * - name ('BRK-1001')
- * - format ('Startup : Version: {0} Build: {1}')
- * - parameters (list)
- * - type ('String'|'Number')
- * - name ('param1')
- * - options (list)
- * - name ('opt1')
- * - value ('AutoDelete')
+ * - name ('BRK-1001')
+ * - format ('Startup : Version: {0} Build: {1}')
+ * - parameters (list)
+ * - type ('String'|'Number')
+ * - name ('param1')
+ * - options (list)
+ * - name ('opt1')
+ * - value ('AutoDelete')
*
* @param messsageName the name to give the Class e.g. 'Broker'
- * @param messageKey the 3-digit key to extract the messages e.g. 'BRK'
+ *
* @return A HashMap with data for the macro
+ *
* @throws InvalidTypeException when an unknown parameter type is used in the properties file
*/
- private HashMap<String, Object> prepareType(String messsageName, String messageKey) throws InvalidTypeException
+ private HashMap<String, Object> prepareType(String messsageName, ResourceBundle messages) throws InvalidTypeException
{
// Load the LogMessages Resource Bundle
- ResourceBundle _messages = ResourceBundle.getBundle(_resource, Locale.US);
-
- Enumeration<String> messageKeys = _messages.getKeys();
+ Enumeration<String> messageKeys = messages.getKeys();
//Create the return map
HashMap<String, Object> messageTypeData = new HashMap<String, Object>();
@@ -289,7 +288,7 @@ public class GenerateLogMessages
String message = messageKeys.nextElement();
// Process the log message if it matches the specified key e.g.'BRK_'
- if (message.startsWith(messageKey+"_"))
+ if (!message.equals("package"))
{
// Method names can't have a '-' in them so lets make it '_'
// e.g. BRK-STARTUP -> BRK_STARTUP
@@ -298,7 +297,7 @@ public class GenerateLogMessages
logEntryData.put("name", message);
//Retrieve the actual log message string.
- String logMessage = _messages.getString(message);
+ String logMessage = messages.getString(message);
// Store the value of the property so we can add it to the
// Javadoc of the method.
@@ -321,9 +320,9 @@ public class GenerateLogMessages
/**
* This method is responsible for extracting the options form the given log
* message and providing a HashMap with the expected data:
- * - options (list)
- * - name ('opt1')
- * - value ('AutoDelete')
+ * - options (list)
+ * - name ('opt1')
+ * - value ('AutoDelete')
*
* The options list that this method provides must contain HashMaps that
* have two entries. A 'name' and a 'value' these strings are important as
@@ -337,6 +336,7 @@ public class GenerateLogMessages
* aid readability.
*
* @param logMessage the message from the properties file
+ *
* @return list of option data
*/
private List<HashMap<String, String>> extractOptions(String logMessage)
@@ -396,9 +396,9 @@ public class GenerateLogMessages
* This method is responsible for extract the parameters that are requried
* for this log message. The data is returned in a HashMap that has the
* following structure:
- * - parameters (list)
- * - type ('String'|'Number')
- * - name ('param1')
+ * - parameters (list)
+ * - type ('String'|'Number')
+ * - name ('param1')
*
* The parameters list that is provided must contain HashMaps that have the
* two named entries. A 'type' and a 'name' these strings are importans as
@@ -413,7 +413,9 @@ public class GenerateLogMessages
* MessageFormat class for formating the log message.
*
* @param logMessage the message from the properties file
+ *
* @return list of option data
+ *
* @throws InvalidTypeException if the FormatType is specified and is not 'number'
*/
private List<HashMap<String, String>> extractParameters(String logMessage)
@@ -447,7 +449,6 @@ public class GenerateLogMessages
// e.g. {0} vs {0,number} vs {0,number,xxxx}
int typeIndex = parametersString[index].indexOf(",");
-
// The parameter type
String type;
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org