Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Papyrus » Papyrus 1.12: Does UML OCL validation on models really work?(When stereotypes defined in profile)
Papyrus 1.12: Does UML OCL validation on models really work? [message #533023] Tue, 11 May 2010 22:19 Go to next message
Shaman_Mahmoudi  is currently offline Shaman_Mahmoudi Friend
Messages: 16
Registered: February 2010
Junior Member
Hi,

I have downloaded and installed Papyrus 1.12. I am following the OCL constraint tutorial, and I can not validate my stereotypes against OCL constraints I have defined. It says validation successful even when that is not the case. Does not matter in what context the classifier is, be it M1 or M2. It's as if the validation is not performed at all. What happened? Why is it not working? Plan to update 1.12 to a working one? Or do we need to wait for version 2 of the tool?

By the way, how did you solve the issue of which classifier (stereotype vs stereotype meta-class) to use in the context when validating against OCL constraints?

Thanks in advance.

[Updated on: Tue, 11 May 2010 22:21]

Report message to a moderator

Re: Papyrus 1.12: Does OCL validation on models really work? [message #533106 is a reply to message #533023] Wed, 12 May 2010 09:28 Go to previous messageGo to next message
Raphael Faudou is currently offline Raphael FaudouFriend
Messages: 105
Registered: July 2009
Senior Member
Hi Shaman,

there is a confusion. What you downloaded is Papyrus UML, an open source
solution based on Eclipse but not hosted by the Eclipse foundation.
You can submit bugs directly on the website:
http://www.papyrusuml.org/scripts/home/publigen/content/temp lates/show.asp?P=120&L=EN&ITEMID=35

This forum is dedicated to Eclipse MDT Papyrus component, which can be
considered as the new generation of Papyrus UML and integrates with
other initiatives coming from TOPCASED UML and Moskitt.

The first public release is expected for July 14th? Before you can find
information about how to download the code from SVN here :
http://wiki.eclipse.org/Papyrus_Developer_Guide

Hope things are clear now
regards
raphaël

Shaman_Mahmoudi a écrit :
> Hi,
>
> I have downloaded and installed Papyrus 1.12. I am following the OCL
> constraint tutorial, and I can not validate my stereotypes against OCL
> constraints I have defined. It says validation succesful even when that
> is not the case. Does not matter in what context the classifier is, be
> it M1 or M2. It's as if the validation is not performed at all. What
> happened? Why it not workiing? Plan to updat 1.12 to a working one? Or
> do we need to wait for version 2 of the tool?
>
> By the way, how did you solve the issue of which classifier (stereotype
> vs stereotype meta-class) to use in the context when validating against
> OCL constraints?
>
> Thanks in advance.
Re: Papyrus 1.12: Does OCL validation on models really work? [message #533117 is a reply to message #533106] Wed, 12 May 2010 10:02 Go to previous messageGo to next message
Shaman_Mahmoudi  is currently offline Shaman_Mahmoudi Friend
Messages: 16
Registered: February 2010
Junior Member
Hi Rafael,

Thanks a lot for the information! Now everything makes sense! That other project looked abandoned considering documents did not align with what the product offered and no word about progress.

I believe I am more interested in the Papyrus MDT component, and I have taken a look at the source code, in particular OCL validation. If it is ok, I want to ask a question regarding it.

I have read and tried that piece od code, and there is one issue that is confusing me. In order to validate against an OCL constraint, you need to set the classifier context and then do the validation. In the code, the validation is allways done on M1 level it seems. If the OCL constraint as a method (example self.allOwnedElements()) or attribute defined in the UML meta model, then the context is on M2. With the current code, you'll get an exception if you try to do validate against such a constraint. An easy but maybe not elegant solution is to first try to create the invariant on M1 level, if fails, try in M2 level. How are you solving this issue? i.e. how to know in what context the constraint is defined in.

Thanks in advance!
Re: Papyrus 1.12: Does OCL validation on models really work? [message #542615 is a reply to message #533117] Fri, 25 June 2010 12:46 Go to previous messageGo to next message
Ed Willink is currently offline Ed WillinkFriend
Messages: 7655
Registered: July 2009
Senior Member
Hi Shaman

I'm not familiar with Papyrus; I first downloaded it an hour ago. But I
am very interested in smoothing off the rough edges that make use of OCL
much harder than it should be.

It would be very helpful to see how you are trying to use Papyrus and to
have a newbie-oriented description of the problems you are encountering.

Regards

Ed Willink (MDT/OCL committer)

On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
> Hi Rafael,
>
> Thanks a lot for the information! Now everything makes sense! That other
> project looked abandoned considering documents did not align with what
> the product offered and no word about progress.
>
> I believe I am more interested in the Papyrus MDT component, and I have
> taken a look at the source code, in particular OCL validation. If it is
> ok, I want to ask a question regarding it.
>
> I have read and tried that piece od code, and there is one issue that is
> confusing me. In order to validate against an OCL constraint, you need
> to set the classifier context and then do the validation. In the code,
> the validation is allways done on M1 level it seems. If the OCL
> constraint as a method (example self.allOwnedElements()) or attribute
> defined in the UML meta model, then the context is on M2. With the
> current code, you'll get an exception if you try to do validate against
> such a constraint. An easy but maybe not elegant solution is to first
> try to create the invariant on M1 level, if fails, try in M2 level. How
> are you solving this issue? i.e. how to know in what context the
> constraint is defined in.
>
> Thanks in advance!
Re: Papyrus 1.12: Does OCL validation on models really work? [message #543002 is a reply to message #542615] Mon, 28 June 2010 07:51 Go to previous messageGo to next message
Yann Tanguy is currently offline Yann TanguyFriend
Messages: 80
Registered: July 2009
Member
Papyrus model explorer relies on Modisco.
Here are few tips to start using Modisco Java or OCL queries in Papyrus :

1. Make sure Papyrus Model Explorer is opened (window/show
view/other/"Papyrus Model Explorer")
2. Create a new Modisco projet (using Modisco wizard)
3. Create a new QuerySet in this project (using Modisco wizard)
- Add some queries (Java or OCL) in the QuerySet
4. From Papyrus Model Explorer, select and element (context for the
query), right-click and select "Execut Query"

regards

Yann


Ed Willink a écrit :
> Hi Shaman
>
> I'm not familiar with Papyrus; I first downloaded it an hour ago. But I
> am very interested in smoothing off the rough edges that make use of OCL
> much harder than it should be.
>
> It would be very helpful to see how you are trying to use Papyrus and to
> have a newbie-oriented description of the problems you are encountering.
>
> Regards
>
> Ed Willink (MDT/OCL committer)
>
> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>> Hi Rafael,
>>
>> Thanks a lot for the information! Now everything makes sense! That other
>> project looked abandoned considering documents did not align with what
>> the product offered and no word about progress.
>>
>> I believe I am more interested in the Papyrus MDT component, and I have
>> taken a look at the source code, in particular OCL validation. If it is
>> ok, I want to ask a question regarding it.
>>
>> I have read and tried that piece od code, and there is one issue that is
>> confusing me. In order to validate against an OCL constraint, you need
>> to set the classifier context and then do the validation. In the code,
>> the validation is allways done on M1 level it seems. If the OCL
>> constraint as a method (example self.allOwnedElements()) or attribute
>> defined in the UML meta model, then the context is on M2. With the
>> current code, you'll get an exception if you try to do validate against
>> such a constraint. An easy but maybe not elegant solution is to first
>> try to create the invariant on M1 level, if fails, try in M2 level. How
>> are you solving this issue? i.e. how to know in what context the
>> constraint is defined in.
>>
>> Thanks in advance!
>
Re: Papyrus 1.12: Does OCL validation on models really work? [message #543212 is a reply to message #543002] Mon, 28 June 2010 17:29 Go to previous messageGo to next message
Ed Willink is currently offline Ed WillinkFriend
Messages: 7655
Registered: July 2009
Senior Member
Hi Yann

I managed to follow the instructions as far as Execute Query. I cannot
see any results anywhere and have no idea what the "Table" might be
where they are.

There is considerable commonality between the Query Execution View and
the OCL Console (available when MDT/OCL Examples are installed - follow
the OCLinEcore tutorial in the Helios OCL Documentation). The former
looks prettier and has modelled persistence, but the latter is more
functional. It would be good to merge these under the guise of a
coherent environment for sphinx. MDT/OCL now provides an Xtext editor
for expressions that might evolve (once used) to support query editing.

There is also less obvious commonality in the area of Model Explorer
where too many projects are doing rather similar things inconsistently.
I gave up trying to raise an EMFT Registry project to provide these
functionalities in a self-standing +1 project; one attempt at common
functionality therefore exists as the OCL Example Model Registry, which
might provide a more shareable home for a communal facility.

Regards

Ed Willink

On 28/06/2010 08:51, Yann Tanguy wrote:
> Papyrus model explorer relies on Modisco.
> Here are few tips to start using Modisco Java or OCL queries in Papyrus :
>
> 1. Make sure Papyrus Model Explorer is opened (window/show
> view/other/"Papyrus Model Explorer")
> 2. Create a new Modisco projet (using Modisco wizard)
> 3. Create a new QuerySet in this project (using Modisco wizard)
> - Add some queries (Java or OCL) in the QuerySet
> 4. From Papyrus Model Explorer, select and element (context for the
> query), right-click and select "Execut Query"
>
> regards
>
> Yann
>
>
> Ed Willink a écrit :
>> Hi Shaman
>>
>> I'm not familiar with Papyrus; I first downloaded it an hour ago. But
>> I am very interested in smoothing off the rough edges that make use of
>> OCL much harder than it should be.
>>
>> It would be very helpful to see how you are trying to use Papyrus and to
>> have a newbie-oriented description of the problems you are encountering.
>>
>> Regards
>>
>> Ed Willink (MDT/OCL committer)
>>
>> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>>> Hi Rafael,
>>>
>>> Thanks a lot for the information! Now everything makes sense! That other
>>> project looked abandoned considering documents did not align with what
>>> the product offered and no word about progress.
>>>
>>> I believe I am more interested in the Papyrus MDT component, and I have
>>> taken a look at the source code, in particular OCL validation. If it is
>>> ok, I want to ask a question regarding it.
>>>
>>> I have read and tried that piece od code, and there is one issue that is
>>> confusing me. In order to validate against an OCL constraint, you need
>>> to set the classifier context and then do the validation. In the code,
>>> the validation is allways done on M1 level it seems. If the OCL
>>> constraint as a method (example self.allOwnedElements()) or attribute
>>> defined in the UML meta model, then the context is on M2. With the
>>> current code, you'll get an exception if you try to do validate against
>>> such a constraint. An easy but maybe not elegant solution is to first
>>> try to create the invariant on M1 level, if fails, try in M2 level. How
>>> are you solving this issue? i.e. how to know in what context the
>>> constraint is defined in.
>>>
>>> Thanks in advance!
>>
Re: Papyrus 1.12: Does OCL validation on models really work? [message #543729 is a reply to message #543212] Wed, 30 June 2010 12:17 Go to previous message
Yann Tanguy is currently offline Yann TanguyFriend
Messages: 80
Registered: July 2009
Member
Well after selecting you query and clicking "Execute Query" button, the
query result should appear in a tabular editor.
Strange that no result in shown in your case. Did you try to execute the
query directly with Modisco editor (right-click on your .uml file and
"Open with / Modisco Model Browser" ?

I agree with you, it would probably be a good thing that you get in
contact with the Modisco team to see how you may contribute interesting
OCL feature from your project in modisco or share the OCL feature you
mention with them.

best regards,

Yann

Ed Willink a écrit :
> Hi Yann
>
> I managed to follow the instructions as far as Execute Query. I cannot
> see any results anywhere and have no idea what the "Table" might be
> where they are.
>
> There is considerable commonality between the Query Execution View and
> the OCL Console (available when MDT/OCL Examples are installed - follow
> the OCLinEcore tutorial in the Helios OCL Documentation). The former
> looks prettier and has modelled persistence, but the latter is more
> functional. It would be good to merge these under the guise of a
> coherent environment for sphinx. MDT/OCL now provides an Xtext editor
> for expressions that might evolve (once used) to support query editing.
>
> There is also less obvious commonality in the area of Model Explorer
> where too many projects are doing rather similar things inconsistently.
> I gave up trying to raise an EMFT Registry project to provide these
> functionalities in a self-standing +1 project; one attempt at common
> functionality therefore exists as the OCL Example Model Registry, which
> might provide a more shareable home for a communal facility.
>
> Regards
>
> Ed Willink
>
> On 28/06/2010 08:51, Yann Tanguy wrote:
>> Papyrus model explorer relies on Modisco.
>> Here are few tips to start using Modisco Java or OCL queries in Papyrus :
>>
>> 1. Make sure Papyrus Model Explorer is opened (window/show
>> view/other/"Papyrus Model Explorer")
>> 2. Create a new Modisco projet (using Modisco wizard)
>> 3. Create a new QuerySet in this project (using Modisco wizard)
>> - Add some queries (Java or OCL) in the QuerySet
>> 4. From Papyrus Model Explorer, select and element (context for the
>> query), right-click and select "Execut Query"
>>
>> regards
>>
>> Yann
>>
>>
>> Ed Willink a écrit :
>>> Hi Shaman
>>>
>>> I'm not familiar with Papyrus; I first downloaded it an hour ago. But
>>> I am very interested in smoothing off the rough edges that make use of
>>> OCL much harder than it should be.
>>>
>>> It would be very helpful to see how you are trying to use Papyrus and to
>>> have a newbie-oriented description of the problems you are encountering.
>>>
>>> Regards
>>>
>>> Ed Willink (MDT/OCL committer)
>>>
>>> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>>>> Hi Rafael,
>>>>
>>>> Thanks a lot for the information! Now everything makes sense! That
>>>> other
>>>> project looked abandoned considering documents did not align with what
>>>> the product offered and no word about progress.
>>>>
>>>> I believe I am more interested in the Papyrus MDT component, and I have
>>>> taken a look at the source code, in particular OCL validation. If it is
>>>> ok, I want to ask a question regarding it.
>>>>
>>>> I have read and tried that piece od code, and there is one issue
>>>> that is
>>>> confusing me. In order to validate against an OCL constraint, you need
>>>> to set the classifier context and then do the validation. In the code,
>>>> the validation is allways done on M1 level it seems. If the OCL
>>>> constraint as a method (example self.allOwnedElements()) or attribute
>>>> defined in the UML meta model, then the context is on M2. With the
>>>> current code, you'll get an exception if you try to do validate against
>>>> such a constraint. An easy but maybe not elegant solution is to first
>>>> try to create the invariant on M1 level, if fails, try in M2 level. How
>>>> are you solving this issue? i.e. how to know in what context the
>>>> constraint is defined in.
>>>>
>>>> Thanks in advance!
>>>
>
Re: Papyrus 1.12: Does OCL validation on models really work? [message #602148 is a reply to message #542615] Mon, 28 June 2010 07:51 Go to previous message
Yann Tanguy is currently offline Yann TanguyFriend
Messages: 80
Registered: July 2009
Member
Papyrus model explorer relies on Modisco.
Here are few tips to start using Modisco Java or OCL queries in Papyrus :

1. Make sure Papyrus Model Explorer is opened (window/show
view/other/"Papyrus Model Explorer")
2. Create a new Modisco projet (using Modisco wizard)
3. Create a new QuerySet in this project (using Modisco wizard)
- Add some queries (Java or OCL) in the QuerySet
4. From Papyrus Model Explorer, select and element (context for the
query), right-click and select "Execut Query"

regards

Yann


Ed Willink a écrit :
> Hi Shaman
>
> I'm not familiar with Papyrus; I first downloaded it an hour ago. But I
> am very interested in smoothing off the rough edges that make use of OCL
> much harder than it should be.
>
> It would be very helpful to see how you are trying to use Papyrus and to
> have a newbie-oriented description of the problems you are encountering.
>
> Regards
>
> Ed Willink (MDT/OCL committer)
>
> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>> Hi Rafael,
>>
>> Thanks a lot for the information! Now everything makes sense! That other
>> project looked abandoned considering documents did not align with what
>> the product offered and no word about progress.
>>
>> I believe I am more interested in the Papyrus MDT component, and I have
>> taken a look at the source code, in particular OCL validation. If it is
>> ok, I want to ask a question regarding it.
>>
>> I have read and tried that piece od code, and there is one issue that is
>> confusing me. In order to validate against an OCL constraint, you need
>> to set the classifier context and then do the validation. In the code,
>> the validation is allways done on M1 level it seems. If the OCL
>> constraint as a method (example self.allOwnedElements()) or attribute
>> defined in the UML meta model, then the context is on M2. With the
>> current code, you'll get an exception if you try to do validate against
>> such a constraint. An easy but maybe not elegant solution is to first
>> try to create the invariant on M1 level, if fails, try in M2 level. How
>> are you solving this issue? i.e. how to know in what context the
>> constraint is defined in.
>>
>> Thanks in advance!
>
Re: Papyrus 1.12: Does OCL validation on models really work? [message #602186 is a reply to message #543002] Mon, 28 June 2010 17:29 Go to previous message
Ed Willink is currently offline Ed WillinkFriend
Messages: 7655
Registered: July 2009
Senior Member
Hi Yann

I managed to follow the instructions as far as Execute Query. I cannot
see any results anywhere and have no idea what the "Table" might be
where they are.

There is considerable commonality between the Query Execution View and
the OCL Console (available when MDT/OCL Examples are installed - follow
the OCLinEcore tutorial in the Helios OCL Documentation). The former
looks prettier and has modelled persistence, but the latter is more
functional. It would be good to merge these under the guise of a
coherent environment for sphinx. MDT/OCL now provides an Xtext editor
for expressions that might evolve (once used) to support query editing.

There is also less obvious commonality in the area of Model Explorer
where too many projects are doing rather similar things inconsistently.
I gave up trying to raise an EMFT Registry project to provide these
functionalities in a self-standing +1 project; one attempt at common
functionality therefore exists as the OCL Example Model Registry, which
might provide a more shareable home for a communal facility.

Regards

Ed Willink

On 28/06/2010 08:51, Yann Tanguy wrote:
> Papyrus model explorer relies on Modisco.
> Here are few tips to start using Modisco Java or OCL queries in Papyrus :
>
> 1. Make sure Papyrus Model Explorer is opened (window/show
> view/other/"Papyrus Model Explorer")
> 2. Create a new Modisco projet (using Modisco wizard)
> 3. Create a new QuerySet in this project (using Modisco wizard)
> - Add some queries (Java or OCL) in the QuerySet
> 4. From Papyrus Model Explorer, select and element (context for the
> query), right-click and select "Execut Query"
>
> regards
>
> Yann
>
>
> Ed Willink a écrit :
>> Hi Shaman
>>
>> I'm not familiar with Papyrus; I first downloaded it an hour ago. But
>> I am very interested in smoothing off the rough edges that make use of
>> OCL much harder than it should be.
>>
>> It would be very helpful to see how you are trying to use Papyrus and to
>> have a newbie-oriented description of the problems you are encountering.
>>
>> Regards
>>
>> Ed Willink (MDT/OCL committer)
>>
>> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>>> Hi Rafael,
>>>
>>> Thanks a lot for the information! Now everything makes sense! That other
>>> project looked abandoned considering documents did not align with what
>>> the product offered and no word about progress.
>>>
>>> I believe I am more interested in the Papyrus MDT component, and I have
>>> taken a look at the source code, in particular OCL validation. If it is
>>> ok, I want to ask a question regarding it.
>>>
>>> I have read and tried that piece od code, and there is one issue that is
>>> confusing me. In order to validate against an OCL constraint, you need
>>> to set the classifier context and then do the validation. In the code,
>>> the validation is allways done on M1 level it seems. If the OCL
>>> constraint as a method (example self.allOwnedElements()) or attribute
>>> defined in the UML meta model, then the context is on M2. With the
>>> current code, you'll get an exception if you try to do validate against
>>> such a constraint. An easy but maybe not elegant solution is to first
>>> try to create the invariant on M1 level, if fails, try in M2 level. How
>>> are you solving this issue? i.e. how to know in what context the
>>> constraint is defined in.
>>>
>>> Thanks in advance!
>>
Re: Papyrus 1.12: Does OCL validation on models really work? [message #602214 is a reply to message #543212] Wed, 30 June 2010 12:17 Go to previous message
Yann Tanguy is currently offline Yann TanguyFriend
Messages: 80
Registered: July 2009
Member
Well after selecting you query and clicking "Execute Query" button, the
query result should appear in a tabular editor.
Strange that no result in shown in your case. Did you try to execute the
query directly with Modisco editor (right-click on your .uml file and
"Open with / Modisco Model Browser" ?

I agree with you, it would probably be a good thing that you get in
contact with the Modisco team to see how you may contribute interesting
OCL feature from your project in modisco or share the OCL feature you
mention with them.

best regards,

Yann

Ed Willink a écrit :
> Hi Yann
>
> I managed to follow the instructions as far as Execute Query. I cannot
> see any results anywhere and have no idea what the "Table" might be
> where they are.
>
> There is considerable commonality between the Query Execution View and
> the OCL Console (available when MDT/OCL Examples are installed - follow
> the OCLinEcore tutorial in the Helios OCL Documentation). The former
> looks prettier and has modelled persistence, but the latter is more
> functional. It would be good to merge these under the guise of a
> coherent environment for sphinx. MDT/OCL now provides an Xtext editor
> for expressions that might evolve (once used) to support query editing.
>
> There is also less obvious commonality in the area of Model Explorer
> where too many projects are doing rather similar things inconsistently.
> I gave up trying to raise an EMFT Registry project to provide these
> functionalities in a self-standing +1 project; one attempt at common
> functionality therefore exists as the OCL Example Model Registry, which
> might provide a more shareable home for a communal facility.
>
> Regards
>
> Ed Willink
>
> On 28/06/2010 08:51, Yann Tanguy wrote:
>> Papyrus model explorer relies on Modisco.
>> Here are few tips to start using Modisco Java or OCL queries in Papyrus :
>>
>> 1. Make sure Papyrus Model Explorer is opened (window/show
>> view/other/"Papyrus Model Explorer")
>> 2. Create a new Modisco projet (using Modisco wizard)
>> 3. Create a new QuerySet in this project (using Modisco wizard)
>> - Add some queries (Java or OCL) in the QuerySet
>> 4. From Papyrus Model Explorer, select and element (context for the
>> query), right-click and select "Execut Query"
>>
>> regards
>>
>> Yann
>>
>>
>> Ed Willink a écrit :
>>> Hi Shaman
>>>
>>> I'm not familiar with Papyrus; I first downloaded it an hour ago. But
>>> I am very interested in smoothing off the rough edges that make use of
>>> OCL much harder than it should be.
>>>
>>> It would be very helpful to see how you are trying to use Papyrus and to
>>> have a newbie-oriented description of the problems you are encountering.
>>>
>>> Regards
>>>
>>> Ed Willink (MDT/OCL committer)
>>>
>>> On 12/05/2010 11:02, Shaman_Mahmoudi wrote:
>>>> Hi Rafael,
>>>>
>>>> Thanks a lot for the information! Now everything makes sense! That
>>>> other
>>>> project looked abandoned considering documents did not align with what
>>>> the product offered and no word about progress.
>>>>
>>>> I believe I am more interested in the Papyrus MDT component, and I have
>>>> taken a look at the source code, in particular OCL validation. If it is
>>>> ok, I want to ask a question regarding it.
>>>>
>>>> I have read and tried that piece od code, and there is one issue
>>>> that is
>>>> confusing me. In order to validate against an OCL constraint, you need
>>>> to set the classifier context and then do the validation. In the code,
>>>> the validation is allways done on M1 level it seems. If the OCL
>>>> constraint as a method (example self.allOwnedElements()) or attribute
>>>> defined in the UML meta model, then the context is on M2. With the
>>>> current code, you'll get an exception if you try to do validate against
>>>> such a constraint. An easy but maybe not elegant solution is to first
>>>> try to create the invariant on M1 level, if fails, try in M2 level. How
>>>> are you solving this issue? i.e. how to know in what context the
>>>> constraint is defined in.
>>>>
>>>> Thanks in advance!
>>>
>
Previous Topic:Object flows on activity diagrams
Next Topic:Partition in Activity Diagram
Goto Forum:
  


Current Time: Thu Apr 18 15:46:24 GMT 2024

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

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

Back to the top