(EvaluatedClassDeclaration)getReturnType( type, "iterator") ;
if (type2 == null) {
throw Exceptions.self.iteratorNotFound(type) ;
}
EvaluatedType tcType = getReturnType( type2, "next" ) ;
if (tcType == null) {
throw Exceptions.self.nextNotFound(type) ;
}
TypeConverter tc = mom.getTypeConverter( tcType ) ;
result = new TypeConverterListBase( type, tc ) {
protected Iterator getIterator( Object obj ) {
if (obj == null) {
return emptyIterator() ;
} else {
return ((Iterable)obj).iterator() ;
}
}
} ;
} else if (Collection.class.isAssignableFrom(type.cls())) {
EvaluatedClassDeclaration type2 =
(EvaluatedClassDeclaration)getReturnType( type, "iterator") ;
EvaluatedType tcType = getReturnType( type2, "next" ) ;
TypeConverter tc = mom.getTypeConverter( tcType ) ;
result = new TypeConverterListBase( type, tc ) {
protected Iterator getIterator( Object obj ) {
if (obj == null) {
return emptyIterator() ;
} else {
return ((Iterable)obj).iterator() ;
}
}
} ;
} else if (Iterator.class.isAssignableFrom(type.cls())) {
EvaluatedType tcType = getReturnType( type, "next" ) ;
TypeConverter tc = mom.getTypeConverter( tcType ) ;
result = new TypeConverterListBase( type, tc ) {
protected Iterator getIterator( Object obj ) {
if (obj == null) {
return emptyIterator() ;
} else {
return (Iterator)obj ;
}
}
} ;
} else if (Enumeration.class.isAssignableFrom(type.cls())) {
EvaluatedType tcType = getReturnType( type, "next" ) ;
TypeConverter tc = mom.getTypeConverter( tcType ) ;
result = new TypeConverterListBase( type, tc ) {
@SuppressWarnings("unchecked")
protected Iterator getIterator( Object obj ) {
if (obj == null) {
return emptyIterator() ;
} else {
return new EnumerationAdapter( (Enumeration)obj ) ;
}
}
} ;
} else if (Map.class.isAssignableFrom(type.cls())) {
EvaluatedType type1 = getParameterType( type, "put", 0 ) ;
TypeConverter firstTc = mom.getTypeConverter( type1 ) ;
EvaluatedType type2 = getReturnType( type, "put" ) ;
TypeConverter secondTc = mom.getTypeConverter( type2 ) ;
result = new TypeConverterMapBase( type, firstTc, secondTc ) {
@SuppressWarnings("unchecked")
protected Table getTable( Object obj ) {
if (obj == null) {
return emptyTable() ;
} else {
return new TableMapImpl( (Map)obj ) ;
}
}
} ;
} else if (Dictionary.class.isAssignableFrom(type.cls())) {
EvaluatedType type1 = getParameterType( type, "put", 0 ) ;
TypeConverter firstTc = mom.getTypeConverter( type1 ) ;
EvaluatedType type2 = getReturnType( type, "put" ) ;
TypeConverter secondTc = mom.getTypeConverter( type2 ) ;
result = new TypeConverterMapBase( type, firstTc, secondTc ) {
@SuppressWarnings("unchecked")
protected Table getTable( Object obj ) {