Skip to main content



      Home
Home » Eclipse Projects » Remote Application Platform (RAP) » importPreferences throws exception
importPreferences throws exception [message #132451] Tue, 12 May 2009 12:02 Go to next message
Eclipse UserFriend
Hi,

since a while my RAP-application throws an exception when I want to
import my preferences using
Platform.getPreferencesService().importPreferences( new FileInputStream(
propertiesFile ) );

Could somebody explain me why this happens and how I get it fixed?

best regards Roland

Here is the stackTrace.

!ENTRY org.eclipse.rap.ui.workbench 4 2 2009-05-12 17:56:41.937
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.rap.ui.workbench".
!STACK 0
java.lang.NullPointerException
at
org.eclipse.ui.internal.progress.ProgressInfoItem.init(Progr essInfoItem.java:164)
at
org.eclipse.ui.internal.progress.ProgressManager$ProgressMan agerProvider.getInstance(ProgressManager.java:73)
at
org.eclipse.ui.internal.progress.ProgressManager.getInstance (ProgressManager.java:151)
at
org.eclipse.ui.internal.progress.JobManagerAdapter$3.run(Job ManagerAdapter.java:170)
at
org.eclipse.rwt.internal.lifecycle.UICallBackServiceHandler. runNonUIThreadWithFakeContext(UICallBackServiceHandler.java: 456)
at
org.eclipse.rwt.lifecycle.UICallBack.runNonUIThreadWithFakeC ontext(UICallBack.java:44)
at
org.eclipse.ui.internal.progress.JobManagerAdapter.findProgr essManager(JobManagerAdapter.java:168)
at
org.eclipse.ui.internal.progress.JobManagerAdapter.scheduled (JobManagerAdapter.java:149)
at
org.eclipse.core.internal.jobs.JobListeners$5.notify(JobList eners.java:49)
at
org.eclipse.core.internal.jobs.JobListeners.doNotify(JobList eners.java:96)
at
org.eclipse.core.internal.jobs.JobListeners.scheduled(JobLis teners.java:162)
at org.eclipse.core.internal.jobs.JobManager.schedule(JobManage r.java:976)
at
org.eclipse.core.internal.jobs.InternalJob.schedule(Internal Job.java:376)
at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:435)
at
org.eclipse.jdt.internal.core.JavaModelManager.startup(JavaM odelManager.java:4361)
at org.eclipse.jdt.core.JavaCore.start(JavaCore.java:4906)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:1009)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:1003)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:984)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:265)
at
org.eclipse.osgi.framework.util.SecureAction.start(SecureAct ion.java:400)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .postFindLocalClass(EclipseLazyStarter.java:111)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:427)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:193)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:368)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:444)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
at java.lang.ClassLoader.loadClass(Unknown Source)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader.java:313)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.java:227)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.load Class(AbstractBundle.java:1274)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .createExecutableExtension(RegistryStrategyOSGI.java:160)
at
org.eclipse.core.internal.registry.ExtensionRegistry.createE xecutableExtension(ExtensionRegistry.java:867)
at
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExtension(ConfigurationElement.java:243)
at
org.eclipse.core.internal.registry.ConfigurationElementHandl e.createExecutableExtension(ConfigurationElementHandle.java: 51)
at
org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.addModifyListener(PreferenceServiceRegistryHelper. java:90)
at
org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.getModifyListeners(PreferenceServiceRegistryHelper .java:186)
at
org.eclipse.core.internal.preferences.PreferencesService.fir ePreApplyEvent(PreferencesService.java:436)
at
org.eclipse.core.internal.preferences.PreferencesService.app lyPreferences(PreferencesService.java:120)
at
org.eclipse.core.internal.preferences.PreferencesService.imp ortPreferences(PreferencesService.java:674)
at com.test.misc.MyPreferences.importPreferences(Preferences.ja va:297)
at com.test.misc.MyPreferences.<init>(Preferences.java:77)
at com.test.Application.createUI(Application.java:30)
at
org.eclipse.rwt.internal.lifecycle.EntryPointManager.createU I(EntryPointManager.java:92)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWT LifeCycle.java:231)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:119)
at java.lang.Thread.run(Unknown Source)
Re: importPreferences throws exception [message #132504 is a reply to message #132451] Tue, 12 May 2009 13:42 Go to previous messageGo to next message
Eclipse UserFriend
Roland,

line 164 in ProgressInfoItem.java points to getWorkbench() or
getDisplay(). Does any of these return null?
If so you are most likely running the code outside a session. E.g.
in Activator#start() or from within a background thread.

HTH
Rüdiger


Roland wrote:
> Hi,
>
> since a while my RAP-application throws an exception when I want to
> import my preferences using
> Platform.getPreferencesService().importPreferences( new FileInputStream(
> propertiesFile ) );
>
> Could somebody explain me why this happens and how I get it fixed?
>
> best regards Roland
>
> Here is the stackTrace.
>
> !ENTRY org.eclipse.rap.ui.workbench 4 2 2009-05-12 17:56:41.937
> !MESSAGE Problems occurred when invoking code from plug-in:
> "org.eclipse.rap.ui.workbench".
> !STACK 0
> java.lang.NullPointerException
> at
> org.eclipse.ui.internal.progress.ProgressInfoItem.init(Progr essInfoItem.java:164)
>
> at
> org.eclipse.ui.internal.progress.ProgressManager$ProgressMan agerProvider.getInstance(ProgressManager.java:73)
>
> at
> org.eclipse.ui.internal.progress.ProgressManager.getInstance (ProgressManager.java:151)
>
> at
> org.eclipse.ui.internal.progress.JobManagerAdapter$3.run(Job ManagerAdapter.java:170)
>
> at
> org.eclipse.rwt.internal.lifecycle.UICallBackServiceHandler. runNonUIThreadWithFakeContext(UICallBackServiceHandler.java: 456)
>
> at
> org.eclipse.rwt.lifecycle.UICallBack.runNonUIThreadWithFakeC ontext(UICallBack.java:44)
>
> at
> org.eclipse.ui.internal.progress.JobManagerAdapter.findProgr essManager(JobManagerAdapter.java:168)
>
> at
> org.eclipse.ui.internal.progress.JobManagerAdapter.scheduled (JobManagerAdapter.java:149)
>
> at
> org.eclipse.core.internal.jobs.JobListeners$5.notify(JobList eners.java:49)
> at
> org.eclipse.core.internal.jobs.JobListeners.doNotify(JobList eners.java:96)
> at
> org.eclipse.core.internal.jobs.JobListeners.scheduled(JobLis teners.java:162)
>
> at
> org.eclipse.core.internal.jobs.JobManager.schedule(JobManage r.java:976)
> at
> org.eclipse.core.internal.jobs.InternalJob.schedule(Internal Job.java:376)
> at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:435)
> at
> org.eclipse.jdt.internal.core.JavaModelManager.startup(JavaM odelManager.java:4361)
>
> at org.eclipse.jdt.core.JavaCore.start(JavaCore.java:4906)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:1009)
>
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:1003)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:984)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
>
> at
> org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:265)
>
> at
> org.eclipse.osgi.framework.util.SecureAction.start(SecureAct ion.java:400)
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .postFindLocalClass(EclipseLazyStarter.java:111)
>
> at
> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:427)
>
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:193)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:368)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:444)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
>
> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
>
> at java.lang.ClassLoader.loadClass(Unknown Source)
> at
> org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader.java:313)
>
> at
> org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.java:227)
>
> at
> org.eclipse.osgi.framework.internal.core.AbstractBundle.load Class(AbstractBundle.java:1274)
>
> at
> org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .createExecutableExtension(RegistryStrategyOSGI.java:160)
>
> at
> org.eclipse.core.internal.registry.ExtensionRegistry.createE xecutableExtension(ExtensionRegistry.java:867)
>
> at
> org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExtension(ConfigurationElement.java:243)
>
> at
> org.eclipse.core.internal.registry.ConfigurationElementHandl e.createExecutableExtension(ConfigurationElementHandle.java: 51)
>
> at
> org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.addModifyListener(PreferenceServiceRegistryHelper. java:90)
>
> at
> org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.getModifyListeners(PreferenceServiceRegistryHelper .java:186)
>
> at
> org.eclipse.core.internal.preferences.PreferencesService.fir ePreApplyEvent(PreferencesService.java:436)
>
> at
> org.eclipse.core.internal.preferences.PreferencesService.app lyPreferences(PreferencesService.java:120)
>
> at
> org.eclipse.core.internal.preferences.PreferencesService.imp ortPreferences(PreferencesService.java:674)
>
> at com.test.misc.MyPreferences.importPreferences(Preferences.ja va:297)
> at com.test.misc.MyPreferences.<init>(Preferences.java:77)
> at com.test.Application.createUI(Application.java:30)
> at
> org.eclipse.rwt.internal.lifecycle.EntryPointManager.createU I(EntryPointManager.java:92)
>
> at
> org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWT LifeCycle.java:231)
>
> at
> org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:119)
>
> at java.lang.Thread.run(Unknown Source)
Re: importPreferences throws exception [message #132594 is a reply to message #132504] Wed, 13 May 2009 05:23 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

I found the problem.

In the EntryPoint I created a Display before I import the Preferences.

public class Application implements IEntryPoint {
private Display display;

public int createUI() {
display = PlatformUI.createDisplay();
ISessionStore store = RWT.getSessionStore();
store.addSessionStoreListener( new MySessionStoreListener() );
new Preferences().import();
return PlatformUI.createAndRunWorkbench( display, new
ApplicationWorkbenchAdvisor() );
}
}

Now I changed it to the following.


public class Application implements IEntryPoint {
private Display display;

public int createUI() {
display = PlatformUI.createDisplay();
ISessionStore store = RWT.getSessionStore();
store.addSessionStoreListener( new MySessionStoreListener() );
new Preferences().import();
return PlatformUI.createAndRunWorkbench( display, new
ApplicationWorkbenchAdvisor() );
}
}

And now there is no exception thrown.

But I don't really understand this.

Roland

Rüdiger Herrmann schrieb:
> Roland,
>
> line 164 in ProgressInfoItem.java points to getWorkbench() or
> getDisplay(). Does any of these return null?
> If so you are most likely running the code outside a session. E.g. in
> Activator#start() or from within a background thread.
>
> HTH
> Rüdiger
Re: importPreferences throws exception [message #132709 is a reply to message #132594] Wed, 13 May 2009 10:16 Go to previous messageGo to next message
Eclipse UserFriend
Roland,

I don't see the difference between the two snippets.

Cheers,
Rüdiger

Roland wrote:
> Hi,
>
> I found the problem.
>
> In the EntryPoint I created a Display before I import the Preferences.
>
> public class Application implements IEntryPoint {
> private Display display;
>
> public int createUI() {
> display = PlatformUI.createDisplay();
> ISessionStore store = RWT.getSessionStore();
> store.addSessionStoreListener( new MySessionStoreListener() );
> new Preferences().import();
> return PlatformUI.createAndRunWorkbench( display, new
> ApplicationWorkbenchAdvisor() );
> }
> }
>
> Now I changed it to the following.
>
>
> public class Application implements IEntryPoint {
> private Display display;
>
> public int createUI() {
> display = PlatformUI.createDisplay();
> ISessionStore store = RWT.getSessionStore();
> store.addSessionStoreListener( new MySessionStoreListener() );
> new Preferences().import();
> return PlatformUI.createAndRunWorkbench( display, new
> ApplicationWorkbenchAdvisor() );
> }
> }
>
> And now there is no exception thrown.
>
> But I don't really understand this.
>
> Roland
>
> Rüdiger Herrmann schrieb:
>> Roland,
>>
>> line 164 in ProgressInfoItem.java points to getWorkbench() or
>> getDisplay(). Does any of these return null?
>> If so you are most likely running the code outside a session. E.g. in
>> Activator#start() or from within a background thread.
>>
>> HTH
>> Rüdiger
Re: importPreferences throws exception [message #132722 is a reply to message #132709] Wed, 13 May 2009 10:24 Go to previous messageGo to next message
Eclipse UserFriend
Oh sorry, just paste old one again.

public class Application implements IEntryPoint {
private Display display;

public int createUI() {
ISessionStore store = RWT.getSessionStore();
store.addSessionStoreListener( new MySessionStoreListener() );
new Preferences().import();

display = PlatformUI.createDisplay();

return PlatformUI.createAndRunWorkbench( display, new
ApplicationWorkbenchAdvisor() );
}
}

The display is created later (after import the preferences).


Roland


Rüdiger Herrmann schrieb:
> Roland,
>
> I don't see the difference between the two snippets.
>
> Cheers,
> Rüdiger
>
> Roland wrote:
>> Hi,
>>
>> I found the problem.
>>
>> In the EntryPoint I created a Display before I import the Preferences.
>>
>> public class Application implements IEntryPoint {
>> private Display display;
>>
>> public int createUI() {
>> display = PlatformUI.createDisplay();
>> ISessionStore store = RWT.getSessionStore();
>> store.addSessionStoreListener( new MySessionStoreListener() );
>> new Preferences().import();
>> return PlatformUI.createAndRunWorkbench( display, new
>> ApplicationWorkbenchAdvisor() );
>> }
>> }
>>
>> Now I changed it to the following.
>>
>>
>> public class Application implements IEntryPoint {
>> private Display display;
>>
>> public int createUI() {
>> display = PlatformUI.createDisplay();
>> ISessionStore store = RWT.getSessionStore();
>> store.addSessionStoreListener( new MySessionStoreListener() );
>> new Preferences().import();
>> return PlatformUI.createAndRunWorkbench( display, new
>> ApplicationWorkbenchAdvisor() );
>> }
>> }
>>
>> And now there is no exception thrown.
>>
>> But I don't really understand this.
>>
>> Roland
>>
>> Rüdiger Herrmann schrieb:
>>> Roland,
>>>
>>> line 164 in ProgressInfoItem.java points to getWorkbench() or
>>> getDisplay(). Does any of these return null?
>>> If so you are most likely running the code outside a session. E.g. in
>>> Activator#start() or from within a background thread.
>>>
>>> HTH
>>> Rüdiger
Re: importPreferences throws exception [message #132732 is a reply to message #132722] Wed, 13 May 2009 10:48 Go to previous messageGo to next message
Eclipse UserFriend
Roland wrote:
> Oh sorry, just paste old one again.
>
> public class Application implements IEntryPoint {
> private Display display;
>
> public int createUI() {
> ISessionStore store = RWT.getSessionStore();
> store.addSessionStoreListener( new MySessionStoreListener() );
> new Preferences().import();
Just follow the stack trace, in ProgressInfoItem.init() the display
is needed to retrieve a system color. If there is none, a NPE occurs.
Does that answer your question?


>
> display = PlatformUI.createDisplay();
>
> return PlatformUI.createAndRunWorkbench( display, new
> ApplicationWorkbenchAdvisor() );
> }
> }
>
> The display is created later (after import the preferences).
>
>
> Roland
>
>
> Rüdiger Herrmann schrieb:
>> Roland,
>>
>> I don't see the difference between the two snippets.
>>
>> Cheers,
>> Rüdiger
>>
>> Roland wrote:
>>> Hi,
>>>
>>> I found the problem.
>>>
>>> In the EntryPoint I created a Display before I import the Preferences.
>>>
>>> public class Application implements IEntryPoint {
>>> private Display display;
>>>
>>> public int createUI() {
>>> display = PlatformUI.createDisplay();
>>> ISessionStore store = RWT.getSessionStore();
>>> store.addSessionStoreListener( new MySessionStoreListener() );
>>> new Preferences().import();
>>> return PlatformUI.createAndRunWorkbench( display, new
>>> ApplicationWorkbenchAdvisor() );
>>> }
>>> }
>>>
>>> Now I changed it to the following.
>>>
>>>
>>> public class Application implements IEntryPoint {
>>> private Display display;
>>>
>>> public int createUI() {
>>> display = PlatformUI.createDisplay();
>>> ISessionStore store = RWT.getSessionStore();
>>> store.addSessionStoreListener( new MySessionStoreListener() );
>>> new Preferences().import();
>>> return PlatformUI.createAndRunWorkbench( display, new
>>> ApplicationWorkbenchAdvisor() );
>>> }
>>> }
>>>
>>> And now there is no exception thrown.
>>>
>>> But I don't really understand this.
>>>
>>> Roland
>>>
>>> Rüdiger Herrmann schrieb:
>>>> Roland,
>>>>
>>>> line 164 in ProgressInfoItem.java points to getWorkbench() or
>>>> getDisplay(). Does any of these return null?
>>>> If so you are most likely running the code outside a session. E.g.
>>>> in Activator#start() or from within a background thread.
>>>>
>>>> HTH
>>>> Rüdiger
Re: importPreferences throws exception [message #132745 is a reply to message #132732] Wed, 13 May 2009 11:39 Go to previous messageGo to next message
Eclipse UserFriend
> Just follow the stack trace, in ProgressInfoItem.init() the display is
> needed to retrieve a system color. If there is none, a NPE occurs.

I understand that.

But I create a display before I this, there is none at this point.
That is what sounds strange to me.

Roland
Re: importPreferences throws exception [message #132758 is a reply to message #132745] Wed, 13 May 2009 15:23 Go to previous messageGo to next message
Eclipse UserFriend
Roland wrote:
>> Just follow the stack trace, in ProgressInfoItem.init() the display is
>> needed to retrieve a system color. If there is none, a NPE occurs.
>
> I understand that.
>
> But I create a display before I this, there is none at this point.
I am afraid, I don't understand the sentence.

> That is what sounds strange to me.
>
> Roland
Re: importPreferences throws exception [message #132924 is a reply to message #132758] Fri, 15 May 2009 00:51 Go to previous messageGo to next message
Eclipse UserFriend
Sorry. :) My English is somethimes not so good.

old version:

1. create display
2. import preferences
3. NPE at ProgressInfoItem.init(), because there is no display

new version:

1. import preferences
2. no NPE at ProgressInfoItem.init(), because there is a display
3. create display

What I don't understand is, that I create in my old version a display
before point 3. ,but there is none.
And when create the display after this point, it exists one.

Hope you understand me. :)

Roland
Re: importPreferences throws exception [message #133034 is a reply to message #132924] Fri, 15 May 2009 07:19 Go to previous messageGo to next message
Eclipse UserFriend
Roland Siebert wrote:
> Sorry. :) My English is somethimes not so good.
>
> old version:
>
> 1. create display
> 2. import preferences
> 3. NPE at ProgressInfoItem.init(), because there is no display
>
> new version:
>
> 1. import preferences
> 2. no NPE at ProgressInfoItem.init(), because there is a display
> 3. create display
>
> What I don't understand is, that I create in my old version a display
> before point 3. ,but there is none.
> And when create the display after this point, it exists one.
>
> Hope you understand me. :)
Yes, now I got it:) But I doubt that your observations are right.
Did you double check that? Can you post a self-contained snippet to
demonstrate that (snippets from previous posts don't compile)?


>
> Roland
Re: importPreferences throws exception [message #133575 is a reply to message #133034] Wed, 20 May 2009 02:06 Go to previous message
Eclipse UserFriend
Hi,

I can do so. But this week I have no time.

Roland

Rüdiger Herrmann schrieb:
> Roland Siebert wrote:
>> Sorry. :) My English is somethimes not so good.
>>
>> old version:
>>
>> 1. create display
>> 2. import preferences
>> 3. NPE at ProgressInfoItem.init(), because there is no display
>>
>> new version:
>>
>> 1. import preferences
>> 2. no NPE at ProgressInfoItem.init(), because there is a display
>> 3. create display
>>
>> What I don't understand is, that I create in my old version a display
>> before point 3. ,but there is none.
>> And when create the display after this point, it exists one.
>>
>> Hope you understand me. :)
> Yes, now I got it:) But I doubt that your observations are right. Did
> you double check that? Can you post a self-contained snippet to
> demonstrate that (snippets from previous posts don't compile)?
>
>
>>
>> Roland
Previous Topic:"Hello World" Tutorial doesn't work
Next Topic:Information on defaults Preferences
Goto Forum:
  


Current Time: Fri Jul 25 15:46:47 EDT 2025

Powered by FUDForum. Page generated in 0.05381 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top