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 194422 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]
New version of the patch
Bug-321282.patch (text/plain), 18.67 KB, created by
Ivan Furnadjiev
on 2011-04-30 08:28:52 EDT
(
hide
)
Description:
New version of the patch
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2011-04-30 08:28:52 EDT
Size:
18.67 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 30 Apr 2011 12:23:19 -0000 >@@ -49,6 +49,16 @@ > </appInfo> > </annotation> > <complexType> >+ <sequence minOccurs="0" maxOccurs="unbounded"> >+ <element ref="dependsOn"/> >+ </sequence> >+ <attribute name="id" type="string"> >+ <annotation> >+ <documentation> >+ An optional identifier of the resource instance. >+ </documentation> >+ </annotation> >+ </attribute> > <attribute name="class" type="string" use="required"> > <annotation> > <documentation> >@@ -62,6 +72,21 @@ > </complexType> > </element> > >+ <element name="dependsOn"> >+ <complexType> >+ <attribute name="resourceId" type="string" use="required"> >+ <annotation> >+ <documentation> >+ The resourceId is used to identify the resource on which this resource depends on. >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="identifier" basedOn="org.eclipse.rap.ui.resources/resource/@id"/> >+ </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 30 Apr 2011 12:23:20 -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,53 @@ >+/******************************************************************************* >+ * 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.rap.ui.tests.resources.Resource4; >+import org.eclipse.rap.ui.tests.resources.Resource5; >+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; >+ int resource4Index = -1; >+ int resource5Index = -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; >+ } else if( resources[ i ] instanceof Resource4 ) { >+ resource4Index = i; >+ } else if( resources[ i ] instanceof Resource5 ) { >+ resource5Index = i; >+ } >+ } >+ // expected Resource4, Resource5, Resource3, Resource2, Resource1 >+ assertTrue( resource4Index < resource5Index ); >+ assertTrue( resource5Index < resource3Index ); >+ assertTrue( resource3Index < resource2Index ); >+ assertTrue( resource2Index < resource1Index ); >+ } >+ >+} >Index: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource.js >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource.js >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource.js >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource.js 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+var name = "bar"; >\ No newline at end of file >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/Resource.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.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/Resource.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.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/Resource.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/Resource4.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource4.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource4.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource4.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 Resource4 implements IResource { >+ >+ public String getCharset() { >+ return "UTF-8"; //$NON-NLS-1$ >+ } >+ >+ public ClassLoader getLoader() { >+ return Resource4.class.getClassLoader(); >+ } >+ >+ public String getLocation() { >+ return "org/eclipse/rap/ui/tests/resources/Resource.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/Resource5.java >=================================================================== >RCS file: RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource5.java >diff -N RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource5.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ RAP UI Tests/org/eclipse/rap/ui/tests/resources/Resource5.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 Resource5 implements IResource { >+ >+ public String getCharset() { >+ return "UTF-8"; //$NON-NLS-1$ >+ } >+ >+ public ClassLoader getLoader() { >+ return Resource5.class.getClassLoader(); >+ } >+ >+ public String getLocation() { >+ return "org/eclipse/rap/ui/tests/resources/Resource.js"; //$NON-NLS-1$ >+ } >+ >+ public RegisterOptions getOptions() { >+ return RegisterOptions.VERSION_AND_COMPRESS; >+ } >+ >+ public boolean isExternal() { >+ return false; >+ } >+ >+ public boolean isJSLibrary() { >+ return true; >+ } >+} >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 30 Apr 2011 12:23:21 -0000 >@@ -4450,5 +4450,32 @@ > id="myHandler2"> > </serviceHandler> > </extension> >+ <extension >+ point="org.eclipse.rap.ui.resources"> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource4"> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource2" >+ id="org.eclipse.rap.ui.tests.resources.resource2"> >+ <dependsOn >+ resourceId="org.eclipse.rap.ui.tests.resources.resource3"> >+ </dependsOn> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource5"> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource1" >+ id="org.eclipse.rap.ui.tests.resources.resource1"> >+ <dependsOn >+ resourceId="org.eclipse.rap.ui.tests.resources.resource2"> >+ </dependsOn> >+ </resource> >+ <resource >+ class="org.eclipse.rap.ui.tests.resources.Resource3" >+ id="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 30 Apr 2011 12:23:22 -0000 >@@ -17,7 +17,9 @@ > import java.io.InputStream; > import java.net.URL; > import java.text.MessageFormat; >- >+import java.util.ArrayList; >+import java.util.Iterator; >+import java.util.List; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.FileLocator; > import org.eclipse.core.runtime.IConfigurationElement; >@@ -61,6 +63,22 @@ > */ > // TODO: [fappel] clean replacement mechanism that is anchored in W4Toolkit core > public final class EngineConfigWrapper implements IEngineConfig { >+ >+ private static final class DependentResource { >+ public final IResource resource; >+ public final String id; >+ public final List dependencies; >+ >+ public DependentResource( IResource resource, String id, List dependencies ) { >+ this.resource = resource; >+ this.id = id; >+ this.dependencies = dependencies; >+ } >+ >+ public String toString() { >+ return id != null ? id : resource.getClass().getName(); >+ } >+ } > > // extension point id for adapter factory registration > private static final String ID_ADAPTER_FACTORY >@@ -374,14 +392,77 @@ > IExtensionRegistry registry = Platform.getExtensionRegistry(); > IExtensionPoint point = registry.getExtensionPoint( ID_RESOURCES ); > IConfigurationElement[] elements = point.getConfigurationElements(); >+ DependentResource[] resources = loadResources( elements ); >+ resources = sortResources( resources ); >+ registerResources( resources ); >+ } >+ >+ private static DependentResource[] loadResources( IConfigurationElement[] elements ) { >+ DependentResource[] result = new DependentResource[ elements.length ]; > for( int i = 0; i < elements.length; i++ ) { > try { > IResource resource = ( IResource )elements[ i ].createExecutableExtension( "class" ); >- RWTFactory.getResourceRegistry().add( resource ); >- } catch( final CoreException ce ) { >+ String resourceId = elements[ i ].getAttribute( "id" ); >+ IConfigurationElement[] dependsOn = elements[ i ].getChildren( "dependsOn" ); >+ List resourceDependencies = new ArrayList(); >+ for( int j = 0 ; j < dependsOn.length ; j++ ) { >+ String dependency = dependsOn[ j ].getAttribute( "resourceId" ); >+ resourceDependencies.add( dependency ); >+ } >+ result[ i ] = new DependentResource( resource, resourceId, resourceDependencies ); >+ } catch( CoreException ce ) { > WorkbenchPlugin.getDefault().getLog().log( ce.getStatus() ); > } > } >+ return result; >+ } >+ >+ private static DependentResource[] sortResources( DependentResource[] resources ) { >+ DependentResource[] result = new DependentResource[ resources.length ]; >+ List sortedResourceIds = new ArrayList(); >+ List deferredResources = new ArrayList(); >+ int index = 0; >+ for( int i = 0; i < resources.length; i++ ) { >+ DependentResource resource = resources[ i ]; >+ if( resource != null ) { >+ resource.dependencies.removeAll( sortedResourceIds ); >+ boolean checkDeferredResources = false; >+ if( resource.dependencies.isEmpty() ) { >+ result[ index++ ] = resource; >+ sortedResourceIds.add( resource.id ); >+ checkDeferredResources = true; >+ } else { >+ deferredResources.add( resource ); >+ } >+ while( checkDeferredResources ) { >+ checkDeferredResources = false; >+ for( Iterator iterator = deferredResources.iterator(); iterator.hasNext(); ) { >+ DependentResource deferredResource = ( DependentResource )iterator.next(); >+ deferredResource.dependencies.removeAll( sortedResourceIds ); >+ if( deferredResource.dependencies.isEmpty() ) { >+ result[ index++ ] = deferredResource; >+ sortedResourceIds.add( deferredResource.id ); >+ iterator.remove(); >+ checkDeferredResources = true; >+ } >+ } >+ } >+ } >+ } >+ 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 ) ); >+ } >+ return result; >+ } >+ >+ private static void registerResources( DependentResource[] resources ) { >+ for( int i = 0; i < resources.length; i++ ) { >+ if( resources[ i ] != null ) { >+ RWTFactory.getResourceRegistry().add( resources[ i ].resource ); >+ } >+ } > } > > 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