Skip to content

Commit

Permalink
export factory method
Browse files Browse the repository at this point in the history
  • Loading branch information
bsorrentino committed Dec 30, 2017
1 parent 69bc269 commit 58c44a8
Show file tree
Hide file tree
Showing 5 changed files with 215 additions and 177 deletions.
2 changes: 1 addition & 1 deletion jdk8/src/main/java/org/bsc/java2ts/jdk8/package-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


@Type(java.util.stream.BaseStream.class),
@Type(java.util.stream.Stream.class),
@Type(value=java.util.stream.Stream.class,export=true),

@Type(java.util.Iterator.class),
@Type(java.util.Comparator.class),
Expand Down
54 changes: 29 additions & 25 deletions processor/src/main/java/org/bsc/processor/TypescriptHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ static String getClassDecl( Class<?> type,
final StringBuilder inherited = new StringBuilder();

if( type.isInterface() ) {
statement.append( "interface ");

statement.append( "interface ");
}
else {

Expand All @@ -47,7 +46,7 @@ static String getClassDecl( Class<?> type,
if( superclass!=null ) {
inherited
.append( " extends ")
.append( getName(superclass, type) )
.append( getName(superclass, type, true) )
;
}
}
Expand All @@ -57,7 +56,7 @@ static String getClassDecl( Class<?> type,
if(interfaces.length > 0 ) {

final String ifc = Arrays.stream(interfaces)
.map( (c) -> getName(c,type) )
.map( (c) -> getName(c,type, true) )
.collect( Collectors.joining(", "))
;
inherited
Expand Down Expand Up @@ -150,25 +149,26 @@ static String getName( Type type, Class<?> declaringClass ) throws ClassNotFound
* @param declaringClass
* @return
*/
static String getName( Class<?> type, Class<?> declaringClass ) {
final Package currentNS = declaringClass.getPackage();

final java.util.List<String> dc_parameters_list =
Arrays.stream(declaringClass.getTypeParameters())
.map( (tp) -> tp.getName())
.collect(Collectors.toList());
static String getName( Class<?> type, Class<?> declaringClass, boolean packageResolution ) {

final java.util.List<String> type_parameters_list =
Arrays.stream(type.getTypeParameters())
.map( (tp) -> (dc_parameters_list.contains(tp.getName()) ) ? tp.getName() : "any" )
.collect(Collectors.toList());

final java.util.List<String> parameters =
dc_parameters_list.size() == type_parameters_list.size() ? dc_parameters_list : type_parameters_list ;

boolean isFunctionaInterface = ( type.isInterface() && type.isAnnotationPresent(FunctionalInterface.class));

return new StringBuilder()
final java.util.List<String> dc_parameters_list =
Arrays.stream(declaringClass.getTypeParameters())
.map( (tp) -> tp.getName())
.collect(Collectors.toList());

final java.util.List<String> type_parameters_list =
Arrays.stream(type.getTypeParameters())
.map( (tp) -> (dc_parameters_list.contains(tp.getName()) ) ? tp.getName() : "any" )
.collect(Collectors.toList());

final java.util.List<String> parameters =
dc_parameters_list.size() == type_parameters_list.size() ? dc_parameters_list : type_parameters_list ;

boolean isFunctionaInterface = ( type.isInterface() && type.isAnnotationPresent(FunctionalInterface.class));

final Package currentNS = (packageResolution) ? declaringClass.getPackage() : null;

return new StringBuilder()
.append(
type.getPackage().equals(currentNS) || isFunctionaInterface ?
type.getSimpleName() :
Expand All @@ -178,15 +178,19 @@ static String getName( Class<?> type, Class<?> declaringClass ) {
.toString();
}


/**
*
* @param type
* @param declaringClass
* @param declaredClassMap
* @param packageResolution
* @return
*/
static String convertJavaToTS( Class<?> type, Class<?> declaringClass, java.util.Map<String, Class<?>> declaredClassMap ) {
static String convertJavaToTS( Class<?> type,
Class<?> declaringClass,
java.util.Map<String, Class<?>> declaredClassMap,
boolean packageResolution )
{

if( type == null ) return "any";

Expand All @@ -205,7 +209,7 @@ static String convertJavaToTS( Class<?> type, Class<?> declaringClass, java.util
if( type.isArray()) return format("[any] /* %s */",type.getName());

if( declaredClassMap.containsKey(type.getName()) ) {
return getName(type,declaringClass);
return getName(type, declaringClass, packageResolution);
}

return format("any /* %s */",type.getName());
Expand Down
Loading

0 comments on commit 58c44a8

Please sign in to comment.