Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 321807

Summary: JET transformation in new installed bundles can't come to work
Product: z_Archived Reporter: Hoiyor Chen <hoiyor>
Component: JetAssignee: Project Inbox <m2t.jet-inbox>
Status: NEW --- QA Contact:
Severity: major    
Priority: P3 CC: hoiyor, pelder.eclipse
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Hoiyor Chen CLA 2010-08-04 21:25:37 EDT
Build Identifier: 201001291720

I have a deployed JET transformation in an Eclipse plugin bundle. And I install the bundle into eclipse dynamically. 

But the registry change event can't be handled successfully by DeployedJETBundleProvider.

The newly deployed JET transformation can't come to work.

I think DeployedJETBundleProvider.java may be changed as:
  
  public void startup()
  {
    IExtensionRegistry reg = Platform.getExtensionRegistry();
    IConfigurationElement[] configElements = reg.getConfigurationElementsFor(EXTENSION_POINT_ID);
    addTransforms(configElements);

    // reg.addRegistryChangeListener(this, EXTENSION_POINT_ID);
    // EXTENSION_POINT_ID should be PLUGIN_ID
    reg.addRegistryChangeListener(this, PLUGIN_ID);

  }

  public void registryChanged(IRegistryChangeEvent event)
  {

    // IExtensionDelta[] deltas = event.getExtensionDeltas(EXTENSION_POINT_ID);
    // EXTENSION_POINT_ID should be PLUGIN_ID
    IExtensionDelta[] deltas = event.getExtensionDeltas(PLUGIN_ID);

    for (int i = 0; i < deltas.length; i++)
    {
      IExtension ext = deltas[i].getExtension();
      if (deltas[i].getKind() == IExtensionDelta.ADDED)
      {
        addTransforms(ext.getConfigurationElements());
      }
      else
      {
        removeTransforms(ext.getConfigurationElements());
      }
    }
  }

Reproducible: Always

Steps to Reproduce:
See details in Details :-)
Comment 1 Hoiyor Chen CLA 2010-08-05 21:26:13 EDT
Recommend code modification update:

  public void startup()
  {
    IExtensionRegistry reg = Platform.getExtensionRegistry();
    IConfigurationElement[] configElements =
reg.getConfigurationElementsFor(EXTENSION_POINT_ID);
    addTransforms(configElements);

    // reg.addRegistryChangeListener(this, EXTENSION_POINT_ID);
    // EXTENSION_POINT_ID should be PLUGIN_ID
    reg.addRegistryChangeListener(this, PLUGIN_ID);

  }

  public void registryChanged(IRegistryChangeEvent event)
  {

    // IExtensionDelta[] deltas = event.getExtensionDeltas(EXTENSION_POINT_ID);
    // EXTENSION_POINT_ID should be PLUGIN_ID, EXTENSION_NAME
    IExtensionDelta[] deltas = event.getExtensionDeltas(PLUGIN_ID, EXTENSION_NAME);

    for (int i = 0; i < deltas.length; i++)
    {
      IExtension ext = deltas[i].getExtension();
      if (deltas[i].getKind() == IExtensionDelta.ADDED)
      {
        addTransforms(ext.getConfigurationElements());
      }
      else
      {
        removeTransforms(ext.getConfigurationElements());
      }
    }
  }