/* * Copyright (c) 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.emf.cdo.common.id; import org.eclipse.net4j.util.UUIDGenerator; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EcoreUtil; /** * Generates {@link CDOID IDs}. * * @author Eike Stepper * @since 4.1 */ public interface CDOIDGenerator { /** * Generates {@link CDOID#NULL NULL} values. */ public static final CDOIDGenerator NULL = new CDOIDGenerator() { public CDOID generateCDOID(EObject object) { return CDOID.NULL; } public void reset() { // Do nothing } }; /** * Generates {@link EcoreUtil#generateUUID(byte[]) UUID} values. */ public static final CDOIDGenerator UUID = new CDOIDGenerator() { public CDOID generateCDOID(EObject object) { byte[] bytes = new byte[16]; UUIDGenerator.DEFAULT.generate(bytes); return CDOIDUtil.createUUID(bytes); } public void reset() { // Do nothing } }; /** * Generates a {@link CDOID}. * * @param object * the object to generate a new CDOID for if available, <code>null</code> otherwise. */ public CDOID generateCDOID(EObject object); /** * Called at the end of a commit operation to give this ID generator a chance to reset its sequence of IDs. */ public void reset(); }