summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2007-04-01 00:00:07 +0000
committerBrian S. O'Neill <bronee@gmail.com>2007-04-01 00:00:07 +0000
commit641a7812d439daca3045e7471b604beb807c1891 (patch)
tree8d4c9535d122b96131739d9ac168969235a54c1c
parentc7f8a6ef89b43a908e677df76f35cc425b9c7f91 (diff)
Move Storable code generation support to separate package.
-rw-r--r--pom.xml2
-rw-r--r--src/main/java/com/amazon/carbonado/cursor/MergeSortBuffer.java3
-rw-r--r--src/main/java/com/amazon/carbonado/gen/CodeBuilderUtil.java (renamed from src/main/java/com/amazon/carbonado/spi/CodeBuilderUtil.java)42
-rw-r--r--src/main/java/com/amazon/carbonado/gen/CommonMethodNames.java (renamed from src/main/java/com/amazon/carbonado/spi/CommonMethodNames.java)2
-rw-r--r--src/main/java/com/amazon/carbonado/gen/MasterFeature.java (renamed from src/main/java/com/amazon/carbonado/spi/MasterFeature.java)2
-rw-r--r--src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java (renamed from src/main/java/com/amazon/carbonado/spi/MasterStorableGenerator.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/MasterSupport.java (renamed from src/main/java/com/amazon/carbonado/spi/MasterSupport.java)2
-rw-r--r--src/main/java/com/amazon/carbonado/gen/StorableGenerator.java (renamed from src/main/java/com/amazon/carbonado/spi/StorableGenerator.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/StorableSerializer.java (renamed from src/main/java/com/amazon/carbonado/spi/StorableSerializer.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/StorableSupport.java (renamed from src/main/java/com/amazon/carbonado/spi/StorableSupport.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/TriggerSupport.java (renamed from src/main/java/com/amazon/carbonado/spi/TriggerSupport.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/WrappedSupport.java (renamed from src/main/java/com/amazon/carbonado/spi/WrappedSupport.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/gen/package-info.java22
-rw-r--r--src/main/java/com/amazon/carbonado/info/ConversionComparator.java (renamed from src/main/java/com/amazon/carbonado/spi/ConversionComparator.java)4
-rw-r--r--src/main/java/com/amazon/carbonado/info/StorableIntrospector.java48
-rw-r--r--src/main/java/com/amazon/carbonado/qe/JoinedQueryExecutor.java2
-rw-r--r--src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java4
-rw-r--r--src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java2
-rw-r--r--src/main/java/com/amazon/carbonado/raw/RawStorableGenerator.java13
-rw-r--r--src/main/java/com/amazon/carbonado/raw/RawSupport.java2
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorableGenerator.java15
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/JDBCSupport.java2
-rw-r--r--src/main/java/com/amazon/carbonado/spi/WrappedStorage.java3
-rw-r--r--src/main/java/com/amazon/carbonado/spi/package-info.java6
-rw-r--r--src/main/java/com/amazon/carbonado/synthetic/SyntheticStorableReferenceBuilder.java2
25 files changed, 112 insertions, 90 deletions
diff --git a/pom.xml b/pom.xml
index 73f55ed..cc95285 100644
--- a/pom.xml
+++ b/pom.xml
@@ -184,7 +184,7 @@
</group>
<group>
<title>Service Provider Interface</title>
- <packages>com.amazon.carbonado.repo.indexed:com.amazon.carbonado.spi:com.amazon.carbonado.raw:com.amazon.carbonado.synthetic:com.amazon.carbonado.qe</packages>
+ <packages>com.amazon.carbonado.repo.indexed:com.amazon.carbonado.gen:com.amazon.carbonado.spi:com.amazon.carbonado.raw:com.amazon.carbonado.synthetic:com.amazon.carbonado.qe</packages>
</group>
<group>
<title>Generic Utilities</title>
diff --git a/src/main/java/com/amazon/carbonado/cursor/MergeSortBuffer.java b/src/main/java/com/amazon/carbonado/cursor/MergeSortBuffer.java
index adaff14..3279487 100644
--- a/src/main/java/com/amazon/carbonado/cursor/MergeSortBuffer.java
+++ b/src/main/java/com/amazon/carbonado/cursor/MergeSortBuffer.java
@@ -43,9 +43,10 @@ import com.amazon.carbonado.Storable;
import com.amazon.carbonado.Storage;
import com.amazon.carbonado.SupportException;
+import com.amazon.carbonado.gen.StorableSerializer;
+
import com.amazon.carbonado.spi.RAFInputStream;
import com.amazon.carbonado.spi.RAFOutputStream;
-import com.amazon.carbonado.spi.StorableSerializer;
/**
* Sort buffer implemented via a merge sort algorithm. If there are too many
diff --git a/src/main/java/com/amazon/carbonado/spi/CodeBuilderUtil.java b/src/main/java/com/amazon/carbonado/gen/CodeBuilderUtil.java
index 0623f94..c1f26a0 100644
--- a/src/main/java/com/amazon/carbonado/spi/CodeBuilderUtil.java
+++ b/src/main/java/com/amazon/carbonado/gen/CodeBuilderUtil.java
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import java.util.HashSet;
import java.util.Set;
@@ -39,7 +39,7 @@ import org.cojen.util.ClassInjector;
import com.amazon.carbonado.Storable;
import com.amazon.carbonado.SupportException;
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
/**
* Collection of useful utilities for generating Carbonado code.
@@ -168,34 +168,6 @@ public class CodeBuilderUtil {
}
/**
- * Returns a new modifiable mapping of method signatures to methods.
- *
- * @return map of {@link #createSig signatures} to methods
- */
- public static Map<String, Method> gatherAllDeclaredMethods(Class clazz) {
- Map<String, Method> methods = new HashMap<String, Method>();
- gatherAllDeclaredMethods(methods, clazz);
- return methods;
- }
-
- private static void gatherAllDeclaredMethods(Map<String, Method> methods, Class clazz) {
- for (Method m : clazz.getDeclaredMethods()) {
- String desc = createSig(m);
- if (!methods.containsKey(desc)) {
- methods.put(desc, m);
- }
- }
-
- Class superclass = clazz.getSuperclass();
- if (superclass != null) {
- gatherAllDeclaredMethods(methods, superclass);
- }
- for (Class c : clazz.getInterfaces()) {
- gatherAllDeclaredMethods(methods, c);
- }
- }
-
- /**
* Returns true if a public final method exists which matches the given
* specification.
*/
@@ -377,16 +349,6 @@ public class CodeBuilderUtil {
}
/**
- * Create a representation of the signature which includes the method name.
- * This uniquely identifies the method.
- *
- * @param m method to describe
- */
- public static String createSig(Method m) {
- return m.getName() + ':' + MethodDesc.forMethod(m).getDescriptor();
- }
-
- /**
* Converts a value on the stack. If "to" type is a String, then conversion
* may call the String.valueOf(from).
*/
diff --git a/src/main/java/com/amazon/carbonado/spi/CommonMethodNames.java b/src/main/java/com/amazon/carbonado/gen/CommonMethodNames.java
index 8a011c9..4e56e0a 100644
--- a/src/main/java/com/amazon/carbonado/spi/CommonMethodNames.java
+++ b/src/main/java/com/amazon/carbonado/gen/CommonMethodNames.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
/**
* Collection of constant method names for the public API.
diff --git a/src/main/java/com/amazon/carbonado/spi/MasterFeature.java b/src/main/java/com/amazon/carbonado/gen/MasterFeature.java
index 1ec1fc3..7875d49 100644
--- a/src/main/java/com/amazon/carbonado/spi/MasterFeature.java
+++ b/src/main/java/com/amazon/carbonado/gen/MasterFeature.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
/**
* Master feature to enable when using {@link MasterStorableGenerator}.
diff --git a/src/main/java/com/amazon/carbonado/spi/MasterStorableGenerator.java b/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java
index 3de8fb5..17efb70 100644
--- a/src/main/java/com/amazon/carbonado/spi/MasterStorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import java.lang.reflect.Method;
import java.util.EnumSet;
@@ -49,7 +49,7 @@ import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.sequence.SequenceValueProducer;
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
/**
* Generates and caches abstract implementations of {@link Storable} types
diff --git a/src/main/java/com/amazon/carbonado/spi/MasterSupport.java b/src/main/java/com/amazon/carbonado/gen/MasterSupport.java
index dd48194..cd1a183 100644
--- a/src/main/java/com/amazon/carbonado/spi/MasterSupport.java
+++ b/src/main/java/com/amazon/carbonado/gen/MasterSupport.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import com.amazon.carbonado.PersistException;
import com.amazon.carbonado.Storable;
diff --git a/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java
index 0c2d50d..cbfeab9 100644
--- a/src/main/java/com/amazon/carbonado/spi/StorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/gen/StorableGenerator.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import java.lang.annotation.Annotation;
import java.lang.ref.Reference;
@@ -66,7 +66,7 @@ import com.amazon.carbonado.info.StorablePropertyAdapter;
import com.amazon.carbonado.info.StorablePropertyAnnotation;
import com.amazon.carbonado.info.StorablePropertyConstraint;
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
/**
* Generates and caches abstract and wrapped implementations of {@link
diff --git a/src/main/java/com/amazon/carbonado/spi/StorableSerializer.java b/src/main/java/com/amazon/carbonado/gen/StorableSerializer.java
index 83621e9..5115854 100644
--- a/src/main/java/com/amazon/carbonado/spi/StorableSerializer.java
+++ b/src/main/java/com/amazon/carbonado/gen/StorableSerializer.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import java.io.DataInput;
import java.io.DataOutput;
@@ -50,7 +50,7 @@ import com.amazon.carbonado.SupportException;
import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
import com.amazon.carbonado.raw.GenericEncodingStrategy;
diff --git a/src/main/java/com/amazon/carbonado/spi/StorableSupport.java b/src/main/java/com/amazon/carbonado/gen/StorableSupport.java
index bf2609c..16fed67 100644
--- a/src/main/java/com/amazon/carbonado/spi/StorableSupport.java
+++ b/src/main/java/com/amazon/carbonado/gen/StorableSupport.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import com.amazon.carbonado.Repository;
import com.amazon.carbonado.Storable;
/**
- *
+ * Provides runtime support for Storable classes generated by {@link StorableGenerator}.
*
* @author Brian S O'Neill
*/
diff --git a/src/main/java/com/amazon/carbonado/spi/TriggerSupport.java b/src/main/java/com/amazon/carbonado/gen/TriggerSupport.java
index 0e40c38..39b7806 100644
--- a/src/main/java/com/amazon/carbonado/spi/TriggerSupport.java
+++ b/src/main/java/com/amazon/carbonado/gen/TriggerSupport.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import com.amazon.carbonado.Storable;
import com.amazon.carbonado.Trigger;
/**
- *
+ * Provides runtime support for Storable classes generated by {@link StorableGenerator}.
*
* @author Brian S O'Neill
*/
diff --git a/src/main/java/com/amazon/carbonado/spi/WrappedSupport.java b/src/main/java/com/amazon/carbonado/gen/WrappedSupport.java
index 24e2c02..78f58b3 100644
--- a/src/main/java/com/amazon/carbonado/spi/WrappedSupport.java
+++ b/src/main/java/com/amazon/carbonado/gen/WrappedSupport.java
@@ -16,14 +16,14 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.gen;
import com.amazon.carbonado.FetchException;
import com.amazon.carbonado.PersistException;
import com.amazon.carbonado.Storable;
/**
- *
+ * Provides runtime support for Storable classes generated by {@link StorableGenerator}.
*
* @author Brian S O'Neill
*/
diff --git a/src/main/java/com/amazon/carbonado/gen/package-info.java b/src/main/java/com/amazon/carbonado/gen/package-info.java
new file mode 100644
index 0000000..007ee0b
--- /dev/null
+++ b/src/main/java/com/amazon/carbonado/gen/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2006 Amazon Technologies, Inc. or its affiliates.
+ * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
+ * of Amazon Technologies, Inc. or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Storable code generation support intended for use by repository implementations.
+ */
+package com.amazon.carbonado.gen;
diff --git a/src/main/java/com/amazon/carbonado/spi/ConversionComparator.java b/src/main/java/com/amazon/carbonado/info/ConversionComparator.java
index aed00b1..dc88f95 100644
--- a/src/main/java/com/amazon/carbonado/spi/ConversionComparator.java
+++ b/src/main/java/com/amazon/carbonado/info/ConversionComparator.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.amazon.carbonado.spi;
+package com.amazon.carbonado.info;
import java.util.Comparator;
@@ -27,7 +27,7 @@ import org.cojen.classfile.TypeDesc;
*
* @author Brian S O'Neill
*/
-public class ConversionComparator implements Comparator<Class> {
+class ConversionComparator implements Comparator<Class> {
private final TypeDesc mFrom;
public ConversionComparator(Class fromType) {
diff --git a/src/main/java/com/amazon/carbonado/info/StorableIntrospector.java b/src/main/java/com/amazon/carbonado/info/StorableIntrospector.java
index c527371..f318c33 100644
--- a/src/main/java/com/amazon/carbonado/info/StorableIntrospector.java
+++ b/src/main/java/com/amazon/carbonado/info/StorableIntrospector.java
@@ -40,6 +40,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.cojen.classfile.MethodDesc;
import org.cojen.classfile.TypeDesc;
import org.cojen.util.BeanComparator;
import org.cojen.util.BeanProperty;
@@ -67,9 +68,6 @@ import com.amazon.carbonado.adapter.AdapterDefinition;
import com.amazon.carbonado.constraint.ConstraintDefinition;
import com.amazon.carbonado.lob.Lob;
-import com.amazon.carbonado.spi.CodeBuilderUtil;
-import com.amazon.carbonado.spi.ConversionComparator;
-
/**
* Supports examination of {@link Storable} types, returning all metadata
* associated with it. As part of the examination, all annotations are gathered
@@ -470,7 +468,7 @@ public class StorableIntrospector {
// Gather all methods. We'll be removing them as we implement them,
// and if there are any abstract ones left over at the end, why,
// that would be bad.
- Map<String, Method> methods = CodeBuilderUtil.gatherAllDeclaredMethods(type);
+ Map<String, Method> methods = gatherAllDeclaredMethods(type);
// Remove methods not abstract or defined explicitly in
// Storable. Storable methods still must be implemented, but not as
@@ -541,7 +539,7 @@ public class StorableIntrospector {
}
if (readMethod != null) {
- String sig = CodeBuilderUtil.createSig(readMethod);
+ String sig = createSig(readMethod);
if (methods.containsKey(sig)) {
methods.remove(sig);
properties.put(property.getName(), storableProp);
@@ -551,7 +549,7 @@ public class StorableIntrospector {
}
if (writeMethod != null) {
- String sig = CodeBuilderUtil.createSig(writeMethod);
+ String sig = createSig(writeMethod);
if (methods.containsKey(sig)) {
methods.remove(sig);
properties.put(property.getName(), storableProp);
@@ -1129,6 +1127,44 @@ public class StorableIntrospector {
return (StorablePropertyAdapter[]) list.toArray(new StorablePropertyAdapter[list.size()]);
}
+ /**
+ * Returns a new modifiable mapping of method signatures to methods.
+ *
+ * @return map of {@link #createSig signatures} to methods
+ */
+ private static Map<String, Method> gatherAllDeclaredMethods(Class clazz) {
+ Map<String, Method> methods = new HashMap<String, Method>();
+ gatherAllDeclaredMethods(methods, clazz);
+ return methods;
+ }
+
+ private static void gatherAllDeclaredMethods(Map<String, Method> methods, Class clazz) {
+ for (Method m : clazz.getDeclaredMethods()) {
+ String desc = createSig(m);
+ if (!methods.containsKey(desc)) {
+ methods.put(desc, m);
+ }
+ }
+
+ Class superclass = clazz.getSuperclass();
+ if (superclass != null) {
+ gatherAllDeclaredMethods(methods, superclass);
+ }
+ for (Class c : clazz.getInterfaces()) {
+ gatherAllDeclaredMethods(methods, c);
+ }
+ }
+
+ /**
+ * Create a representation of the signature which includes the method name.
+ * This uniquely identifies the method.
+ *
+ * @param m method to describe
+ */
+ private static String createSig(Method m) {
+ return m.getName() + ':' + MethodDesc.forMethod(m).getDescriptor();
+ }
+
private static final class Info<S extends Storable> implements StorableInfo<S> {
private final Class<S> mType;
private final String[] mAliases;
diff --git a/src/main/java/com/amazon/carbonado/qe/JoinedQueryExecutor.java b/src/main/java/com/amazon/carbonado/qe/JoinedQueryExecutor.java
index 00ffda3..0f4e64d 100644
--- a/src/main/java/com/amazon/carbonado/qe/JoinedQueryExecutor.java
+++ b/src/main/java/com/amazon/carbonado/qe/JoinedQueryExecutor.java
@@ -53,7 +53,7 @@ import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.util.QuickConstructorGenerator;
-import com.amazon.carbonado.spi.CodeBuilderUtil;
+import com.amazon.carbonado.gen.CodeBuilderUtil;
/**
* QueryExecutor which joins a <i>source</i> and <i>target</i> executor,
diff --git a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
index c22881e..cba6776 100644
--- a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
+++ b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
@@ -38,8 +38,8 @@ import com.amazon.carbonado.lob.Blob;
import com.amazon.carbonado.lob.Clob;
import com.amazon.carbonado.lob.Lob;
-import com.amazon.carbonado.spi.StorableGenerator;
-import com.amazon.carbonado.spi.TriggerSupport;
+import com.amazon.carbonado.gen.StorableGenerator;
+import com.amazon.carbonado.gen.TriggerSupport;
import com.amazon.carbonado.info.ChainedProperty;
import com.amazon.carbonado.info.Direction;
diff --git a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java
index 0ef4846..43677f2 100644
--- a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java
+++ b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java
@@ -50,7 +50,7 @@ import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.layout.Layout;
-import com.amazon.carbonado.spi.CodeBuilderUtil;
+import com.amazon.carbonado.gen.CodeBuilderUtil;
import com.amazon.carbonado.util.ThrowUnchecked;
import com.amazon.carbonado.util.QuickConstructorGenerator;
diff --git a/src/main/java/com/amazon/carbonado/raw/RawStorableGenerator.java b/src/main/java/com/amazon/carbonado/raw/RawStorableGenerator.java
index 880bb7c..f475cab 100644
--- a/src/main/java/com/amazon/carbonado/raw/RawStorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/raw/RawStorableGenerator.java
@@ -43,13 +43,12 @@ import com.amazon.carbonado.SupportException;
import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
-import com.amazon.carbonado.spi.MasterFeature;
-import com.amazon.carbonado.spi.MasterStorableGenerator;
-import com.amazon.carbonado.spi.MasterSupport;
-import com.amazon.carbonado.spi.StorableGenerator;
-import com.amazon.carbonado.spi.TriggerSupport;
-
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import com.amazon.carbonado.gen.MasterFeature;
+import com.amazon.carbonado.gen.MasterStorableGenerator;
+import com.amazon.carbonado.gen.MasterSupport;
+import com.amazon.carbonado.gen.StorableGenerator;
+import com.amazon.carbonado.gen.TriggerSupport;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
/**
* Generates and caches abstract implementations of {@link Storable} types
diff --git a/src/main/java/com/amazon/carbonado/raw/RawSupport.java b/src/main/java/com/amazon/carbonado/raw/RawSupport.java
index f6253c9..63577d7 100644
--- a/src/main/java/com/amazon/carbonado/raw/RawSupport.java
+++ b/src/main/java/com/amazon/carbonado/raw/RawSupport.java
@@ -25,7 +25,7 @@ import com.amazon.carbonado.Storable;
import com.amazon.carbonado.lob.Blob;
import com.amazon.carbonado.lob.Clob;
-import com.amazon.carbonado.spi.MasterSupport;
+import com.amazon.carbonado.gen.MasterSupport;
/**
* Provides runtime support for Storable classes generated by {@link RawStorableGenerator}.
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorableGenerator.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorableGenerator.java
index 6a6a3b6..2528cbf 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorableGenerator.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorableGenerator.java
@@ -53,14 +53,13 @@ import com.amazon.carbonado.lob.Lob;
import com.amazon.carbonado.info.StorablePropertyAdapter;
-import com.amazon.carbonado.spi.CodeBuilderUtil;
-import com.amazon.carbonado.spi.MasterFeature;
-import com.amazon.carbonado.spi.MasterStorableGenerator;
-import com.amazon.carbonado.spi.MasterSupport;
-import com.amazon.carbonado.spi.StorableGenerator;
-import com.amazon.carbonado.spi.TriggerSupport;
-
-import static com.amazon.carbonado.spi.CommonMethodNames.*;
+import com.amazon.carbonado.gen.CodeBuilderUtil;
+import com.amazon.carbonado.gen.MasterFeature;
+import com.amazon.carbonado.gen.MasterStorableGenerator;
+import com.amazon.carbonado.gen.MasterSupport;
+import com.amazon.carbonado.gen.StorableGenerator;
+import com.amazon.carbonado.gen.TriggerSupport;
+import static com.amazon.carbonado.gen.CommonMethodNames.*;
/**
* Generates concrete implementations of {@link Storable} types for
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCSupport.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCSupport.java
index f178b7d..304c816 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCSupport.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCSupport.java
@@ -24,7 +24,7 @@ import com.amazon.carbonado.Storable;
import com.amazon.carbonado.FetchException;
import com.amazon.carbonado.PersistException;
-import com.amazon.carbonado.spi.MasterSupport;
+import com.amazon.carbonado.gen.MasterSupport;
/**
*
diff --git a/src/main/java/com/amazon/carbonado/spi/WrappedStorage.java b/src/main/java/com/amazon/carbonado/spi/WrappedStorage.java
index 71f6fbc..ea12223 100644
--- a/src/main/java/com/amazon/carbonado/spi/WrappedStorage.java
+++ b/src/main/java/com/amazon/carbonado/spi/WrappedStorage.java
@@ -31,6 +31,9 @@ import com.amazon.carbonado.TriggerFactory;
import com.amazon.carbonado.filter.Filter;
import com.amazon.carbonado.util.QuickConstructorGenerator;
+import com.amazon.carbonado.gen.StorableGenerator;
+import com.amazon.carbonado.gen.WrappedSupport;
+
/**
* Abstract storage that wraps all returned Storables and Queries, including
* those returned from joins. Property access methods (get and set) are
diff --git a/src/main/java/com/amazon/carbonado/spi/package-info.java b/src/main/java/com/amazon/carbonado/spi/package-info.java
index 2a6abad..b50105b 100644
--- a/src/main/java/com/amazon/carbonado/spi/package-info.java
+++ b/src/main/java/com/amazon/carbonado/spi/package-info.java
@@ -17,8 +17,8 @@
*/
/**
- * Core Service Provider Interface for Carbonado. Repositories are free to use
- * this package to aid in their implementation. User-level applications have no
- * need to use this package.
+ * Service Provider Interface for Carbonado. Repositories are free to use this
+ * package to aid in their implementation. User-level applications have no need
+ * to use this package.
*/
package com.amazon.carbonado.spi;
diff --git a/src/main/java/com/amazon/carbonado/synthetic/SyntheticStorableReferenceBuilder.java b/src/main/java/com/amazon/carbonado/synthetic/SyntheticStorableReferenceBuilder.java
index fb8b1fc..2c9c0dc 100644
--- a/src/main/java/com/amazon/carbonado/synthetic/SyntheticStorableReferenceBuilder.java
+++ b/src/main/java/com/amazon/carbonado/synthetic/SyntheticStorableReferenceBuilder.java
@@ -33,7 +33,7 @@ import com.amazon.carbonado.info.Direction;
import com.amazon.carbonado.info.StorableInfo;
import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
-import com.amazon.carbonado.spi.CodeBuilderUtil;
+import com.amazon.carbonado.gen.CodeBuilderUtil;
import com.amazon.carbonado.util.ThrowUnchecked;
import org.cojen.classfile.ClassFile;