/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ package com.sleepycat.persist.evolve; /** * A mutation for renaming a class or field without changing the instance or * field value. For example: * <pre class="code"> * package my.package; * * // The old class. Version 0 is implied. * // * {@literal @Entity} * class Person { * String name; * } * * // The new class. A new version number must be assigned. * // * {@literal @Entity(version=1)} * class Human { * String fullName; * } * * // Add the mutations. * // * Mutations mutations = new Mutations(); * * mutations.addRenamer(new Renamer("my.package.Person", 0, * Human.class.getName())); * * mutations.addRenamer(new Renamer("my.package.Person", 0, * "name", "fullName")); * * // Configure the mutations as described {@link Mutations here}.</pre> * * * @see com.sleepycat.persist.evolve Class Evolution * @author Mark Hayes */ public class Renamer extends Mutation { private static final long serialVersionUID = 2238151684405810427L; private String newName; /** * Creates a mutation for renaming the class of all instances of the given * class version. */ public Renamer(String fromClass, int fromVersion, String toClass) { super(fromClass, fromVersion, null); newName = toClass; } /** * Creates a mutation for renaming the given field for all instances of the * given class version. */ public Renamer(String declaringClass, int declaringClassVersion, String fromField, String toField) { super(declaringClass, declaringClassVersion, fromField); newName = toField; } /** * Returns the new class or field name specified in the constructor. */ public String getNewName() { return newName; } /** * Returns true if the new class name is equal in this object and given * object, and if the {@link Mutation#equals} method returns true. */ @Override public boolean equals(Object other) { if (other instanceof Renamer) { Renamer o = (Renamer) other; return newName.equals(o.newName) && super.equals(other); } else { return false; } } @Override public int hashCode() { return newName.hashCode() + super.hashCode(); } @Override public String toString() { return "[Renamer " + super.toString() + " NewName: " + newName + ']'; } }