Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 194340 Details for
Bug 321282
Loading Javascript resources from bundles with dependencies
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Updated and refactored patch
Bug-321282.patch (text/plain), 14.60 KB, created by
Ivan Furnadjiev
on 2011-04-29 05:12:03 EDT
(
hide
)
Description:
Updated and refactored patch
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2011-04-29 05:12:03 EDT
Size:
14.60 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rap.ui >Index: schema/rap/resources.exsd >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.ui/schema/rap/resources.exsd,v >retrieving revision 1.1 >diff -u -r1.1 resources.exsd >--- schema/rap/resources.exsd 18 Apr 2008 10:46:45 -0000 1.1 >+++ schema/rap/resources.exsd 29 Apr 2011 08:55:31 -0000 >@@ -49,6 +49,9 @@ > </appInfo> > </annotation> > <complexType> >+ <sequence minOccurs="0" maxOccurs="unbounded"> >+ <element ref="dependsOn"/> >+ </sequence> > <attribute name="class" type="string" use="required"> > <annotation> > <documentation> >@@ -62,6 +65,21 @@ > </complexType> > </element> > >+ <element name="dependsOn"> >+ <complexType> >+ <attribute name="class" type="string" use="required"> >+ <annotation> >+ <documentation> >+ Specify a dependency to other resource. >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="java" basedOn="org.eclipse.rwt.resources.IResource"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ > <annotation> > <appInfo> > <meta.section type="since"/> >#P org.eclipse.rap.ui.tests >Index: All Tests/org/eclipse/rap/ui/tests/AllTests.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui.test/org.eclipse.rap.ui.tests/All Tests/org/eclipse/rap/ui/tests/AllTests.java,v >retrieving revision 1.4 >diff -u -r1.4 AllTests.java >--- All Tests/org/eclipse/rap/ui/tests/AllTests.java 26 Mar 2011 06:25:57 -0000 1.4 >+++ All Tests/org/eclipse/rap/ui/tests/AllTests.java 29 Apr 2011 08:55:32 -0000 >@@ -1,12 +1,13 @@ > /******************************************************************************* >-* Copyright (c) 2010 EclipseSource and others. All rights reserved. This >-* program and the accompanying materials are made available under the terms of >-* the Eclipse Public License v1.0 which accompanies this distribution, and is >-* available at http://www.eclipse.org/legal/epl-v10.html >-* >-* Contributors: >-* EclipseSource - initial API and implementation >-*******************************************************************************/ >+ * Copyright (c) 2010, 2011 EclipseSource and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ > package org.eclipse.rap.ui.tests; > > import org.eclipse.jface.tests.viewers.Bug264226TableViewerTest; >@@ -26,6 +27,7 @@ > suite.addTest( new org.eclipse.jface.tests.AllTests() ); > // RAP UI Tests > suite.addTestSuite( ServiceHandlerExtensionTest.class ); >+ suite.addTestSuite( EngineConfigWrapperTest.class ); > // RAP JFace Tests > suite.addTestSuite( Bug264226TableViewerTest.class ); > // Cleanup >Index: RAP UI Tests/org/eclipse/rap/ui/tests/EngineConfigWrapperTest.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/EngineConfigWrapperTest.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/EngineConfigWrapperTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/EngineConfigWrapperTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,43 @@ >+/******************************************************************************* >+ * Copyright (c) 2011 EclipseSource and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.rap.ui.tests; >+ >+import org.eclipse.rap.ui.tests.resources.Resource1; >+import org.eclipse.rap.ui.tests.resources.Resource2; >+import org.eclipse.rap.ui.tests.resources.Resource3; >+import org.eclipse.rwt.internal.engine.RWTFactory; >+import org.eclipse.rwt.resources.IResource; >+ >+import junit.framework.TestCase; >+ >+public class EngineConfigWrapperTest extends TestCase { >+ >+ public void testRegisterResourcesWithDependencies() { >+ IResource[] resources = RWTFactory.getResourceRegistry().get(); >+ int resource1Index = -1; >+ int resource2Index = -1; >+ int resource3Index = -1; >+ for( int i = 0; i < resources.length; i++ ) { >+ if( resources[ i ] instanceof Resource1 ) { >+ resource1Index = i; >+ } else if( resources[ i ] instanceof Resource2 ) { >+ resource2Index = i; >+ } else if( resources[ i ] instanceof Resource3 ) { >+ resource3Index = i; >+ } >+ } >+ // expected Resource3, Resource2, Resource1 >+ assertTrue( resource3Index < resource2Index ); >+ assertTrue( resource2Index < resource1Index ); >+ } >+ >+} >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,32 @@ >+package org.eclipse.rap.ui.tests.resources; >+ >+import org.eclipse.rwt.resources.IResource; >+import org.eclipse.rwt.resources.IResourceManager.RegisterOptions; >+ >+ >+public final class Resource1 implements IResource { >+ >+ public String getCharset() { >+ return "UTF-8"; //$NON-NLS-1$ >+ } >+ >+ public ClassLoader getLoader() { >+ return Resource1.class.getClassLoader(); >+ } >+ >+ public String getLocation() { >+ return "org/eclipse/rap/ui/tests/resources/Resource1.js"; //$NON-NLS-1$ >+ } >+ >+ public RegisterOptions getOptions() { >+ return RegisterOptions.VERSION_AND_COMPRESS; >+ } >+ >+ public boolean isExternal() { >+ return false; >+ } >+ >+ public boolean isJSLibrary() { >+ return true; >+ } >+} >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.js >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.js >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.js >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource1.js 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+var resourceName = "Resource1"; >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,32 @@ >+package org.eclipse.rap.ui.tests.resources; >+ >+import org.eclipse.rwt.resources.IResource; >+import org.eclipse.rwt.resources.IResourceManager.RegisterOptions; >+ >+ >+public final class Resource2 implements IResource { >+ >+ public String getCharset() { >+ return "UTF-8"; //$NON-NLS-1$ >+ } >+ >+ public ClassLoader getLoader() { >+ return Resource2.class.getClassLoader(); >+ } >+ >+ public String getLocation() { >+ return "org/eclipse/rap/ui/tests/resources/Resource2.js"; //$NON-NLS-1$ >+ } >+ >+ public RegisterOptions getOptions() { >+ return RegisterOptions.VERSION_AND_COMPRESS; >+ } >+ >+ public boolean isExternal() { >+ return false; >+ } >+ >+ public boolean isJSLibrary() { >+ return true; >+ } >+} >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.js >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.js >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.js >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource2.js 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+var resourceName = "Resource2"; >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,32 @@ >+package org.eclipse.rap.ui.tests.resources; >+ >+import org.eclipse.rwt.resources.IResource; >+import org.eclipse.rwt.resources.IResourceManager.RegisterOptions; >+ >+ >+public final class Resource3 implements IResource { >+ >+ public String getCharset() { >+ return "UTF-8"; //$NON-NLS-1$ >+ } >+ >+ public ClassLoader getLoader() { >+ return Resource3.class.getClassLoader(); >+ } >+ >+ public String getLocation() { >+ return "org/eclipse/rap/ui/tests/resources/Resource3.js"; //$NON-NLS-1$ >+ } >+ >+ public RegisterOptions getOptions() { >+ return RegisterOptions.VERSION_AND_COMPRESS; >+ } >+ >+ public boolean isExternal() { >+ return false; >+ } >+ >+ public boolean isJSLibrary() { >+ return true; >+ } >+} >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.js >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.js >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.js >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource3.js 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+var resourceName = "Resource3"; >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui.test/org.eclipse.rap.ui.tests/plugin.xml,v >retrieving revision 1.12 >diff -u -r1.12 plugin.xml >--- plugin.xml 13 Jan 2011 11:48:06 -0000 1.12 >+++ plugin.xml 29 Apr 2011 08:55:34 -0000 >@@ -4450,5 +4450,23 @@ > id="myHandler2"> > </serviceHandler> > </extension> >+ <extension >+ point="org.eclipse.rap.ui.resources"> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource2"> >+ <dependsOn >+ class="org.eclipse.rap.ui.tests.resources.Resource3"> >+ </dependsOn> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource1"> >+ <dependsOn >+ class="org.eclipse.rap.ui.tests.resources.Resource2"> >+ </dependsOn> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource3"> >+ </resource> >+ </extension> > <!-- RAP IAD END --> > </plugin> >#P org.eclipse.rap.ui.workbench >Index: Eclipse UI/org/eclipse/rap/ui/internal/servlet/EngineConfigWrapper.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.rap/runtime.ui/org.eclipse.rap.ui.workbench/Eclipse UI/org/eclipse/rap/ui/internal/servlet/EngineConfigWrapper.java,v >retrieving revision 1.23 >diff -u -r1.23 EngineConfigWrapper.java >--- Eclipse UI/org/eclipse/rap/ui/internal/servlet/EngineConfigWrapper.java 12 Apr 2011 17:57:10 -0000 1.23 >+++ Eclipse UI/org/eclipse/rap/ui/internal/servlet/EngineConfigWrapper.java 29 Apr 2011 08:55:35 -0000 >@@ -17,6 +17,11 @@ > import java.io.InputStream; > import java.net.URL; > import java.text.MessageFormat; >+import java.util.ArrayList; >+import java.util.HashMap; >+import java.util.List; >+import java.util.Map; >+import java.util.Map.Entry; > > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.FileLocator; >@@ -374,14 +379,51 @@ > IExtensionRegistry registry = Platform.getExtensionRegistry(); > IExtensionPoint point = registry.getExtensionPoint( ID_RESOURCES ); > IConfigurationElement[] elements = point.getConfigurationElements(); >+ List loadedResources = new ArrayList(); >+ Map deferredResources = new HashMap(); > for( int i = 0; i < elements.length; i++ ) { > try { > IResource resource = ( IResource )elements[ i ].createExecutableExtension( "class" ); >- RWTFactory.getResourceRegistry().add( resource ); >- } catch( final CoreException ce ) { >+ IConfigurationElement[] dependsOn = elements[ i ].getChildren( "dependsOn" ); >+ List resourceDependencies = new ArrayList(); >+ for( int j = 0 ; j < dependsOn.length ; j++ ) { >+ String dependency = dependsOn[ j ].getAttribute( "class" ); >+ resourceDependencies.add( dependency ); >+ } >+ resourceDependencies.removeAll( loadedResources ); >+ boolean checkDeferredResources = false; >+ if( resourceDependencies.size() == 0 ) { >+ RWTFactory.getResourceRegistry().add( resource ); >+ loadedResources.add( resource.getClass().getName() ); >+ checkDeferredResources = true; >+ } else { >+ deferredResources.put( resource, resourceDependencies ); >+ } >+ while( checkDeferredResources ) { >+ checkDeferredResources = false; >+ Entry[] entries = new Entry[ deferredResources.size() ]; >+ deferredResources.entrySet().toArray( entries ); >+ for( int j = 0; j < entries.length; j++ ) { >+ IResource deferredResource = ( IResource )entries[ j ].getKey(); >+ List deferredResourceDependencies = ( List )entries[ j ].getValue(); >+ deferredResourceDependencies.removeAll( loadedResources ); >+ if( deferredResourceDependencies.size() == 0 ) { >+ RWTFactory.getResourceRegistry().add( deferredResource ); >+ loadedResources.add( deferredResource.getClass().getName() ); >+ deferredResources.remove( deferredResource ); >+ checkDeferredResources = true; >+ } >+ } >+ } >+ } catch( CoreException ce ) { > WorkbenchPlugin.getDefault().getLog().log( ce.getStatus() ); > } > } >+ if( deferredResources.size() != 0 ) { >+ String pluginId = WorkbenchPlugin.getDefault().getBundle().getSymbolicName(); >+ String message = "Dependencies could not be resolved for " + deferredResources; >+ WorkbenchPlugin.getDefault().getLog().log( new Status( IStatus.ERROR, pluginId, message ) ); >+ } > } > > private static void registerUICallBackServiceHandler() {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 321282
:
175534
|
194340
|
194422