Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 321282 | Differences between
and this patch

Collapse All | Expand All

(-)schema/rap/resources.exsd (+18 lines)
Lines 49-54 Link Here
49
         </appInfo>
49
         </appInfo>
50
      </annotation>
50
      </annotation>
51
      <complexType>
51
      <complexType>
52
         <sequence minOccurs="0" maxOccurs="unbounded">
53
            <element ref="dependsOn"/>
54
         </sequence>
52
         <attribute name="class" type="string" use="required">
55
         <attribute name="class" type="string" use="required">
53
            <annotation>
56
            <annotation>
54
               <documentation>
57
               <documentation>
Lines 62-67 Link Here
62
      </complexType>
65
      </complexType>
63
   </element>
66
   </element>
64
67
68
   <element name="dependsOn">
69
      <complexType>
70
         <attribute name="class" type="string" use="required">
71
            <annotation>
72
               <documentation>
73
                  Specify a dependency to other resource.
74
               </documentation>
75
               <appInfo>
76
                  <meta.attribute kind="java" basedOn="org.eclipse.rwt.resources.IResource"/>
77
               </appInfo>
78
            </annotation>
79
         </attribute>
80
      </complexType>
81
   </element>
82
65
   <annotation>
83
   <annotation>
66
      <appInfo>
84
      <appInfo>
67
         <meta.section type="since"/>
85
         <meta.section type="since"/>
(-)All Tests/org/eclipse/rap/ui/tests/AllTests.java (-8 / +10 lines)
Lines 1-12 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
* Copyright (c) 2010 EclipseSource and others. All rights reserved. This
2
 * Copyright (c) 2010, 2011 EclipseSource and others.
3
* program and the accompanying materials are made available under the terms of
3
 * All rights reserved. This program and the accompanying materials
4
* the Eclipse Public License v1.0 which accompanies this distribution, and is
4
 * are made available under the terms of the Eclipse Public License v1.0
5
* available at http://www.eclipse.org/legal/epl-v10.html
5
 * which accompanies this distribution, and is available at
6
*
6
 * http://www.eclipse.org/legal/epl-v10.html
7
* Contributors:
7
 *
8
*   EclipseSource - initial API and implementation
8
 * Contributors:
9
*******************************************************************************/
9
 *    EclipseSource - initial API and implementation
10
 ******************************************************************************/
10
package org.eclipse.rap.ui.tests;
11
package org.eclipse.rap.ui.tests;
11
12
12
import org.eclipse.jface.tests.viewers.Bug264226TableViewerTest;
13
import org.eclipse.jface.tests.viewers.Bug264226TableViewerTest;
Lines 26-31 Link Here
26
      suite.addTest( new org.eclipse.jface.tests.AllTests() );
27
      suite.addTest( new org.eclipse.jface.tests.AllTests() );
27
      // RAP UI Tests
28
      // RAP UI Tests
28
      suite.addTestSuite( ServiceHandlerExtensionTest.class );
29
      suite.addTestSuite( ServiceHandlerExtensionTest.class );
30
      suite.addTestSuite( EngineConfigWrapperTest.class );
29
      // RAP JFace Tests
31
      // RAP JFace Tests
30
      suite.addTestSuite( Bug264226TableViewerTest.class );
32
      suite.addTestSuite( Bug264226TableViewerTest.class );
31
      // Cleanup
33
      // Cleanup
