@@ -1393,7 +1393,11 @@ ClazzLoader.tryToLoadNext = function (file) {
1393
1393
ClazzLoader . updateNode ( n ) ;
1394
1394
lastNode = n ;
1395
1395
}
1396
- while ( ClazzLoader . checkOptionalCycle ( ClazzLoader . clazzTreeRoot ) ) {
1396
+ while ( true ) {
1397
+ ClazzLoader . tracks = new Array ( ) ;
1398
+ if ( ! ClazzLoader . checkOptionalCycle ( ClazzLoader . clazzTreeRoot ) ) {
1399
+ break ;
1400
+ }
1397
1401
}
1398
1402
lastNode = null ;
1399
1403
while ( ( n = ClazzLoader . findNextMustClass ( ClazzLoader . clazzTreeRoot , ClazzNode . STATUS_DECLARED ) ) != null ) {
@@ -1423,6 +1427,7 @@ ClazzLoader.tryToLoadNext = function (file) {
1423
1427
var optLoaded = dList [ i ] . optionalsLoaded ;
1424
1428
if ( optLoaded != null ) {
1425
1429
dList [ i ] . optionalsLoaded = null ;
1430
+ //window.setTimeout (optLoaded, 25);
1426
1431
optLoaded ( ) ;
1427
1432
}
1428
1433
}
@@ -1456,6 +1461,12 @@ ClazzLoader.checkOptionalCycle = function (node) {
1456
1461
}
1457
1462
ts [ ts . length ] = node ;
1458
1463
if ( cycleFound != - 1 ) {
1464
+ /*
1465
+ for (var i = cycleFound; i < ts.length; i++) {
1466
+ alert (ts[i].name + ":::" + ts[i].status);
1467
+ }
1468
+ alert ("===");
1469
+ */
1459
1470
for ( var i = cycleFound ; i < ts . length ; i ++ ) {
1460
1471
ts [ i ] . status = ClazzNode . STATUS_OPTIONALS_LOADED ;
1461
1472
ClazzLoader . updateNode ( ts [ i ] ) ;
@@ -1467,6 +1478,7 @@ ClazzLoader.checkOptionalCycle = function (node) {
1467
1478
var optLoaded = ts [ i ] . optionalsLoaded ;
1468
1479
if ( optLoaded != null ) {
1469
1480
ts [ i ] . optionalsLoaded = null ;
1481
+ //alert ("check cycle.");
1470
1482
//window.setTimeout (optLoaded, 25);
1471
1483
optLoaded ( ) ;
1472
1484
}
@@ -1576,7 +1588,6 @@ $_L(["$wt.widgets.Widget","$wt.graphics.Drawable"],"$wt.widgets.Control",
1576
1588
if ( optLoaded != null ) {
1577
1589
nns [ j ] . optionalsLoaded = null ;
1578
1590
//window.setTimeout (optLoaded, 25);
1579
- alert ( 1 ) ;
1580
1591
optLoaded ( ) ;
1581
1592
}
1582
1593
}
@@ -2269,7 +2280,16 @@ ClazzLoader.loadClass = function (name, optionalsLoaded, forced, async) {
2269
2280
if ( ! ClazzLoader . isClassDefined ( name )
2270
2281
&& ! ClazzLoader . isClassExcluded ( name ) ) {
2271
2282
var path = ClazzLoader . getClasspathFor ( name /*, true*/ ) ;
2272
- if ( ! ClazzLoader . loadedScripts [ path ] ) {
2283
+ var existed = ClazzLoader . loadedScripts [ path ] ;
2284
+ var qq = ClazzLoader . classQueue ;
2285
+ if ( ! existed ) {
2286
+ for ( var i = qq . length - 1 ; i >= 0 ; i -- ) {
2287
+ if ( qq [ i ] . path == path || qq [ i ] . name == name ) {
2288
+ existed = true ;
2289
+ }
2290
+ }
2291
+ }
2292
+ if ( ! existed ) {
2273
2293
var n = null ;
2274
2294
if ( Clazz . unloadedClasses [ name ] != null ) {
2275
2295
n = ClazzLoader . findClass ( name ) ;
@@ -2284,7 +2304,6 @@ ClazzLoader.loadClass = function (name, optionalsLoaded, forced, async) {
2284
2304
n . status = ClazzNode . STATUS_KNOWN ;
2285
2305
/*-# needBeingQueued -> nQ #-*/
2286
2306
var needBeingQueued = false ;
2287
- var qq = ClazzLoader . classQueue ;
2288
2307
//error (qq.length + ":" + qq);
2289
2308
//error (path);
2290
2309
for ( var i = qq . length - 1 ; i >= 0 ; i -- ) {
@@ -2366,8 +2385,14 @@ $w$ = ClazzLoader.loadJ2SApp = function (clazz, args, loaded) {
2366
2385
}
2367
2386
var idx = - 1 ;
2368
2387
if ( ( idx = clazzStr . indexOf ( "@" ) ) != - 1 ) {
2369
- ClazzLoader . setPrimaryFolder ( clazzStr . substring ( idx + 1 ) ) ;
2388
+ var path = clazzStr . substring ( idx + 1 ) ;
2389
+ ClazzLoader . setPrimaryFolder ( path ) ; // TODO: No primary folder?
2370
2390
clazzStr = clazzStr . substring ( 0 , idx ) ;
2391
+ idx = clazzStr . lastIndexOf ( "." ) ;
2392
+ if ( idx != - 1 ) {
2393
+ var pkgName = clazzStr . substring ( 0 , idx ) ;
2394
+ ClazzLoader . packageClasspath ( pkgName , path ) ;
2395
+ }
2371
2396
}
2372
2397
var agmts = args ;
2373
2398
if ( agmts == null || ! ( agmts instanceof Array ) ) {
0 commit comments