001 package org.cumulus4j.store.reflectionwrapper.gae; 002 003 import org.cumulus4j.store.reflectionwrapper.ReflectionWrapper; 004 005 public class KeyFactory extends ReflectionWrapper { 006 007 private static KeyFactory instance; 008 009 protected KeyFactory(ClassLoader classLoader) { 010 super(classLoader); 011 } 012 013 public static KeyFactory getInstance() { 014 if (instance == null) 015 instance = new KeyFactory(KeyFactory.class.getClassLoader()); 016 017 return instance; 018 } 019 020 @Override 021 protected String getWrappedClassName() { 022 return "com.google.appengine.api.datastore.KeyFactory"; 023 } 024 025 @Override 026 protected Object createWrappedObject(Class<?> wrappedClass) { 027 throw new UnsupportedOperationException(String.format("The class %s cannot be instantiated! It is solely used in a static way.", getWrappedClassName())); 028 } 029 030 public Key stringToKey(String encoded) { 031 Object wrappedKey = invokeStatic( 032 1, "stringToKey", 033 String.class, 034 encoded 035 ); 036 037 if (wrappedKey == null) 038 throw new IllegalStateException("stringToKey(String) returned null! invocationTargetClass=" + getWrappedClassName()); 039 040 return new Key(this, wrappedKey); 041 } 042 043 public Key createKey(String kind, long id) { 044 Object wrappedKey = invokeStatic( 045 2, "createKey", 046 String.class, 047 long.class, 048 kind, 049 id 050 ); 051 052 if (wrappedKey == null) 053 throw new IllegalStateException("createKey(String, long) returned null! invocationTargetClass=" + getWrappedClassName()); 054 055 return new Key(this, wrappedKey); 056 } 057 058 public String createKeyString(String kind, long id) { 059 String keyString = (String) invokeStatic( 060 3, "createKeyString", 061 String.class, 062 long.class, 063 kind, 064 id 065 ); 066 067 if (keyString == null) 068 throw new IllegalStateException("createKeyString(String, long) returned null! invocationTargetClass=" + getWrappedClassName()); 069 070 return keyString; 071 } 072 }