Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] [Salvo] Provide a way for other projects to hook their newsgroups into Salvo

Hi Wim,

I made changes in Ask A Question wizard according to your suggestions.
Please have a look.

If it is ok, we can pull this functionality to Salvo main repository.

Thank you.

On Wed, Aug 10, 2011 at 3:37 AM, Wim Jongman <wim.jongman@xxxxxxxxx> wrote:
NICE!!!! 

This is great stuff. Really really nice. Good job! 

Here are some test results:

In ask a question, I would switch the suggested newsgroup with the available newsgroup and automatically select the suggested newsgroup if it is available. 

There is also this exception when I used the suggested newsgroup from your test plugin:


org.eclipse.ecf.protocol.nntp.model.NNTPIOException: 211 288 1 288 eclipse.p2


at org.eclipse.ecf.protocol.nntp.core.internal.ServerStoreFacade.postNewArticle(ServerStoreFacade.java:442)

at org.eclipse.ecf.salvo.ui.wizards.AskAQuestionWizard.performFinish(AskAQuestionWizard.java:81)

at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:811)

at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:430)

at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)

at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)

at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)

at org.eclipse.jface.window.Window.open(Window.java:801)

at org.eclipse.ecf.salvo.ui.internal.handlers.AskAquestionHandler.execute(AskAquestionHandler.java:42)

at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)

at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)

at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)

at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)

at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)

at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)

at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)

at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)

at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)

at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)

at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)

at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)

at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)

at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)

at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)

at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)

at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)

at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

at org.eclipse.equinox.launcher.Main.main(Main.java:1384)

Caused by: org.eclipse.ecf.protocol.nntp.model.UnexpectedResponseException: 211 288 1 288 eclipse.p2


at org.eclipse.ecf.protocol.nntp.core.internal.ServerConnection.postNewArticle(ServerConnection.java:699)

at org.eclipse.ecf.protocol.nntp.core.internal.ServerStoreFacade.postNewArticle(ServerStoreFacade.java:435)

... 53 more





On Tue, Aug 9, 2011 at 5:18 PM, Isuru Udana <isudana@xxxxxxxxx> wrote:
Hi Wim, Harshana,

Newsgroup Provider Extension Point
I have implemented the extension point 'newsgroupProvider' which allows other projects to hook into salvo.
All providers must implement the INewsGroupProvider. 
There we can specify the information needed to connect to the newsgroup.

A provider can decide when to enable the newsgroup using core expressions.
Please see the newsgroupProvider.exsd schema file, there I have documented the examples and the API Information.

Ask A question Wizard
I have made some changes to the "Ask A Question Wizard'.
Now the Wizard detect and shows newsgroup suggestions to user.

Digest View
Fixed some bugs which I found on the digest view.
A store listener is added to the digest view to update according to new newsgroup subscribes/ unsubscribes.

Please have a look at the implementation.

Thank you

On Tue, Aug 2, 2011 at 10:11 PM, Isuru Udana <isudana@xxxxxxxxx> wrote:


On Tue, Aug 2, 2011 at 8:00 PM, Isuru Udana <isudana@xxxxxxxxx> wrote:


On Tue, Aug 2, 2011 at 7:35 PM, Wim Jongman <wim.jongman@xxxxxxxxx> wrote:
Hi,

I was thinking the following:

We want to give the suppliers of plugin functionality the opportunity to direct their users to the correct forum or newsgroup thru an extension point.

For example, if I provide a plugin that does wireframe sketching then I want the users of the wireframe software to ask a question in my specific forum. 

If the java perspective is active, then I want the user to ask a question in the jdt newsgroup. 

If the Mylyn task view is active then I want my question toe be directed there. 

So Salvo must be able to determine the context of the user environment and based on this, the ask a question handler must propose the correct newsgroup:

If the proposed newsgroup is not correct, then the user can select one of the subscribed newsgroups or one of the newsgroups supplied by other extenders to the extension point.

We want to attach a NewsgroupFactory class to the extension point that gets called to extract the server, the server credentials and the newsgroup where the question can be asked (amongst other things). 

If the user is not yet subscribed to the server, the factory must supply it so that we can subscribe automatically from there.

Maybe we can use the core _expression_ framework to select the newsgroup proposal.

newsgroupExtension

id=fddfsf

factory=(implements INewsGroupFactory) (getServer, getServerCredentials, getNewsGroup, getTopic, getAttachement, getStackTrace)

activewhen
   activePerspective = org.eclipse.jdt
   activeView = xyz
   etc.. etcc


How about this first draft?

Yes. I was thinking a similar one.

But I have some doubts on how we can extract credentials form the NewsgroupFactory (defined by the hooked project). They cannot be hard coded like server address, port etc.
We might have to allow user to input credentials when he is going to ask a question.

We can ask suppliers (other projects) to implement a interface (say INewsgroupProvider) of Salvo.

In that interface it is required to specify the following.
The project namespace
Newsgroup
Server address, port, etc.
(Credentials cannot be defined here)

In salvo we can figure out the relevant newsgroup from the part Id and the namespace.

1. If the user has not subscribed to the server, we can show the NewNewsServer wizard with filled host address, port etc. And let the user to specify the credentials.
2. If user has already subscribed to the server, we can proceed further.
Then we can check whether user has subscribe to the particular newsgroup. If not we can subscribe at that point.
 

 
Regards,

Wim


On Tue, Aug 2, 2011 at 1:24 PM, Isuru Udana <isudana@xxxxxxxxx> wrote:
Hi,

I am planing for a design for this functionality.

I want to clarify some doubt.

To ask a question from a hooked project, does user have to subscribe to it's newsgroup with salvo in the first place?


--
Regards,
Isuru Udana

Undergraduate
Department of Computer Science & Engineering,
University of Moratuwa
.

Blog
: http://mytecheye.blogspot.com/
gTalk: isudana  skype: isudana









--
Regards,
Isuru Udana

Undergraduate
Department of Computer Science & Engineering,
University of Moratuwa
.

Blog
: http://mytecheye.blogspot.com/
gTalk: isudana  skype: isudana








--
Regards,
Isuru Udana

Undergraduate
Department of Computer Science & Engineering,
University of Moratuwa
.

Blog
: http://mytecheye.blogspot.com/
gTalk: isudana  skype: isudana








--
Regards,
Isuru Udana

Undergraduate
Department of Computer Science & Engineering,
University of Moratuwa
.

Blog
: http://mytecheye.blogspot.com/
gTalk: isudana  skype: isudana









--
Regards,
Isuru Udana

Undergraduate
Department of Computer Science & Engineering,
University of Moratuwa
.

Blog
: http://mytecheye.blogspot.com/
gTalk: isudana  skype: isudana






Back to the top