001 package org.cumulus4j.store.model;
002
003 import java.util.Iterator;
004 import java.util.ServiceLoader;
005
006 import javax.jdo.identity.LongIdentity;
007
008 public class ObjectIdFactory {
009
010 private static ObjectIdFactory instance;
011 static {
012 ServiceLoader<ObjectIdFactory> serviceLoader = ServiceLoader.load(ObjectIdFactory.class);
013 Iterator<ObjectIdFactory> it = serviceLoader.iterator();
014 if (!it.hasNext())
015 throw new IllegalStateException("No ObjectIdFactory service registered!");
016
017 ObjectIdFactory objectIdFactory = it.next();
018
019 if (it.hasNext())
020 throw new IllegalStateException("Multiple ObjectIdFactory services registered!");
021
022 instance = objectIdFactory;
023 }
024
025 public static ObjectIdFactory getInstance() {
026 return instance;
027 }
028
029 /**
030 * @deprecated Do not use this constructor directly! It exists only for the ServiceLoader!
031 * Use {@link #getInstance()} instead!
032 */
033 @Deprecated
034 public ObjectIdFactory() { }
035
036 public Object createObjectId(Class<?> entityClass, long id) {
037 LongIdentity identity = new LongIdentity(entityClass, id);
038 return identity;
039 }
040
041 }