I am trying to create a cache for an attribute that I introduce in
MooseEntityState of FamixType.
The following expression:
self privateState attributeAt: #authors ifAbsentPut: #myAuthors
returns me a symbol #myAuthors instead of evaluating the method myAuthors.
myAuthors is a method that I introduce in FamixType as an extension and it
returns a Bag.
Why is this expression returning a symbol instead of evaluating #myAuthors
as a block?
P.S: The package can be downloaded here:
Labels: Type-Defect Priority-Medium
New issue 749 by usman.bh...(a)gmail.com: duplicate packages while adding
information to a model
I am trying to generate a moose model programmatically in the following way:
First, I generate a model with Citezen. Then I add seaside packages to the
Now, I see some packages getting duplicated by the second import. For
example, the package Citezen-Seaside exists twice in the model (in
allPackages). The first copy corresponds to the import done in the model
from citezen so exists in All Model Packages. The second exists as a stub
because somehow, citezen is referenced in Seaside. What is these strange is
that both models contain the file CZFileLibrary.
Now, when I try to generate a mondrian visualizations with all Model
Packages, I dont see dependencies between the packages of the two systems:
Ctezen and Seaside. This is normal because dependencies are bound to the
stub packages and not model pakages. However, taking allPackages, I can see
Is this desired to have duplicates of a package in a Moose model when
creating a moose model incrementally?
Labels: Type-Defect Priority-Medium
New issue 737 by usman.bh...(a)gmail.com: would be good that input field of
merlin showw '* ' match: each by default
It is frustrating that the importer does not tell the user how to match
We are improving the distribution customization points. Now we can give a
title for distributionMap and subclasses.
We want to change the fill color of a linear distribution by default it is
grey and we want to be able to let the user specify the color.
How do we parameterize the linearFillColor below so that it represents
LinearDistributionMap>>renderElementsFrom: node on: view
view interaction menuMorphBlock: [ :element | element mooseMenuMorph ].
view shape rectangle
linearFillColor: [ :e | elementsAndPropertyValue at: e ] within:
borderColor: self baseColor.
view nodes: (self orderElementsFor: node)
We saw that we can call linearRedFillColor: anObject within: aGroup
instead of linearFillColor: [ :e | elementsAndPropertyValue at: e ]
within: elementsAndPropertyValue keys;
but we would like to say specify a base color and that the distributionmap
uses this color as a reference.
| dm |
dm := (LinearDistributionMap
onContainers: (model allModelPackages)
properties: [ :cl | cl parentPackage numberOfVersions]).
dm title: 'Package Versions'.
***> dm baseColor: Color red.
and obtain the attached figure but without having to use at our level
(distribution map) linearRedFillColor:
So alex would it be possible that we pass the highColor for a linearFill?
Stef and Ussman coding close the fireplace :)
[image: Screen shot 2011-11-08 at 4.02.43 PM.png]
With nicolas we started to have a look at the eclipse-php-parser (provide
with PDT), to export a famix-mse file from a PHP project. We already started
to build an eclipse plugin that does some work:
=> We create an AST for each php file of the project
=> Then we have a visitor on this ast, and we are therfore able to make a
specific action for each kind of node visited
=> For now, we just export some FAMIXNamespace, FAMIXClass, FAMIXMethods.
So what's left is to implement each visit-method to extract informations
for each node visited. For that we will have to know a bit more PHP :) Maybe
the metamodel will have to be extended to take into account some
PHP-specific elements, I don't know.
If you want to have a look, sources are available via svn at:
Vervaine provide the extractor (not yet finished) for Java ans this one for
PHP. Both are using a common mechanism to generate famix entities and
extract them to mse.
I will be on holidays until august and will probably no longer work on it
until august. So if you want to have a look (and have the courage to install
eclipse to read java code:)), have some suggestions, want to implement
something, feel free to participate :)
here are some notes we wrote when browsing the MooseTask
- It would be good to rename MooseTask should be renamed because it has
nothing to do in Moose.t
- MooseTask and MooseOperator should be in the same package: Moose-Core
since MooseOperator has nothing to do with Smalltalk.
- the hierarchy of MooseCompositeImporterTask is really dealing only with
Smalltalk importing logic.
so we should rename it:
SmalltalkCompositeExtractorTask or at least
- MooseImportClassesTask should be renamed SmalltalkImportClassesTask
since it only create entity extracted from Smalltalk.
( Importer vs extractor
I would like to keep the term importer to the action of populating a model
and the action to extract model from source code.
In java, c3 we have extractor and in Moose importers and extractors)
- I would rename SmalltalkImporter as SmalltalkExtractor like that we have
a clear line.
- Nobody is referencing PackageDescription?
- Now our problem is that we would like to run tasks when a
a Smalltalk model is extracted and imported and when a mse file is
We should probably introduce the logic of the plugin login somewhere
in a superclass and (MSEImporter should be a subclass of MooseTask - not
verified if make sense)
- I have no clue about the contents of the Moose-GenericImporter. It looks
like we stopped in the middle of something (which is probably true).
- MooseImportingTask is still Smalltalk specific so I would move to
- MooseFileStructureImporter looks really broken but it can be a nice
example of a subclass of MooseImporterTask (not MooseExtractorTask)
- I have no clue about the role of MooseAbstractImportingContext and
its relationship with MooseImportingContext.
- I would keep MooseImportingContext in generic because it is not only
about extracting but about the consistency about models.
- MooseAsbtractImporter is a good start but may be it should be a subclass
of MooseTask and used as a superclass of MooseFileStructureImporter,
MooseImportingTask and (probably MSEReader) and we could add plugin there.
Doru it would be fun to do some pair programming to address these changes.
Do you have time this evening?
I am working on this script to see dependencies of seaside and citezen...
I would to group the nodes according to their names in Mondrian. Is it
possible? Here is my script:
view shape rectangle
width: [:pack | pack numberOfProviderPackages + 3 *3];
height: [:pack | pack numberOfClientPackages + 6 * 3];
if: [:pack | pack name includesSubString: 'Citezen'] fillColor: Color
if: [:pack | (pack name includesSubString: 'Seaside') and: [(pack name
includesSubString: 'Citezen' ) not]] fillColor: Color lightBlue.
view nodes: (model allPackages select: [:pack | ((pack name
includesSubString: 'Citezen') or: [pack name includesSubString: 'Seaside'])
or: [pack name includesSubString: 'Pier']]).
view edgesToAll: #staticProviderPackages.
Like in the figure, I would like to group red nodes on the left and light
blue nodes on the right and at the same time keeping dominanceTreeLayout.
[image: Screen shot 2011-11-09 at 4.08.18 PM.png]