Author: sebb
Date: Sun Sep 9 17:41:19 2007
New Revision: 574110
URL: http://svn.apache.org/viewvc?rev=574110&view=rev
Log:
SaveService no longer needs to instantiate classes
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java?rev=574110&r1=574109&r2=574110&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java Sun
Sep 9 17:41:19 2007
@@ -55,18 +55,42 @@
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.mapper.CannotResolveClassException;
import com.thoughtworks.xstream.mapper.Mapper;
+import com.thoughtworks.xstream.mapper.MapperWrapper;
import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.Converter;
import
com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
/**
- * author Mike Stover
- * author <a href="mailto:kcassell@apache.org">Keith Cassell </a>
+ * Handles setting up XStream serialisation.
+ * The class reads alias definitions from saveservice.properties.
+ *
*/
public class SaveService {
- private static final XStream saver = new XStream(new
PureJavaReflectionProvider());
-
+
private static final Logger log = LoggingManager.getLoggerForClass();
+
+ private static final XStream saver = new XStream(new
PureJavaReflectionProvider()){
+ // Override wrapMapper in order to insert the Wrapper in the chain
+ protected MapperWrapper wrapMapper(MapperWrapper next) {
+ // Provide our own aliasing using strings rather than classes
+ return new MapperWrapper(next){
+ // Translate alias to classname and then delegate to wrapped
class
+ public Class realClass(String alias) {
+ String fullName = aliasToClass(alias);
+ return super.realClass(fullName == null ? alias : fullName);
+ }
+ // Translate to alias and then delegate to wrapped class
+ public String serializedClass(Class type) {
+ if (type == null) {
+ return super.serializedClass(type);
+ }
+ String alias = classToAlias(type.getName());
+ return alias == null ? super.serializedClass(type) : alias ;
+ }
+ };
+ }
+ };
+
// The XML header, with placeholder for encoding, since that is
controlled by property
private static final String XML_HEADER = "<?xml version=\"1.0\"
encoding=\"<ph>\"?>"; // $NON-NLS-1$
@@ -132,20 +156,11 @@
// Helper method to simplify alias creation from properties
private static void makeAlias(String alias, String clazz) {
- try {
- saver.alias(alias, Class.forName(clazz));
- aliasToClass.setProperty(alias,clazz);
- Object oldval=classToAlias.setProperty(clazz,alias);
- if (oldval != null) {
- log.error("Duplicate alias detected for "+clazz+": "+alias+" &
"+oldval);
- }
- } catch (ClassNotFoundException e) {
- log.warn("Could not set up alias " + alias + " " +
e.toString());
- } catch (NoClassDefFoundError e) {
- log.warn("Could not set up alias " + alias + " " +
e.toString());
- } catch (Throwable e) {// (e.g. InternalError : may happen on
headless boxes
- log.error("Could not set up alias " + alias,e);
- }
+ aliasToClass.setProperty(alias,clazz);
+ Object oldval=classToAlias.setProperty(clazz,alias);
+ if (oldval != null) {
+ log.error("Duplicate alias detected for "+clazz+": "+alias+" &
"+oldval);
+ }
}
public static Properties loadProperties() throws IOException{
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=574110&r1=574109&r2=574110&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sun Sep 9 17:41:19 2007
@@ -27,6 +27,20 @@
<!-- =================== -->
+<h3>Version 2.3.1</h3>
+
+<h4>Bug fixes</h4>
+<ul>
+<li>SaveService no longer needs to instantiate classes</li>
+</ul>
+
+<h4>Improvements</h4>
+<ul>
+<li></li>
+</ul>
+
+<!-- =================== -->
+
<h3>Version 2.3</h3>
<h3>Fixes since 2.3RC4</h3>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]