(-)RAP (+43 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2011 EclipseSource and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    EclipseSource - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.rap.ui.tests;
13
14
import org.eclipse.rap.ui.tests.resources.Resource1;
15
import org.eclipse.rap.ui.tests.resources.Resource2;
16
import org.eclipse.rap.ui.tests.resources.Resource3;
17
import org.eclipse.rwt.internal.engine.RWTFactory;
18
import org.eclipse.rwt.resources.IResource;
19
20
import junit.framework.TestCase;
21
22
public class EngineConfigWrapperTest extends TestCase {
23
  
24
  public void testRegisterResourcesWithDependencies() {
25
    IResource[] resources = RWTFactory.getResourceRegistry().get();
26
    int resource1Index = -1;
27
    int resource2Index = -1;
28
    int resource3Index = -1;
29
    for( int i = 0; i < resources.length; i++ ) {
30
      if( resources[ i ] instanceof Resource1 ) {
31
        resource1Index = i;
32
      } else if( resources[ i ] instanceof Resource2 ) {
33
        resource2Index = i;
34
      } else if( resources[ i ] instanceof Resource3 ) {
35
        resource3Index = i;
36
      }
37
    }
38
    // expected Resource3, Resource2, Resource1
39
    assertTrue( resource3Index < resource2Index );
40
    assertTrue( resource2Index < resource1Index );
41
  }
42
43
}
(-)RAP (+32 lines)
Added Link Here
1
package org.eclipse.rap.ui.tests.resources;
2
3
import org.eclipse.rwt.resources.IResource;
4
import org.eclipse.rwt.resources.IResourceManager.RegisterOptions;
5
6
7
public final class Resource1 implements IResource {
8
9
  public String getCharset() {
10
    return "UTF-8"; //$NON-NLS-1$
11
  }
12
13
  public ClassLoader getLoader() {
14
    return Resource1.class.getClassLoader();
15
  }
16
17
  public String getLocation() {
18
    return "org/eclipse/rap/ui/tests/resources/Resource1.js"; //$NON-NLS-1$
19
  }
20
21
  public RegisterOptions getOptions() {
22
    return RegisterOptions.VERSION_AND_COMPRESS;
23
  }
24
25
  public boolean isExternal() {
26
    return false;
27
  }
28
29
  public boolean isJSLibrary() {
30
    return true;
31
  }
32
}
(-)RAP (+1 lines)
Added Link Here
1
var resourceName = "Resource1";
(-)RAP (+32 lines)
Added Link Here
1
package org.eclipse.rap.ui.tests.resources;
2
3
import org.eclipse.rwt.resources.IResource;
4
import org.eclipse.rwt.resources.IResourceManager.RegisterOptions;
5
6
7
public final class Resource2 implements IResource {
8
9
  public String getCharset() {
10
    return "UTF-8"; //$NON-NLS-1$
11
  }
12
13
  public ClassLoader getLoader() {
14
    return Resource2.class.getClassLoader();
15
  }
16
17
  public String getLocation() {
18
    return "org/eclipse/rap/ui/tests/resources/Resource2.js"; //$NON-NLS-1$
19
  }
20
21
  public RegisterOptions getOptions() {
22
    return RegisterOptions.VERSION_AND_COMPRESS;
23
  }
24
25
  public boolean isExternal() {
26
    return false;
27
  }
28
29
  public boolean isJSLibrary() {
30
    return true;
31
  }
32
}
(-)RAP (+1 lines)
Added Link Here
1
var resourceName = "Resource2";
(-)RAP (+32 lines)
Added Link Here
1
package org.eclipse.rap.ui.tests.resources;
2
3
import org.eclipse.rwt.resources.IResource;
4
import org.eclipse.rwt.resources.IResourceManager.RegisterOptions;
5
6
7
public final class Resource3 implements IResource {
8
9
  public String getCharset() {
10
    return "UTF-8"; //$NON-NLS-1$
11
  }
12
13
  public ClassLoader getLoader() {
14
    return Resource3.class.getClassLoader();
15
  }
16
17
  public String getLocation() {
18
    return "org/eclipse/rap/ui/tests/resources/Resource3.js"; //$NON-NLS-1$
19
  }
20
21
  public RegisterOptions getOptions() {
22
    return RegisterOptions.VERSION_AND_COMPRESS;
23
  }
24
25
  public boolean isExternal() {
26
    return false;
27
  }
28
29
  public boolean isJSLibrary() {
30
    return true;
31
  }
32
}
(-)RAP (+1 lines)
Added Link Here
1
var resourceName = "Resource3";
(-)plugin.xml (+18 lines)
Lines 4450-4454 Link Here
4450
            id="myHandler2">
4450
            id="myHandler2">
4451
      </serviceHandler>
4451
      </serviceHandler>
4452
   </extension>
4452
   </extension>
4453
   <extension
4454
         point="org.eclipse.rap.ui.resources">
4455
      <resource
4456
            class="org.eclipse.rap.ui.tests.resources.Resource2">
4457
         <dependsOn
4458
               class="org.eclipse.rap.ui.tests.resources.Resource3">
4459
         </dependsOn>
4460
      </resource>
4461
      <resource
4462
            class="org.eclipse.rap.ui.tests.resources.Resource1">
4463
         <dependsOn
4464
               class="org.eclipse.rap.ui.tests.resources.Resource2">
4465
         </dependsOn>
4466
      </resource>
4467
      <resource
4468
            class="org.eclipse.rap.ui.tests.resources.Resource3">
4469
      </resource>
4470
   </extension>
4453
   <!-- RAP IAD END -->
4471
   <!-- RAP IAD END -->
4454
</plugin>            
4472
</plugin>            
(-)Eclipse UI/org/eclipse/rap/ui/internal/servlet/EngineConfigWrapper.java (-2 / +44 lines)
Lines 17-22 Link Here
17
import java.io.InputStream;
17
import java.io.InputStream;
18
import java.net.URL;
18
import java.net.URL;
19
import java.text.MessageFormat;
19
import java.text.MessageFormat;
20
import java.util.ArrayList;
21
import java.util.HashMap;
22
import java.util.List;
23
import java.util.Map;
24
import java.util.Map.Entry;
20
25
21
import org.eclipse.core.runtime.CoreException;
26
import org.eclipse.core.runtime.CoreException;
22
import org.eclipse.core.runtime.FileLocator;
27
import org.eclipse.core.runtime.FileLocator;
Lines 374-387 Link Here
374
    IExtensionRegistry registry = Platform.getExtensionRegistry();
379
    IExtensionRegistry registry = Platform.getExtensionRegistry();
375
    IExtensionPoint point = registry.getExtensionPoint( ID_RESOURCES );
380
    IExtensionPoint point = registry.getExtensionPoint( ID_RESOURCES );
376
    IConfigurationElement[] elements = point.getConfigurationElements();
381
    IConfigurationElement[] elements = point.getConfigurationElements();
382
    List loadedResources = new ArrayList();
383
    Map deferredResources = new HashMap();
377
    for( int i = 0; i < elements.length; i++ ) {
384
    for( int i = 0; i < elements.length; i++ ) {
378
      try {
385
      try {
379
        IResource resource = ( IResource )elements[ i ].createExecutableExtension( "class" );
386
        IResource resource = ( IResource )elements[ i ].createExecutableExtension( "class" );
380
        RWTFactory.getResourceRegistry().add( resource );
387
        IConfigurationElement[] dependsOn = elements[ i ].getChildren( "dependsOn" );
381
      } catch( final CoreException ce ) {
388
        List resourceDependencies = new ArrayList();
389
        for( int j = 0 ; j < dependsOn.length ; j++ ) {
390
          String dependency = dependsOn[ j ].getAttribute( "class" );
391
          resourceDependencies.add( dependency );
392
        }
393
        resourceDependencies.removeAll( loadedResources );
394
        boolean checkDeferredResources = false;
395
        if( resourceDependencies.size() == 0 ) {
396
          RWTFactory.getResourceRegistry().add( resource );
397
          loadedResources.add( resource.getClass().getName() );
398
          checkDeferredResources = true;
399
        } else {
400
          deferredResources.put( resource, resourceDependencies );
401
        }
402
        while( checkDeferredResources ) {
403
          checkDeferredResources = false;
404
          Entry[] entries = new Entry[ deferredResources.size() ];
405
          deferredResources.entrySet().toArray( entries );
406
          for( int j = 0; j < entries.length; j++ ) {
407
            IResource deferredResource = ( IResource )entries[ j ].getKey();
408
            List deferredResourceDependencies = ( List )entries[ j ].getValue();
409
            deferredResourceDependencies.removeAll( loadedResources );
410
            if( deferredResourceDependencies.size() == 0 ) {
411
              RWTFactory.getResourceRegistry().add( deferredResource );
412
              loadedResources.add( deferredResource.getClass().getName() );
413
              deferredResources.remove( deferredResource );
414
              checkDeferredResources = true;
415
            }
416
          }
417
        }
418
      } catch( CoreException ce ) {
382
        WorkbenchPlugin.getDefault().getLog().log( ce.getStatus() );
419
        WorkbenchPlugin.getDefault().getLog().log( ce.getStatus() );
383
      }
420
      }
384
    }
421
    }
422
    if( deferredResources.size() != 0 ) {
423
      String pluginId = WorkbenchPlugin.getDefault().getBundle().getSymbolicName();
424
      String message = "Dependencies could not be resolved for " + deferredResources;
425
      WorkbenchPlugin.getDefault().getLog().log( new Status( IStatus.ERROR, pluginId, message ) );
426
    }
385
  }
427
  }
386
428
387
  private static void registerUICallBackServiceHandler() {
429
  private static void registerUICallBackServiceHandler() {

Return to bug 321282