Clone this wiki locally
Each UCOSP participant is asked to log all the steps they take as they make progress through the semester. This includes difficulties they faced (getting set up, understanding how to model in Umple, using UmpleOnline, code that is difficult to figure out, and development tools that are hard to figure out, or don't seem to work properly). The more log entries added the more we can better get a grip on the usability issues with Umple, and the more we can help future new contributors come up to speed.
Please record entries in reverse chronological order
I had many midterms/projects/assignments due for my other courses this week, and so was unable to make progress with Umple. However, I am on reading break next week and will have no trouble more than making up the time.
I continued working on generating the correct names for get/set methods. My research into Umple brought me to the StringFormatter class which I am now using. I am running into a NullPointerException when I build and try to test my changes; I am currently debugging this, and have a workaround in terms of building for now so that I can build successfully and test some of my changes.
I spent a lot of time over these two days looking into my term project, which is to add API, Umple generated methods to the metamodel representation. As I am starting with attributes, I first read through the Umple user manual Attribute section again, and made notes on the different Umple modifiers that may be used, as these will define what methods need to be generated. I also looked through some of the compiler code, trying to find where I need to start making changes. I found the method analyzeAttribute in UmpleInternalParser_CodeClass.ump. This is where tokens identified as attributes in parsing are added to the meta model. It is here that I can identify attributes that need API methods, and I am creating a helper method that analyzeAttribute will make a call to in order to add the correct methods to the meta model. I was also looking at the UmpleToJava generator classes because this is where these methods are currently created, and it will help me to use the process in the generator level as a guide for additions at the compiler level. Through this, I found the Glossary class, which has methods (e.g. getSingular) that I can use to generate the proper names for the getX and setX methods. Not too much progress in terms of actual code has been made, as I am still in the learning process for this project and a lot of my time is spent navigating unfamiliar code, and dealing with build issues. However, I have spent a lot of time understanding the code base, and can feel things becoming more familiar and easier with each hour I spend. Over the next week, I hope to be able to make significant progress.
Fixed one more issue and closed issue 961
I finished up the second bug fix for the PR for issue 961. I am going to run a full build at UBC tomorrow, and then submit my changes. My plan for my term project:
- I will be starting with moving getX and setX API methods for simple attributes.
- I need to familiarize myself with the code in the meta model that builds these components.
- Whenever an attribute is encountered, the meta model needs to have the API methods added for this attribute as well
- I also need to look into what warnings/errors/hacks can be removed/modified as this information becomes available in the meta model
I started looking into the comments Vahdat made on my PR for issue 961. I fixed the issue where the error printed twice when there was a reflexive association in the superclass and the subclass had an association with this name as well. I have a really busy week this week, so I am hoping to finish the other bug tomorrow night, but if not will fix it Friday night. I will also be devoting a lot of time this weekend to starting on my term project.
Today, I had a google hangout with Vahdat to talk more about my term project. He showed me some of the situations I will be handling, and took me some of the code that will be impacted. I will be starting with adding the API methods for attributes first.
Today, I finished up with issue 961. I cleaned up my code to make it both more readable and more logical, and submitted a pull request.
I looked at past commits and emailed Vahdat to understand what I needed to do to add a new error message. I worked on creating the necessary files, and wording the error message for issue 961. I also encountered another case I had not thought of previously for issue 961. I was not handling cases where the superclass had a reflexive association, which I came across while creating another test. I spent some time debugging to find the root of the problem, and fixed my code. I am almost finished issue 961, but want to clean up my code a little first before issuing a PR.
Today I was working on the UBC campus, and did a full build - IT WAS FAST! Only took about 4.5 minutes. Until I can find a solution, I will definitely build at UBC instead of at home. Today I am working on adding more complex test cases for issue 961, and cleaning up/commenting the code. I hope to have it done and in a PR by Friday.
I created and got a test going for issue 961. It passed, and so did all the other JUnit tests I ran in Eclipse, so I decided to try a full build. A bunch of association specialization tests failed, and I realized I was not accounting for these cases in my implementation. A specialized association would have the same role name and possibly be to a different class, but is not an error. I am fixing the code using the isSpecialization boolean that is part of the Association class, and will build again tomorrow.
Jan 20-22: Code Sprint in Calgary
- worked on issue 26, fixing generation of abstract classes in PHP. Although it was an easy bug, I feel I have a much better understanding of the architecture of Umple, as well as testing procedure. Submitted a PR at the end of the day for the fix.
- I am having trouble running a full build. It takes almost 40 minutes, and after following Tim's suggestions in regards to disconnecting from the network I am seeing no improvement.
- started on issue 961, which Vahdat and I came across while looking into another issue.
- I spent a good amount of time looking at the Umple.ump to understand what I have to work with in terms of the meta model, and UmpleInternalParser_CodeClass to find where to make my change
- I found a method in UmpleInternalParser_CodeClass called checkDuplicateAssociationNames(). It is very similar to what I need to do, and I am using it as a guide.
- After coming up with an implementation, I found that some tests were failing, and used the Eclipse debugger to find out why, and make the necessary changes to my implementation
- Continued with debugging. All tests pass, now working on writing my own tests for this bug fix. I used closed issue 84 to find where my test should go, as it expects an error in generation.
- I ran into a problem where I would make changes, and then build, but my changes were not being picked up. Running the first-build again before building solved this issue.
I got sick over the weekend, and so I have not been able to make much more progress since last week. I am feeling somewhat better today, so my goals for today and tomorrow are to set up a local version of Umple Online, and to find an easy issue to start looking into before the code sprint, so that I can become more familiar with the Umple codebase.
Looking at the suggested first issues, this interests me in that it seems very straightforward, but would definitely allow me to look deeper into code generation: https://github.com/umple/umple/issues/26
I installed the Eclipse plugin for Umple, and used UmpleOnline to explore more Umple examples.
Followed the instructions at https://github.com/umple/umple/wiki/DevelopmentSetUp Completed all the steps, except for setting up a local version of UmpleOnline. I will set this up later this week. I was able to successfully build and then set up the projects and run tests in Eclipse. All the tests are passing, although 154 have been skipped - I am unsure of whether this is supposed to happen or not. Also to note, I am working on a Mac, running MacOS Sierra 10.12.2.
Reading through the Umple user manual, tested out UmpleOnline, and read through the wiki pages listed for UCOSP students at https://github.com/umple/umple/wiki/UCOSP