Skip to content

Commit

Permalink
Merge branch 'feature/static' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
bsorrentino committed Dec 30, 2017
2 parents 58a0dbf + 58c44a8 commit 627102d
Show file tree
Hide file tree
Showing 10 changed files with 285 additions and 241 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
3 changes: 2 additions & 1 deletion jjs/src/main/ts/jdk8-types.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
"use strict";
/// <reference path="jdk8.d.ts" />
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArrayList = Java.type("java.util.ArrayList");
exports.Stream = Java.type("java.util.stream.Stream");
14 changes: 11 additions & 3 deletions jjs/src/main/ts/jdk8-types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
/// <reference path="jdk8.d.ts" />

interface ArrayListStatic {
new<T>():java.util.ArrayList<T>;

interface StreamStatic {

concat<T>( arg0:java.util.stream.Stream<T>, arg1:java.util.stream.Stream<T> ):java.util.stream.Stream<T>;
empty<T>( ):java.util.stream.Stream<T>;
generate<T>( arg0:Supplier<T> ):java.util.stream.Stream<T>;
iterate<T>( arg0:any /* java.lang.Object */, arg1:UnaryOperator<T> ):java.util.stream.Stream<T>;
of<T>( arg0:[any] /* [Ljava.lang.Object; */ ):java.util.stream.Stream<T>;
of<T>( arg0:any /* java.lang.Object */ ):java.util.stream.Stream<T>;
}

export var ArrayList: ArrayListStatic = Java.type( "java.util.ArrayList");
export const Stream: StreamStatic = Java.type("java.util.stream.Stream");
106 changes: 49 additions & 57 deletions jjs/src/main/ts/jdk8.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,6 @@ interface Consumer<T> /*extends Function*/ {
( v:T ):void; //accept(t:T):void
}

interface ConsumerConstructor {
new<T>( args: T): Consumer<T>;
<T>( args: T): Consumer<T>;
readonly prototype: Function;
}

declare const Consumer : ConsumerConstructor;

interface UnaryOperator<T>/* extends Function<T,any>*/ {

andThen?( arg0:any /* java.util.function.Function */ ):any /* java.util.function.Function */;
Expand Down Expand Up @@ -93,21 +85,7 @@ declare namespace java.io {
interface Serializable {}
}

declare namespace java.util.stream {

interface StreamConstructor{
builder<T>( ):Stream.Builder<T>;
concat<T>( arg0:Stream<T>,arg1:Stream<T> ):Stream<T>;
empty<T>( ):Stream<T>;
generate<T>( arg0:Supplier<T> ):Stream<T>;
iterate<T>( seed:T,arg1:UnaryOperator<T> ):Stream<T>;
of<T>( arg0:Array<T> ):Stream<T>;
of<T>( arg0:T ):Stream<T>;

}

export const Stream : java.util.stream.StreamConstructor;
}
declare namespace java.lang {

interface Iterable<T> {
Expand Down Expand Up @@ -186,25 +164,10 @@ class String/* extends ObjectString implements java.io.Serializable, Comparable<
startsWith( arg0:string ):boolean;
startsWith( arg0:string, arg1:int ):boolean;
static checkBounds( arg0:bytearray, arg1:int, arg2:int ):void;
static copyValueOf( arg0:chararray ):string;
static copyValueOf( arg0:chararray, arg1:int, arg2:int ):string;
static format( arg0:any /* java.util.Locale */, arg1:string, arg2:[any] /* [Ljava.lang.Object; */ ):string;
static format( arg0:string, arg1:[any] /* [Ljava.lang.Object; */ ):string;
static indexOf( arg0:chararray, arg1:int, arg2:int, arg3:chararray, arg4:int, arg5:int, arg6:int ):int;
static indexOf( arg0:chararray, arg1:int, arg2:int, arg3:string, arg4:int ):int;
static join( arg0:CharSequence, arg1:Iterable<any> ):string;
static join( arg0:CharSequence, arg1:[any] /* [Ljava.lang.CharSequence; */ ):string;
static lastIndexOf( arg0:chararray, arg1:int, arg2:int, arg3:chararray, arg4:int, arg5:int, arg6:int ):int;
static lastIndexOf( arg0:chararray, arg1:int, arg2:int, arg3:string, arg4:int ):int;
static valueOf( arg0:any /* char */ ):string;
static valueOf( arg0:any /* java.lang.Object */ ):string;
static valueOf( arg0:boolean ):string;
static valueOf( arg0:chararray ):string;
static valueOf( arg0:chararray, arg1:int, arg2:int ):string;
static valueOf( arg0:double ):string;
static valueOf( arg0:float ):string;
static valueOf( arg0:int ):string;
static valueOf( arg0:long ):string;
subSequence( arg0:int, arg1:int ):CharSequence;
substring( arg0:int ):string;
substring( arg0:int, arg1:int ):string;
Expand All @@ -218,6 +181,55 @@ class String/* extends ObjectString implements java.io.Serializable, Comparable<

} // end String

} // end namespace java.lang
declare namespace java.lang {

class System/* extends Object*/ {

equals( arg0:any /* java.lang.Object */ ):boolean;
hashCode( ):int;
static arraycopy( arg0:any /* java.lang.Object */, arg1:int, arg2:any /* java.lang.Object */, arg3:int, arg4:int ):void;
static checkIO( ):void;
static checkKey( arg0:string ):void;
static clearProperty( arg0:string ):string;
static console( ):any /* java.io.Console */;
static currentTimeMillis( ):long;
static exit( arg0:int ):void;
static gc( ):void;
static getProperties( ):any /* java.util.Properties */;
static getProperty( arg0:string ):string;
static getProperty( arg0:string, arg1:string ):string;
static getSecurityManager( ):any /* java.lang.SecurityManager */;
static getenv( arg0:string ):string;
static getenv<K,V>( ):java.util.Map<any, any>;
static identityHashCode( arg0:any /* java.lang.Object */ ):int;
static inheritedChannel( ):any /* java.nio.channels.Channel */;
static initProperties( arg0:any /* java.util.Properties */ ):any /* java.util.Properties */;
static initializeSystemClass( ):void;
static lineSeparator( ):string;
static load( arg0:string ):void;
static loadLibrary( arg0:string ):void;
static mapLibraryName( arg0:string ):string;
static nanoTime( ):long;
static newPrintStream( arg0:any /* java.io.FileOutputStream */, arg1:string ):any /* java.io.PrintStream */;
static registerNatives( ):void;
static runFinalization( ):void;
static runFinalizersOnExit( arg0:boolean ):void;
static setErr( arg0:any /* java.io.PrintStream */ ):void;
static setErr0( arg0:any /* java.io.PrintStream */ ):void;
static setIn( arg0:any /* java.io.InputStream */ ):void;
static setIn0( arg0:any /* java.io.InputStream */ ):void;
static setJavaLangAccess( ):void;
static setOut( arg0:any /* java.io.PrintStream */ ):void;
static setOut0( arg0:any /* java.io.PrintStream */ ):void;
static setProperties( arg0:any /* java.util.Properties */ ):void;
static setProperty( arg0:string, arg1:string ):string;
static setSecurityManager( arg0:any /* java.lang.SecurityManager */ ):void;
static setSecurityManager0( arg0:any /* java.lang.SecurityManager */ ):void;
toString( ):string;

} // end System

} // end namespace java.lang
declare namespace java.util.stream {

Expand All @@ -240,12 +252,6 @@ declare namespace java.util.stream {
interface Stream<T>/*Stream<T> extends BaseStream<T, any>*/ {

// static builder<T>( ):any /* java.util.stream.Stream$Builder */;
// static concat<T>( arg0:Stream<T>, arg1:Stream<T> ):Stream<T>;
// static empty<T>( ):Stream<T>;
// static generate<T>( arg0:Supplier<T> ):Stream<T>;
// static iterate<T>( arg0:any /* java.lang.Object */, arg1:UnaryOperator<T> ):Stream<T>;
// static of<T>( arg0:[any] /* [Ljava.lang.Object; */ ):Stream<T>;
// static of<T>( arg0:any /* java.lang.Object */ ):Stream<T>;
allMatch( arg0:Predicate<T> ):boolean;
anyMatch( arg0:Predicate<T> ):boolean;
close( ):void;
Expand Down Expand Up @@ -318,15 +324,6 @@ declare namespace java.util {

interface Comparator<T> {

// static comparing<T>( arg0:any /* java.util.function.Function */ ):Comparator<T>;
// static comparing<T>( arg0:any /* java.util.function.Function */, arg1:Comparator<T> ):Comparator<T>;
// static comparingDouble<T>( arg0:any /* java.util.function.ToDoubleFunction */ ):Comparator<T>;
// static comparingInt<T>( arg0:any /* java.util.function.ToIntFunction */ ):Comparator<T>;
// static comparingLong<T>( arg0:any /* java.util.function.ToLongFunction */ ):Comparator<T>;
// static naturalOrder<T>( ):Comparator<T>;
// static nullsFirst<T>( arg0:Comparator<T> ):Comparator<T>;
// static nullsLast<T>( arg0:Comparator<T> ):Comparator<T>;
// static reverseOrder<T>( ):Comparator<T>;
compare( arg0:any /* java.lang.Object */, arg1:any /* java.lang.Object */ ):int;
equals( arg0:any /* java.lang.Object */ ):boolean;
reversed( ):Comparator<T>;
Expand Down Expand Up @@ -858,9 +855,6 @@ class Optional<T>/* extends java.lang.Object*/ {
orElse( arg0:any /* java.lang.Object */ ):any /* java.lang.Object */;
orElseGet( arg0:Supplier<T> ):any /* java.lang.Object */;
orElseThrow( arg0:Supplier<T> ):any /* java.lang.Object */;
static empty<T>( ):Optional<T>;
static of<T>( arg0:any /* java.lang.Object */ ):Optional<T>;
static ofNullable<T>( arg0:any /* java.lang.Object */ ):Optional<T>;
toString( ):string;

} // end Optional<T>
Expand Down Expand Up @@ -1016,8 +1010,6 @@ declare namespace java.nio.file {
hashCode( ):int;
name( ):string;
ordinal( ):int;
static valueOf( arg0:string ):AccessMode;
static valueOf<E>( arg0:java.lang.Class<any>, arg1:string ):any /* java.lang.Enum */;
static values( ):[any] /* [Ljava.nio.file.AccessMode; */;
toString( ):string;

Expand Down
4 changes: 3 additions & 1 deletion jjs/src/main/ts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ var colors = require("colors/safe");
var mustache = require("mustache");
var jdk8_types_1 = require("./jdk8-types");
var b = "hello jjs";
var list = new jdk8_types_1.ArrayList();
var a = java.util.Arrays.asList(["item1", "item2", "item3"]);
print(colors.red(b));
a.stream().forEach(function (e) {
print(colors.green(e));
});
jdk8_types_1.Stream.of("<item2>").forEach(function (e) {
print(colors.green(e));
});
var template = "Email addresses of: {{contact.name}}:\n{{#contact.emails}}\n- {{.}}\n{{/contact.emails}}\n";
var result = mustache.render(template, { contact: { name: "bsorrentino",
emails: [
Expand Down
7 changes: 5 additions & 2 deletions jjs/src/main/ts/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
import * as colors from "colors/safe";
import mustache = require("mustache");

import {ArrayList} from "./jdk8-types";
import {Stream} from "./jdk8-types";

let b = "hello jjs";

let list = new ArrayList<any>();

let a = java.util.Arrays.asList( [ "item1", "item2", "item3"] );

Expand All @@ -16,6 +15,10 @@ a.stream().forEach( (e) => {
print( colors.green(e) );
});

Stream.of<string>( "<item2>" ).forEach( (e) => {
print( colors.green(e) );
});

let template =
`Email addresses of: {{contact.name}}:
{{#contact.emails}}
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 627102d

Please sign in to comment.