Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » [Eugenia] Running Eugenia from Ant?
[Eugenia] Running Eugenia from Ant? [message #468726] Wed, 05 August 2009 17:10 Go to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hello all,

I've been learning EMF, GMF and Epsilon for the past few weeks and I
have to say I'm quite impressed. They're all very good tools. I
particularly like how I can generate all the GMF models with Eugenia and
customize what I need using some EOL scripts.

That said, I'd like to automate the generation/compilation process a
bit. There are Ant tasks for the EMF2ECore part and Epsilon also defines
tasks for all the ExL languages and manipulating models. However, I
haven't found any for Eugenia itself.

Looking at the o.e.epsilon.eugenia/src/.../*Delegate.java files in SVN,
I think it could be as simple as running epsilon.eol with the
FixGMFGen.eol, FinGenModel.eol and ECore2GMF.eol scripts and the proper
models.

I believe I could just as well grab these files from SVN and copy them
to my project, but it doesn't feel right. I'd like to use the .eol files
which are part of the Eugenia plugin itself, but I'm not sure how to get
at them using the src attribute of epsilon.eol, if at all possible.
Would it be better to just write new Ant tasks in a plugin and wrap the
runImpl methods of the delegates?

Thanks in advance,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #478429 is a reply to message #468726] Thu, 06 August 2009 09:48 Go to previous messageGo to next message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hello all,
>
> I've been learning EMF, GMF and Epsilon for the past few weeks and I
> have to say I'm quite impressed. They're all very good tools. I
> particularly like how I can generate all the GMF models with Eugenia and
> customize what I need using some EOL scripts.

Thank-you for the feedback. It's great to hear positive reports :-)

>
> That said, I'd like to automate the generation/compilation process a
> bit. There are Ant tasks for the EMF2ECore part and Epsilon also defines
> tasks for all the ExL languages and manipulating models. However, I
> haven't found any for Eugenia itself.
>
> Looking at the o.e.epsilon.eugenia/src/.../*Delegate.java files in SVN,
> I think it could be as simple as running epsilon.eol with the
> FixGMFGen.eol, FinGenModel.eol and ECore2GMF.eol scripts and the proper
> models.

Yes, that seems like a sensible approach. However, the tasks that
Epsilon contributes to ANT can only be used to specify file names as
source programs. If URIs could be specified, a platform URI could be
used to reference the EuGENia EOL files from within the EuGENia plugin.

So, one approach would be to add support to the Epsilon ANT tasks for
loading source files from URIs.

>
> I believe I could just as well grab these files from SVN and copy them
> to my project, but it doesn't feel right. I'd like to use the .eol files
> which are part of the Eugenia plugin itself, but I'm not sure how to get
> at them using the src attribute of epsilon.eol, if at all possible.
> Would it be better to just write new Ant tasks in a plugin and wrap the
> runImpl methods of the delegates?

The latter sounds like a more specific solution (so would require less
code in the ANT file), but is less flexible. I'm not sure which is more
appropriate.

My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
Epsilon and the Epsilon / ANT integration. I think it would be best to
gather his views. Unfortunately he is on vacation at present, so we may
have to wait for him to return, in a week or so.

In the meantime, could you open an enhancement request via bugzilla to
track this?
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

If you urgently require a solution, do let me know and I can investigate
this in more detail.

Many thanks,
Louis.

----
Louis Rose
Research Student
Department of Computer Science,
University of York,
Heslington, York, YO10 5DD, United Kingdom.
+44 1904 434762
Twitter: @louismrose
Re: [Eugenia] Running Eugenia from Ant? [message #478758 is a reply to message #478429] Thu, 06 August 2009 17:19 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hi Louis,

> Yes, that seems like a sensible approach. However, the tasks that
> Epsilon contributes to ANT can only be used to specify file names as
> source programs. If URIs could be specified, a platform URI could be
> used to reference the EuGENia EOL files from within the EuGENia plugin.

Oops, I didn't notice that the src attribute in the Ant task was of type
File. I'd just assumed it was a path :-/.

> So, one approach would be to add support to the Epsilon ANT tasks for
> loading source files from URIs.

Seeing that EolModule#parse is overloaded for URI objects, we could
probably do it by adding to AbstractModule the getter and setter for the
uri attribute, some validation so src and uri don't get used at the same
time, and modify executeImpl so it uses it.

> The latter sounds like a more specific solution (so would require less
> code in the ANT file), but is less flexible. I'm not sure which is more
> appropriate.

I agree that it is less flexible. I don't think the previous alternative
is that hard to do: perhaps we should try it first.

> My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
> Epsilon and the Epsilon / ANT integration. I think it would be best to
> gather his views. Unfortunately he is on vacation at present, so we may
> have to wait for him to return, in a week or so.

Yes, that'd be best. I'll see if I can make some time and cook up a
patch, so we at least know if it can be done easily.

> In the meantime, could you open an enhancement request via bugzilla to
> track this?
> https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

Sure :-). Here it is:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=285912

> If you urgently require a solution, do let me know and I can investigate
> this in more detail.

No, it's not that urgent. I just thought that it'd be nice, as I'm used
to doing everything with Ant :-).

Thanks,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #478761 is a reply to message #478758] Thu, 06 August 2009 18:21 Go to previous messageGo to next message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hi Louis,
>
>> Yes, that seems like a sensible approach. However, the tasks that
>> Epsilon contributes to ANT can only be used to specify file names as
>> source programs. If URIs could be specified, a platform URI could be
>> used to reference the EuGENia EOL files from within the EuGENia plugin.
>
> Oops, I didn't notice that the src attribute in the Ant task was of type
> File. I'd just assumed it was a path :-/.

Yes, I only discovered this a couple of hours ago too!

>
>> So, one approach would be to add support to the Epsilon ANT tasks for
>> loading source files from URIs.
>
> Seeing that EolModule#parse is overloaded for URI objects, we could
> probably do it by adding to AbstractModule the getter and setter for the
> uri attribute, some validation so src and uri don't get used at the same
> time, and modify executeImpl so it uses it.

I've not looked closely, but I'm not sure if adding to AbstractModule is
the way to do it. I'd have guessed it could be done purely by adding to
ExecutableModuleTask. Not sure though!

>
>> The latter sounds like a more specific solution (so would require less
>> code in the ANT file), but is less flexible. I'm not sure which is more
>> appropriate.
>
> I agree that it is less flexible. I don't think the previous alternative
> is that hard to do: perhaps we should try it first.

Sounds good.

>
>> My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
>> Epsilon and the Epsilon / ANT integration. I think it would be best to
>> gather his views. Unfortunately he is on vacation at present, so we may
>> have to wait for him to return, in a week or so.
>
> Yes, that'd be best. I'll see if I can make some time and cook up a
> patch, so we at least know if it can be done easily.

Great, thanks very much! Do let us know if you need any help :)

>
>> In the meantime, could you open an enhancement request via bugzilla to
>> track this?
>> https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon
>
> Sure :-). Here it is:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=285912

Brilliant, thank you.

>
>> If you urgently require a solution, do let me know and I can investigate
>> this in more detail.
>
> No, it's not that urgent. I just thought that it'd be nice, as I'm used
> to doing everything with Ant :-).

It'd definitely be a nice addition. Thanks for the suggestion and for
investigating. Congratulations on surviving your encounters with the
source code ;-)

Cheers,
Louis.
Re: [Eugenia] Running Eugenia from Ant? [message #478800 is a reply to message #478761] Fri, 07 August 2009 00:15 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hi Louis,

> I've not looked closely, but I'm not sure if adding to AbstractModule is
> the way to do it. I'd have guessed it could be done purely by adding to
> ExecutableModuleTask. Not sure though!

Yes, that's how it turned out to be. I've added a patch to the bug
report which adds URI support to the Epsilon Ant tasks... almost. I've
run into a problem when actually running it.

I prepared a simple example project with an Ant buildfile and a very
simple ECore model. This Ant buildfile uses several
epsilon.emf.loadModel tasks to load/prepare for storage the ECore,
GmfMap, GmfGraph and GmfTool models. The metamodels are loaded just fine
from the URI, but I can't quite load the ECore model itself. I've
described the issure more in detail in the bug report.

The .eol file is run, nevertheless: it actually complains that there was
an attempt to access the name property of an undefined object. I suspect
that should be the name of the first EPackage in my ECore model.

> It'd definitely be a nice addition. Thanks for the suggestion and for
> investigating. Congratulations on surviving your encounters with the
> source code ;-)

No problem. The code looks pretty good in my opinon, though :-).

Regards,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #478846 is a reply to message #478800] Fri, 07 August 2009 08:45 Go to previous messageGo to next message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
This is a multi-part message in MIME format.
--------------070602020909010507040401
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Hi Antonio,

Antonio Garc
Re: [Eugenia] Running Eugenia from Ant? [message #478874 is a reply to message #478846] Fri, 07 August 2009 10:18 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hello Luis,

> Thanks so much for the patch. It works wonderfully for me. I found a
> slight typo in the build.xml of the example project:

It seems I sent you an old version by accident. I put that on purpose to
make sure it failed in the right way, and then try the right version
(with the .eol extension). Oh well, it was 1:30am after all :-D.

> I'll add some notes on the bug report about integrating the patch.

I agree with you that it'd be better to simply use src and let the tasks
be smart enough to deal with whatever is there.

> In short, the loadModel and emf.loadModel tasks don't properly resolve
> filenames to URIs on non-Windows platforms. The attached patch file will
> apply a hack to emf.loadModel to fix the problem. I'm waiting to speak
> to Dimitris, as I think there should be a more elegant solution.

Yes, that was it. Works like a charm, thanks :-).

Regards,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #478879 is a reply to message #478874] Fri, 07 August 2009 10:46 Go to previous message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hey Antonio,

Antonio García Domínguez wrote:
> Hello Luis,
>
>> Thanks so much for the patch. It works wonderfully for me. I found a
>> slight typo in the build.xml of the example project:
>
> It seems I sent you an old version by accident. I put that on purpose to
> make sure it failed in the right way, and then try the right version
> (with the .eol extension). Oh well, it was 1:30am after all :-D.

Bug-fixing at 1.30am! Very impressive :-)

>
>> I'll add some notes on the bug report about integrating the patch.
>
> I agree with you that it'd be better to simply use src and let the tasks
> be smart enough to deal with whatever is there.

It seems like a decent approach if it's not too hard to implement. I
think we may have some other code that does this.

>
>> In short, the loadModel and emf.loadModel tasks don't properly resolve
>> filenames to URIs on non-Windows platforms. The attached patch file will
>> apply a hack to emf.loadModel to fix the problem. I'm waiting to speak
>> to Dimitris, as I think there should be a more elegant solution.
>
> Yes, that was it. Works like a charm, thanks :-).

Great, we'll integrate patches for both this enhancement and the
loadModel bug in the next week or so.

Cheers,
Louis.
Re: [Eugenia] Running Eugenia from Ant? [message #572562 is a reply to message #468726] Thu, 06 August 2009 09:48 Go to previous message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hello all,
>
> I've been learning EMF, GMF and Epsilon for the past few weeks and I
> have to say I'm quite impressed. They're all very good tools. I
> particularly like how I can generate all the GMF models with Eugenia and
> customize what I need using some EOL scripts.

Thank-you for the feedback. It's great to hear positive reports :-)

>
> That said, I'd like to automate the generation/compilation process a
> bit. There are Ant tasks for the EMF2ECore part and Epsilon also defines
> tasks for all the ExL languages and manipulating models. However, I
> haven't found any for Eugenia itself.
>
> Looking at the o.e.epsilon.eugenia/src/.../*Delegate.java files in SVN,
> I think it could be as simple as running epsilon.eol with the
> FixGMFGen.eol, FinGenModel.eol and ECore2GMF.eol scripts and the proper
> models.

Yes, that seems like a sensible approach. However, the tasks that
Epsilon contributes to ANT can only be used to specify file names as
source programs. If URIs could be specified, a platform URI could be
used to reference the EuGENia EOL files from within the EuGENia plugin.

So, one approach would be to add support to the Epsilon ANT tasks for
loading source files from URIs.

>
> I believe I could just as well grab these files from SVN and copy them
> to my project, but it doesn't feel right. I'd like to use the .eol files
> which are part of the Eugenia plugin itself, but I'm not sure how to get
> at them using the src attribute of epsilon.eol, if at all possible.
> Would it be better to just write new Ant tasks in a plugin and wrap the
> runImpl methods of the delegates?

The latter sounds like a more specific solution (so would require less
code in the ANT file), but is less flexible. I'm not sure which is more
appropriate.

My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
Epsilon and the Epsilon / ANT integration. I think it would be best to
gather his views. Unfortunately he is on vacation at present, so we may
have to wait for him to return, in a week or so.

In the meantime, could you open an enhancement request via bugzilla to
track this?
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

If you urgently require a solution, do let me know and I can investigate
this in more detail.

Many thanks,
Louis.

----
Louis Rose
Research Student
Department of Computer Science,
University of York,
Heslington, York, YO10 5DD, United Kingdom.
+44 1904 434762
Twitter: @louismrose
Re: [Eugenia] Running Eugenia from Ant? [message #572578 is a reply to message #478429] Thu, 06 August 2009 17:19 Go to previous message
Antonio Garcia-Dominguez is currently offline Antonio Garcia-DominguezFriend
Messages: 594
Registered: January 2010
Location: Birmingham, UK
Senior Member

Hi Louis,

> Yes, that seems like a sensible approach. However, the tasks that
> Epsilon contributes to ANT can only be used to specify file names as
> source programs. If URIs could be specified, a platform URI could be
> used to reference the EuGENia EOL files from within the EuGENia plugin.

Oops, I didn't notice that the src attribute in the Ant task was of type
File. I'd just assumed it was a path :-/.

> So, one approach would be to add support to the Epsilon ANT tasks for
> loading source files from URIs.

Seeing that EolModule#parse is overloaded for URI objects, we could
probably do it by adding to AbstractModule the getter and setter for the
uri attribute, some validation so src and uri don't get used at the same
time, and modify executeImpl so it uses it.

> The latter sounds like a more specific solution (so would require less
> code in the ANT file), but is less flexible. I'm not sure which is more
> appropriate.

I agree that it is less flexible. I don't think the previous alternative
is that hard to do: perhaps we should try it first.

> My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
> Epsilon and the Epsilon / ANT integration. I think it would be best to
> gather his views. Unfortunately he is on vacation at present, so we may
> have to wait for him to return, in a week or so.

Yes, that'd be best. I'll see if I can make some time and cook up a
patch, so we at least know if it can be done easily.

> In the meantime, could you open an enhancement request via bugzilla to
> track this?
> https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

Sure :-). Here it is:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=285912

> If you urgently require a solution, do let me know and I can investigate
> this in more detail.

No, it's not that urgent. I just thought that it'd be nice, as I'm used
to doing everything with Ant :-).

Thanks,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #572595 is a reply to message #478758] Thu, 06 August 2009 18:21 Go to previous message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hi Louis,
>
>> Yes, that seems like a sensible approach. However, the tasks that
>> Epsilon contributes to ANT can only be used to specify file names as
>> source programs. If URIs could be specified, a platform URI could be
>> used to reference the EuGENia EOL files from within the EuGENia plugin.
>
> Oops, I didn't notice that the src attribute in the Ant task was of type
> File. I'd just assumed it was a path :-/.

Yes, I only discovered this a couple of hours ago too!

>
>> So, one approach would be to add support to the Epsilon ANT tasks for
>> loading source files from URIs.
>
> Seeing that EolModule#parse is overloaded for URI objects, we could
> probably do it by adding to AbstractModule the getter and setter for the
> uri attribute, some validation so src and uri don't get used at the same
> time, and modify executeImpl so it uses it.

I've not looked closely, but I'm not sure if adding to AbstractModule is
the way to do it. I'd have guessed it could be done purely by adding to
ExecutableModuleTask. Not sure though!

>
>> The latter sounds like a more specific solution (so would require less
>> code in the ANT file), but is less flexible. I'm not sure which is more
>> appropriate.
>
> I agree that it is less flexible. I don't think the previous alternative
> is that hard to do: perhaps we should try it first.

Sounds good.

>
>> My colleague, Dimitrios Kolovos, is the primary committer on EuGENia,
>> Epsilon and the Epsilon / ANT integration. I think it would be best to
>> gather his views. Unfortunately he is on vacation at present, so we may
>> have to wait for him to return, in a week or so.
>
> Yes, that'd be best. I'll see if I can make some time and cook up a
> patch, so we at least know if it can be done easily.

Great, thanks very much! Do let us know if you need any help :)

>
>> In the meantime, could you open an enhancement request via bugzilla to
>> track this?
>> https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon
>
> Sure :-). Here it is:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=285912

Brilliant, thank you.

>
>> If you urgently require a solution, do let me know and I can investigate
>> this in more detail.
>
> No, it's not that urgent. I just thought that it'd be nice, as I'm used
> to doing everything with Ant :-).

It'd definitely be a nice addition. Thanks for the suggestion and for
investigating. Congratulations on surviving your encounters with the
source code ;-)

Cheers,
Louis.
Re: [Eugenia] Running Eugenia from Ant? [message #572616 is a reply to message #478761] Fri, 07 August 2009 00:15 Go to previous message
Antonio Garcia-Dominguez is currently offline Antonio Garcia-DominguezFriend
Messages: 594
Registered: January 2010
Location: Birmingham, UK
Senior Member

Hi Louis,

> I've not looked closely, but I'm not sure if adding to AbstractModule is
> the way to do it. I'd have guessed it could be done purely by adding to
> ExecutableModuleTask. Not sure though!

Yes, that's how it turned out to be. I've added a patch to the bug
report which adds URI support to the Epsilon Ant tasks... almost. I've
run into a problem when actually running it.

I prepared a simple example project with an Ant buildfile and a very
simple ECore model. This Ant buildfile uses several
epsilon.emf.loadModel tasks to load/prepare for storage the ECore,
GmfMap, GmfGraph and GmfTool models. The metamodels are loaded just fine
from the URI, but I can't quite load the ECore model itself. I've
described the issure more in detail in the bug report.

The .eol file is run, nevertheless: it actually complains that there was
an attempt to access the name property of an undefined object. I suspect
that should be the name of the first EPackage in my ECore model.

> It'd definitely be a nice addition. Thanks for the suggestion and for
> investigating. Congratulations on surviving your encounters with the
> source code ;-)

No problem. The code looks pretty good in my opinon, though :-).

Regards,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #572643 is a reply to message #478800] Fri, 07 August 2009 08:45 Go to previous message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
This is a multi-part message in MIME format.
--------------070602020909010507040401
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Hi Antonio,

Antonio Garc
Re: [Eugenia] Running Eugenia from Ant? [message #572824 is a reply to message #478846] Fri, 07 August 2009 10:18 Go to previous message
Antonio Garcia-Dominguez is currently offline Antonio Garcia-DominguezFriend
Messages: 594
Registered: January 2010
Location: Birmingham, UK
Senior Member

Hello Luis,

> Thanks so much for the patch. It works wonderfully for me. I found a
> slight typo in the build.xml of the example project:

It seems I sent you an old version by accident. I put that on purpose to
make sure it failed in the right way, and then try the right version
(with the .eol extension). Oh well, it was 1:30am after all :-D.

> I'll add some notes on the bug report about integrating the patch.

I agree with you that it'd be better to simply use src and let the tasks
be smart enough to deal with whatever is there.

> In short, the loadModel and emf.loadModel tasks don't properly resolve
> filenames to URIs on non-Windows platforms. The attached patch file will
> apply a hack to emf.loadModel to fix the problem. I'm waiting to speak
> to Dimitris, as I think there should be a more elegant solution.

Yes, that was it. Works like a charm, thanks :-).

Regards,
Antonio
Re: [Eugenia] Running Eugenia from Ant? [message #572920 is a reply to message #478874] Fri, 07 August 2009 10:46 Go to previous message
Louis Rose is currently offline Louis RoseFriend
Messages: 440
Registered: July 2009
Location: York, United Kingdom
Senior Member
Hey Antonio,

Antonio García Domínguez wrote:
> Hello Luis,
>
>> Thanks so much for the patch. It works wonderfully for me. I found a
>> slight typo in the build.xml of the example project:
>
> It seems I sent you an old version by accident. I put that on purpose to
> make sure it failed in the right way, and then try the right version
> (with the .eol extension). Oh well, it was 1:30am after all :-D.

Bug-fixing at 1.30am! Very impressive :-)

>
>> I'll add some notes on the bug report about integrating the patch.
>
> I agree with you that it'd be better to simply use src and let the tasks
> be smart enough to deal with whatever is there.

It seems like a decent approach if it's not too hard to implement. I
think we may have some other code that does this.

>
>> In short, the loadModel and emf.loadModel tasks don't properly resolve
>> filenames to URIs on non-Windows platforms. The attached patch file will
>> apply a hack to emf.loadModel to fix the problem. I'm waiting to speak
>> to Dimitris, as I think there should be a more elegant solution.
>
> Yes, that was it. Works like a charm, thanks :-).

Great, we'll integrate patches for both this enhancement and the
loadModel bug in the next week or so.

Cheers,
Louis.
Previous Topic:Finding templates with TemplateFactory.load
Next Topic:Finding templates with TemplateFactory.load
Goto Forum:
  


Current Time: Fri Apr 19 18:44:51 GMT 2024

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

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

Back to the top