org.hibernate.bytecode.enhance.internal.tracker.CompositeOwnerTracker Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
JPMS Module-Info's for a few of the Jakarta Libraries just until they add them in themselves
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.bytecode.enhance.internal.tracker;
import java.util.Arrays;
import org.hibernate.engine.spi.CompositeOwner;
/**
* small low memory class to keep references to composite owners
*
* @author Ståle W. Pedersen
*/
public final class CompositeOwnerTracker {
private String[] names;
private CompositeOwner[] owners;
public CompositeOwnerTracker() {
names = new String[0];
owners = new CompositeOwner[0];
}
public void add(String name, CompositeOwner owner) {
for ( int i = 0; i < names.length; i++ ) {
if ( names[i].equals( name ) ) {
owners[i] = owner;
return;
}
}
names = Arrays.copyOf( names, names.length + 1 );
names[names.length - 1] = name;
owners = Arrays.copyOf( owners, owners.length + 1 );
owners[owners.length - 1] = owner;
}
public void callOwner(String fieldName) {
for ( int i = 0; i < owners.length ; i++ ) {
if ( owners[i] != null ) {
owners[i].$$_hibernate_trackChange( names[i] + fieldName );
}
}
}
public void removeOwner(String name) {
for ( int i = 0; i < names.length; i++ ) {
if ( name.equals( names[i] ) ) {
final String[] newNames = Arrays.copyOf( names, names.length - 1 );
System.arraycopy( names, i + 1, newNames, i, newNames.length - i);
names = newNames;
final CompositeOwner[] newOwners = Arrays.copyOf( owners, owners.length - 1 );
System.arraycopy( owners, i + 1, newOwners, i, newOwners.length - i);
owners = newOwners;
return;
}
}
}
}