All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lecousin.framework.serialization.rules.RenameAttribute Maven / Gradle / Ivy

The newest version!
package net.lecousin.framework.serialization.rules;

import java.util.List;

import net.lecousin.framework.serialization.SerializationClass;
import net.lecousin.framework.serialization.SerializationContext;
import net.lecousin.framework.serialization.SerializationContextPattern;
import net.lecousin.framework.serialization.SerializationClass.Attribute;

/**
 * This rule change the name of a specific attribute in a class.
 */
public class RenameAttribute implements SerializationRule {

	/** Constructor. */
	public RenameAttribute(SerializationContextPattern.OnClassAttribute contextPattern, String newName) {
		this.contextPattern = contextPattern;
		this.newName = newName;
	}

	/** Constructor. */
	public RenameAttribute(Class type, String originalName, String newName) {
		this(new SerializationContextPattern.OnClassAttribute(type, originalName), newName);
	}
	
	private SerializationContextPattern.OnClassAttribute contextPattern;
	private String newName;
	
	@Override
	public boolean apply(SerializationClass type, SerializationContext context, List rules, boolean serializing) {
		Attribute a = contextPattern.getAttribute(type, context);
		if (a != null)
			a.renameTo(newName);
		return false;
	}
	
	@Override
	public boolean isEquivalent(SerializationRule rule) {
		if (!(rule instanceof RenameAttribute)) return false;
		RenameAttribute r = (RenameAttribute)rule;
		return contextPattern.isEquivalent(r.contextPattern);
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy