com.thoughtworks.xstream.mapper.CGLIBMapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.servicemix.bundles.xstream
Show all versions of org.apache.servicemix.bundles.xstream
This OSGi bundle wraps ${pkgArtifactId} ${pkgVersion} jar file.
/*
* Copyright (C) 2006, 2007, 2008 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 08. April 2006 by Joerg Schaible
*/
package com.thoughtworks.xstream.mapper;
import net.sf.cglib.proxy.Enhancer;
/**
* Mapper that detects proxies generated by the CGLIB enhancer. The implementation modifies
* the name, so that it can identify these types. Note, that this mapper relies on the CGLIB
* converters:
*
* - CGLIBEnhancedConverter
*
*
* @author Jörg Schaible
* @since 1.2
*/
public class CGLIBMapper extends MapperWrapper {
private static String DEFAULT_NAMING_MARKER = "$$EnhancerByCGLIB$$";
private final String alias;
public interface Marker {
}
public CGLIBMapper(Mapper wrapped) {
this(wrapped, "CGLIB-enhanced-proxy");
}
public CGLIBMapper(Mapper wrapped, String alias) {
super(wrapped);
this.alias = alias;
}
public String serializedClass(Class type) {
String serializedName = super.serializedClass(type);
if (type == null) {
return serializedName;
}
String typeName = type.getName();
return typeName.equals(serializedName)
&& typeName.indexOf(DEFAULT_NAMING_MARKER) > 0
&& Enhancer.isEnhanced(type) ? alias : serializedName;
}
public Class realClass(String elementName) {
return elementName.equals(alias) ? Marker.class : super.realClass(elementName);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy