diff options
Diffstat (limited to 'projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java')
| -rw-r--r-- | projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java index 17d6454..8624458 100644 --- a/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java +++ b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/access/EOAdaptor.java @@ -35,10 +35,11 @@ import net.wotonomy.foundation.NSTimestamp; public abstract class EOAdaptor { protected String _name; - protected NSDictionary _connectionDictionary = NSDictionary.EmptyDictionary; - protected NSMutableArray _contexts = new NSMutableArray(); - protected Class _expressionClass; - private static NSMutableDictionary _expressionClassesByName = new NSMutableDictionary(); + @SuppressWarnings("unchecked") + protected NSDictionary<String, Object> _connectionDictionary = (NSDictionary<String, Object>) NSDictionary.EmptyDictionary; + protected NSMutableArray<Object> _contexts = new NSMutableArray<>(); + protected Class<? extends EOSQLExpression> _expressionClass; + private static NSMutableDictionary<String, String> _expressionClassesByName = new NSMutableDictionary<>(); public EOAdaptor(String name) { super(); @@ -75,8 +76,9 @@ public abstract class EOAdaptor { * @param name The name of the adaptor, or a fully qualified class name. * @return */ + @SuppressWarnings("unchecked") public static EOAdaptor adaptorWithName(String name) { - Class adaptorClass = null; + Class<? extends EOAdaptor> adaptorClass = null; String cname = null; if (name.endsWith("Adaptor") && name.indexOf('.') > 0) { cname = name; @@ -88,15 +90,15 @@ public abstract class EOAdaptor { cname = "net.wotonomy." + name.toLowerCase() + "adaptor." + name + "Adaptor"; } try { - adaptorClass = Class.forName(cname); + adaptorClass = (Class<? extends EOAdaptor>) Class.forName(cname); } catch (ClassNotFoundException ex) { throw new IllegalArgumentException("Cannot find class named " + name); } EOAdaptor adaptor = null; - java.lang.reflect.Constructor callme = null; + java.lang.reflect.Constructor<? extends EOAdaptor> callme = null; try { callme = adaptorClass.getConstructor(new Class[] { String.class }); - adaptor = (EOAdaptor) callme.newInstance((Object[]) new String[] { name }); + adaptor = callme.newInstance((Object[]) new String[] { name }); } catch (ClassCastException ex) { throw new IllegalArgumentException( "Class " + adaptorClass.getName() + " must inherit from net.wotonomy.access.EOAdaptor"); @@ -130,13 +132,13 @@ public abstract class EOAdaptor { } public void assignExternalInfoForEntireModel(EOModel model) { - NSArray ents = model.entities(); + NSArray<EOEntity> ents = model.entities(); for (int i = 0; i < ents.count(); i++) { - EOEntity e = (EOEntity) ents.objectAtIndex(i); + EOEntity e = ents.objectAtIndex(i); // TODO: check that entity is not a prototypes entity - NSArray atts = e.attributes(); + NSArray<EOAttribute> atts = e.attributes(); for (int j = 0; j < atts.count(); j++) { - EOAttribute a = (EOAttribute) atts.objectAtIndex(i); + EOAttribute a = atts.objectAtIndex(i); assignExternalInfoForAttribute(a); } assignExternalInfoForEntity(e); @@ -144,7 +146,7 @@ public abstract class EOAdaptor { } public boolean canServiceModel(EOModel model) { - NSDictionary mcd = model.connectionDictionary(); + NSDictionary<String, Object> mcd = model.connectionDictionary(); if (mcd == null && _connectionDictionary == null) return true; if (mcd == null || _connectionDictionary == null) @@ -152,35 +154,36 @@ public abstract class EOAdaptor { return mcd.equals(_connectionDictionary); } - public void setConnectionDictionary(NSDictionary connection) { + public void setConnectionDictionary(NSDictionary<String, Object> connection) { _connectionDictionary = connection; } - public NSDictionary connectionDictionary() { + public NSDictionary<String, Object> connectionDictionary() { return _connectionDictionary; } - public NSArray contexts() { - return new NSArray(_contexts); + public NSArray<Object> contexts() { + return new NSArray<>(_contexts); } public abstract void assertConnectionDictionaryIsValid(); public abstract EOAdaptorContext createAdaptorContext(); - public abstract Class defaultExpressionClass(); + public abstract Class<? extends EOSQLExpression> defaultExpressionClass(); public abstract EOSQLExpressionFactory expressionFactory(); public abstract boolean isValidQualifierType(String typeName, EOModel model); - public Class expressionClass() { + @SuppressWarnings("unchecked") + public Class<? extends EOSQLExpression> expressionClass() { if (_expressionClass != null) return _expressionClass; String cname = expressionClassName(name()); if (cname != null) { try { - _expressionClass = Class.forName(cname); + _expressionClass = (Class<? extends EOSQLExpression>) Class.forName(cname); } catch (ClassNotFoundException ex) { throw new IllegalStateException("Cannot find expression class named " + cname); } @@ -188,7 +191,7 @@ public abstract class EOAdaptor { return defaultExpressionClass(); } - public NSArray externalTypesWithModel(EOModel model) { + public NSArray<?> externalTypesWithModel(EOModel model) { return NSArray.EmptyArray; } @@ -252,7 +255,7 @@ public abstract class EOAdaptor { return _name; } - public NSArray prototypeAttributes() { + public NSArray<?> prototypeAttributes() { return NSArray.EmptyArray; } |
