Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
bsorrentino committed Aug 26, 2017
1 parent 2fd258a commit 9cec67c
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 34 deletions.
28 changes: 18 additions & 10 deletions processor/src/main/java/org/bsc/processor/TypescriptHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,13 @@ static String getClassParametersDecl( final TypeVariable<? extends Class<?>> par

Arrays.stream(parameters)
.map( (t) -> t.getName() )
.reduce( "<", (a, b) ->
new StringBuilder(a)
.reduce( "<", (a, b) -> {

return new StringBuilder(a)
.append(b)
.append(',')
.toString()
.toString();
}
)

);
Expand Down Expand Up @@ -128,10 +130,10 @@ static String getName( Class<?> type, Class<?> declaringClass ) {

return new StringBuilder()
.append(
type.getPackage().equals(currentNS) ?
type.getSimpleName() :
type.getName()
)
type.getPackage().equals(currentNS) ?
type.getSimpleName() :
type.getName()
)
.append(getClassParametersDecl((dc.length == type_parameters.length) ?
dc :
type_parameters
Expand All @@ -149,14 +151,20 @@ static String getName( Class<?> type, Class<?> declaringClass ) {
*/
static String convertJavaToTS( Class<?> type, Class<?> declaringClass, java.util.Map<String, Class<?>> declaredClassMap ) {

//info( "java type [%s]", type );
if( Void.class.isAssignableFrom(type) || type.equals(Void.TYPE) ) return "void";
if( Boolean.class.isAssignableFrom(type) || type.equals(Boolean.TYPE) ) return type.isPrimitive() ? "boolean" : "boolean" ;
if( Integer.class.isAssignableFrom(type) || type.equals(Integer.TYPE)) return type.isPrimitive() ? "number" : "number" ;
if( Boolean.class.isAssignableFrom(type) || type.equals(Boolean.TYPE) ) return type.isPrimitive() ? "boolean" : "boolean|null" ;
if( Integer.class.isAssignableFrom(type) || type.equals(Integer.TYPE)) return type.isPrimitive() ? "int" : "int|null" ;
if( Long.class.isAssignableFrom(type) || type.equals(Long.TYPE)) return type.isPrimitive() ? "long" : "long|null" ;
if( Float.class.isAssignableFrom(type) || type.equals(Float.TYPE)) return type.isPrimitive() ? "float" : "float|null" ;
if( Double.class.isAssignableFrom(type) || type.equals(Double.TYPE)) return type.isPrimitive() ? "double" : "double|null" ;
if( Integer.class.isAssignableFrom(type) || type.equals(Integer.TYPE)) return type.isPrimitive() ? "int" : "int|null" ;
if( String.class.isAssignableFrom(type) ) return "string";

if( char[].class.equals(type) ) return "chararray";
if( byte[].class.equals(type) ) return "bytearray";

if( type.isArray()) return format("[any] /* %s */",type.getName());

if( declaredClassMap.containsKey(type.getName()) ) {
return getName(type,declaringClass);
}
Expand Down
60 changes: 37 additions & 23 deletions processor/src/main/java/org/bsc/processor/TypescriptProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import javax.tools.FileObject;

import io.reactivex.Observable;
import static java.lang.String.format;

/**
*
* @author bsoorentino
Expand Down Expand Up @@ -115,7 +117,7 @@ private String getPropertyDecl( Class<?> declaringClass, PropertyDescriptor pd,
.replaceAll("<[\\w\\?]>", "<any>")
;

info( "getPropertyDecl: [%s] [%s] [%s] [%s]", pd.getName(), typeName, typeName, r);
info( "getPropertyDecl: [%s] [%s] [%s] [%s]", pd.getName(), typeName, rType.getTypeName(), r);

return sb.append( r ).toString();

Expand All @@ -141,7 +143,14 @@ private String getMethodDecl( final Method m, java.util.Map<String, Class<?>> de

final StringBuilder sb = new StringBuilder();

if( Modifier.isStatic(m.getModifiers()) ) sb.append("static ");
if( Modifier.isStatic(m.getModifiers()) ) {

if( m.getDeclaringClass().isInterface() ) {
sb.append( "// ");
}
sb.append("static ");

}

sb.append(m.getName());
if( m.getDeclaringClass().isInterface()) sb.append('?');
Expand All @@ -150,7 +159,7 @@ private String getMethodDecl( final Method m, java.util.Map<String, Class<?>> de
final Parameter[] params = m.getParameters();

if( params.length > 0 ) {
Arrays.asList(params)
Arrays.stream(params)
.forEach( (tp) -> sb.append( tp.getName())
.append(':')
.append( convertJavaToTS(tp.getType(),m.getDeclaringClass(),declaredClassMap) )
Expand All @@ -161,6 +170,7 @@ private String getMethodDecl( final Method m, java.util.Map<String, Class<?>> de

sb.append(" ):");

/*
// Check if there is a paramized type
final Type rType = m.getGenericReturnType();
if( rType instanceof ParameterizedType ) {
Expand All @@ -169,28 +179,33 @@ private String getMethodDecl( final Method m, java.util.Map<String, Class<?>> de
final String typeName = pClass.getTypeName();
if( typeName.length()==1 ) return sb.append("any").toString();

try {

final String name = getName( pClass, m.getDeclaringClass());
info( "getMethodDecl: [%s] [%s] [%s] - j2ts [%s]", m.getName(), typeName, rType.getTypeName() );
final String r = rType.getTypeName()
.replaceAll(typeName, name)
;
String r;
try {
info( "getMethodDecl: [%s] [%s] [%s] [%s]", m.getName(), typeName, rType.getTypeName(), r);

return sb.append( r )
.toString();

} catch (ClassNotFoundException e) {

warn( "getMethodDecl: type [%s] not found!", typeName);
}
final String name = getName(pClass, m.getDeclaringClass());
r = rType.getTypeName().replaceAll(typeName, name);
} catch (ClassNotFoundException e) {
warn("getMethodDecl: type [%s] not found!", typeName);
r = rType.getTypeName().replace(format("<%s>", typeName), "<any>");
}
info("getMethodDecl: result: [%s]", r);
return sb.append( r )
.toString();
}

*/

final String tsType = convertJavaToTS( returnType,
m.getDeclaringClass(),
declaredClassMap);
Expand All @@ -212,8 +227,7 @@ private String processClass( BeanInfo bi, java.util.Map<String, Class<?>> decla
final java.util.Set<String> propertySet =
new java.util.LinkedHashSet<>(pds.length);

Arrays.asList(pds)
.stream()
Arrays.stream(pds)
.filter( TypescriptHelper::isPropertyValid )
.forEach( (pd) -> propertySet.add( getPropertyDecl( type, pd, declaredClassMap) ) );

Expand Down
8 changes: 7 additions & 1 deletion test/src/main/java/org/test/package-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@
java.lang.CharSequence.class,
java.lang.String.class,
java.lang.Comparable.class,

java.lang.Runnable.class,

java.util.stream.BaseStream.class,
java.util.stream.Stream .class,
java.util.Map.class,
java.util.Collection.class,
java.util.List.class,
java.util.Set.class,
java.util.Iterator.class,
java.util.Comparator.class,

java.beans.Beans.class,

Expand Down

0 comments on commit 9cec67c

Please sign in to comment.