[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Equinox Aspects: error can't determine modifiersof missing type

Hi Oren!

Indeed, re-exporting the pde.ui bundle solves the problem, thanks! Could you
please explain the meaning of the re-export statement and in particular when
should I re-export a dependent bundle? Should I simply re-export all
dependent bundles?

You don't need to re-export everything, definitely not. There are two different things that need a re-export:


- Types (aka packages) that the weaver injects into the target class that are not part of your aspect bundle.

- Types (aka packages) that the weaver needs for the weaving process itself (pointcut resolution, for example) that are not part of your aspect bundle.

Sometimes its get fuzzy to find out what to re-export and what not. Maybe we should open a bug for this to thing about making this easier to use. Would you open a bug in bugzilla for this? That would be great!

Thanks!!!

Best regards,
-Martin




Oren


-----Original Message-----
From: equinox-dev-bounces@xxxxxxxxxxx
[mailto:equinox-dev-bounces@xxxxxxxxxxx] On Behalf Of Martin Lippert
Sent: Sunday, October 26, 2008 2:43 PM
To: Equinox development mailing list
Subject: Re: [equinox-dev] Equinox Aspects: error can't determine
modifiersof missing type

Hi Oren!

The problem seems to occur when the jface bundle is woven and I assume that the weaver cannot resolve the type from the pde-ui bundle that you are using inside your aspect (the weaver needs to resolve that type if its directly used within the pointcut). What happens if you re-export the pde.ui bundle?

-Martin


Oren Mishali wrote:
Hi,



I'm trying to write a simple aspect that prints a message when the Cancel
button of a specific wizard (the Plug-in Project Creation Wizard) is
pressed. Here is the aspect's code:



import org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard;
//org.eclipse.pde.ui

import org.eclipse.jface.wizard.Wizard; // org.eclipse.jface



public aspect PluginWizardCancelPressed {



            after(): execution(* Wizard.performCancel(..)) &&
this(NewPluginProjectWizard){

                        System.out.println(thisJoinPoint);

            }

}







Upon execution I get tons of errors (shown below), and the aspect has no
effect. Note that everything works fine when rewriting the aspect in the
following way:



public aspect PluginWizardCancelPressed {



            after(Object obj): execution(* Wizard.performCancel(..)) &&
this(obj){

                        if(obj instanceof  NewPluginProjectWizard)

                                    System.out.println(thisJoinPoint);

            }

}



Any suggestions?



Thanks,

Oren



The errors:

[org.eclipse.jface] error can't determine modifiers of missing type
org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard

when processing type mungers org.eclipse.jface.preference.IPreferenceStore

when processing type mungers

when weaving

 [Xlint:cantFindType]

[org.eclipse.jface] error can't determine modifiers of missing type
org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard

when processing type mungers org.eclipse.jface.internal.JFaceActivator

when processing type mungers

when weaving

 [Xlint:cantFindType]

[org.eclipse.jface] error can't determine modifiers of missing type
org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard

when processing type mungers org.eclipse.jface.dialogs.IDialogSettings

when processing type mungers

when weaving

 [Xlint:cantFindType]

[org.eclipse.jface] error can't determine modifiers of missing type
org.eclipse.pde.internal.ui.wizards.plugin.NewPluginProjectWizard

when processing type mungers
org.eclipse.jface.preference.PreferenceManager
when processing type mungers

when weaving

.

.



The manifest of the plug-in project containing the aspect:

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: Repository Plug-in

Bundle-SymbolicName: org.highlevelaj.repository

Bundle-Version: 1.0.0

Bundle-Activator: org.highlevelaj.repository.Activator

Require-Bundle: org.eclipse.ui,

 org.eclipse.core.runtime,

 org.aspectj.runtime;visibility:=reexport,

 org.highlevelaj,

 org.eclipse.pde.ui

Eclipse-LazyStart: true

Export-Package: org.aspectj,

 org.highlevelaj.repository

Eclipse-SupplementBundle: org.eclipse.pde.ui, org.eclipse.jface












------------------------------------------------------------------------

_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev