Join GitHub today
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
December 17-18 2015
- [issue #449] (https://github.com/umple/umple/issues/449) is now fixed and the pull request was merged.
- Summary of issue fix:
- Changed to analyzeKey() method in UmpleInternalParser_CodeClass to check if the current class key token(s) is/are among the list of the parent’s attributes. This is done by iterating over all the parents until the matching attribute is found or until there is no more parent. When the attribute is found, the tokenMatch variable is set to true which would prevent issuing the warning.
- Concerning the test, I just had to uncomment a //TODO labeled test which was already existing in the UmpleParserTest file.
December 10-14 2015
- After spending a lot of time working on [issue #449] (https://github.com/umple/umple/issues/449), I started to make some actual progress by actually changing code. So, the warning is being issued when analyzing key tokens in the [Code_Class file] (https://github.com/umple/umple/blob/master/cruise.umple/src/UmpleInternalParser_CodeClass.ump#L2630). At that point of the code, the extends property was not already set. Thus, it is not possible to determine if the attribute does not exist yet. After looking more into the Parser_Code, I found the a method called [checkExtendsClass] (https://github.com/umple/umple/blob/master/cruise.umple/src/UmpleInternalParser_CodeClass.ump#L683) and it was used to fix another issue with inheritance. What I did was removing the check for absent attributes in the analyzeKey() method, and delay that check until extends properties are added in the checkExtendsClass(). However, this solves the warning issue but results in a lot more others (namely an NullPointerException when the subclass has no attributes). I have discussed this with Tim and he suggested moving all the analyzeKey() code to the second pass when the extends property is being added. Since I have a final tomorrow, I am going to stop to work on this and get back to it on Wednesday and hopefully get it done by the end of the day.
December 3 2015
- [Issue #643] (https://github.com/umple/umple/issues/643) was closed by Kevin despite it being assigned to me. That was because it inherently blocked this [other issue] (https://github.com/umple/umple/pull/665) he was working on according to what he said. From what I noticed, the fix he did was what I was trying to avoid; i.e. storing the result of the request in a temporary file and then check if the file was created to determine if the request was successful. Thus, my plan now to resume working on my original [issue #449] (https://github.com/umple/umple/issues/449), and look for some other easy issue to ensure progress meanwhile.
December 2 2015
- I was able to implement the [get task] (https://ant.apache.org/manual/Tasks/get.html), which redirects the contents of the web page being requested to the file specified in the "dest" argument. In case of failure, no file would be created and the get request crashes. One way to solve this, as I discussed with Kevin, would be to check if a file was created after the request, and that's what would would be used to determine if there is internet connectivity. However, I am trying to find another way and avoid creating temporary files by accessing checking if there was an error with the request. So far I have found much about the parameters that tells about errors, but I am going to look more into that.
December 1 2015
- Started working on [issue #643] (https://github.com/umple/umple/issues/643) by learning more about the [get task] (https://ant.apache.org/manual/Tasks/get.html). My plan is to keep the same structure of the code, and change only the ping command to a get task in the unreachable macro being defined in the [_template.xml] (https://github.com/umple/umple/blob/master/build/_template.xml) file.
November 24 2015
- Finished working on [Issue #594] (https://github.com/umple/umple/issues/594) and I made a pull request to close it including all the files affected by the change as Tim said. I have also checked carefully the build this time and all the tests are passing. Summary of the changes I did can be found in the [pull request] (https://github.com/umple/umple/pull/655).
November 23 2015
- Tim suggested that I make a new pull request for [Issue #594] (https://github.com/umple/umple/issues/594) as it is not working according to what he said. I decided to checkout a complete new copy from the repository and start the working on [Issue #594] (https://github.com/umple/umple/issues/594) from scratch.
November 22 2015
-I am currently working on the issues I have with building on command line and the tests that are crashing. I have also gave up on using eclipse as it is resulting in a lot of problems.
November 18 2015
- I have received help from Kevin to fix the internet connectivity problem and the problem turned out to be on Tim's server where probably ping (which is used for the request) is disabled. I was able to do a first build by adding the flag -Donline=true and Kevin assigned me an existing [issue] (https://github.com/umple/umple/issues/643) that consists of this problem. Now, I basically have to replace the ping command in the [_template.xml] (https://github.com/umple/umple/blob/master/build/_template.xml) with a task. This should be doable even though I haven't developed in XML before, as I debugged the issue with Kevin and can get around it.
November 17 2015
- In order to double check that the pull request is actually working and tests are passing, I have reset all the changes in my repository and pull all the changes I made to make my branch match origin. However, some tests are crashing when I perform a full build under template.test. I have tried to do a first build in order to reinitialize everything, but it is failing due to internet connectivity. I have tried in two different places (My house and University) and the problem is still there. I have emailed umple-dev about the issue to get help about that.
November 16 2015
- Tim said that the pull request I made for the change I did to the jet file is not functioning which is strange as it is working fine on my machine (even after performing a full) and the corresponding test is passing. However, I believe I know what is going wrong since Tim mentioned that the change I did is getting overwritten by the [cruise.umple/compiler/.../JavaClassGenerator.java] (https://github.com/umple/umple/blob/master/cruise.umple/src-gen-jet/cruise/umple/compiler/java/JavaClassGenerator.java). I believe the file being overwritten Tim is referring to is the [UmpleToJava/compiler/.../JavaClassGenerator.java] (https://github.com/umple/umple/blob/master/UmpleToJava/src/cruise/umple/compiler/java/JavaClassGenerator.java), which is not the main change I did. The actual change I made the pull request for is the [UmpleToJava/templates/equals.jet] (https://github.com/umple/umple/blob/master/UmpleToJava/templates/equals.jet) file which generates the java code for those java files. This happens after building with code generation using ant -Dmyenv=local -f build.codegen.xml.
November 14 2015
- Added Test for [Issue #594] (https://github.com/umple/umple/issues/594) and made a pull request for it. Used assertUmpleTemplateFor method to compare the expected java code to be generated with the code generated by the umple example provided at the [issue page] (http://cruise.eecs.uottawa.ca/umpleonline/umple.php?model=150401739102).
November 12 2015
- The Pull request for [Issue #594] (https://github.com/umple/umple/issues/594) was merged by Tim; however, I forgot to include a very important thing; i.e. a test to the functionality change. Currently working on that and will make a new pull request for the test when done.
November 11 2015
- Tim mentioned that my pull request looked OK and that he needs to tested before merging it.
- Currently focusing completely on [issue #449] (https://github.com/umple/umple/issues/449) and understanding the logic of the CodeTrait which would be the solution to the issue, as Tim suggested.
November 8 2015
- The problem of the pull request I made turned out to be because the changes were made to the java, a completely wrong practice in umple as java files are generated when umple is built. Instead, Tim indicated to consider looking at the corresponding jet which generate the actual java code. After doing that, I was able fix the issue by updating the equals.jet file which passed the test example (after performing a full build). Re-reading the [Architecture] (https://github.com/umple/umple/wiki/Architecture#umpleto-code-for-generating-code-in-the-various-languages) and [Cheat Sheet] (https://github.com/umple/umple/wiki/CheatSheet) of umple made much more sense now and explained a lot. I strongly recommend having a look at them and [Best Practices] (https://github.com/umple/umple/wiki/BestUmpleUsePractices) every once in a while contributing to the project.
November 7 2015
- Tim mentioned that the pull request I made does not contain no changes, which is strange as I actually made changes to the JavaClassGenerator.java file. After double checking the changes on my branch, the modification I made is still there and the manual test I tried is passing. However, after doing a full build (without skipping tests) using "ant -Dmyenv=local", I noticed that the changes are being "undone". I have emailed Tim about it and am currently waiting for his response to clarify that.
November 4 2015
- [Issue #594] (https://github.com/umple/umple/issues/594) is now fixed and passing the test examples I tried. In fact, the problem was that I was doing a euick umple using "ant -Dmyenv=local -f build.umple.xml umpleSelf compile packageMainJar" which does not update the jar files. After building all the jar files using "ant -Dmyenv=local -f build.umple.xml umpleSelf compile packageJars", problem was fixed and the "canSetK" variable is not being used anymore for immutable keys. I have made a pull request to close [#594] (https://github.com/umple/umple/issues/594).
October 31 2015
- After debugging the javaClassGenerator, I was to able to figure out where each member method is generated. The constructor generator is checks if the keys are mutable before appending the initialization of the canSetK. Thus, I decided to use the same logic to fix the issue, namely checking if the key is mutable before appending the line that would set the canSetK variable to false in the hashCode() method. After testing it using umple files examples, however, the variable is still being used which means the issue is not fixed. Now, I am going to debug it to understand why it is not working.
October 22 2015
- Made some progress in [issue #594] (https://github.com/umple/umple/issues/594), as I localized where the hashCode() Java code is being generated. In fact, after starting looking at the JavaGenrator.java class under the compiler package of the src-gen-umple folder, I noticed that the the class was using all the methods encapsulated in the [java compiler classes] (https://github.com/umple/umple/tree/master/cruise.umple/src-gen-jet/cruise/umple/compiler/java) under src-gen-jet. Now, I am working on understanding the logic of the string buffer that would contain the java class code.
- After analyzing the code, I decided to go with the approach suggested in the issue (i.e. Removing the line where the undeclared "canSetK" variable is being used) as it would be more neat than actually adding an attribute that would never be used.
October 19 2015
- After analyzing [issue #594] (https://github.com/umple/umple/issues/594) and trying out different examples, I figured out that there would be two ways to solve the issue; namely: 1- Removing the line where the undeclared "canSetK" variable is being used as suggested in the issue. 2- Change the code to actually generate the member variable ( as it's the case when the key is mutable) and set it to false, which I think would make the code more coherent. However, I would need to analyze the actual code to determine what would be better.
October 13 2015
- Changed the approach taken to solve [issue #449] (https://github.com/umple/umple/issues/449) after receiving some directions from Tim. The warning is currently being issued when not all the attributes have been found; i.e. only the ones of the child class are and the parent's are not. Thus, I'm going to look at the second pass code, where are analyses that can only be done after the model is properly built, according to Tim.
October 10 2015
- Issue [#603] (https://github.com/umple/umple/issues/603) is now closed and another pull request was made to merge [#604] (https://github.com/umple/umple/issues/604).
- Kevin helped a lot in understanding how the process of pushing and making a pull request works. Directions on how to do that can be found in this [discussion] (https://github.com/umple/umple/issues/604)
October 9 2015
- The "push" problem was fixed, and it turned out that I did not accept the invitation to the repository. I have now accepted it and made a pull request to merge the issues [#603] (https://github.com/umple/umple/issues/603) and [#604] (https://github.com/umple/umple/issues/604) fixes. This [link] (https://help.github.com/articles/using-pull-requests/) was also very helpful to get a deeper understanding of pull requests and how they work for people who are not familiar with it.
- Self assigned issue [#594] (https://github.com/umple/umple/issues/594), and started looking at and analyzing it. This does not mean I gave up on issue [issue #449] (https://github.com/umple/umple/issues/449), but it is just to make sure that I keep making progress as I dig deeper into it.
October 6 2015
- Fixed issues #603 and #604, but I need help making a pull request and committing the changes. In fact, I am having permission problems with Github when I try to push my changes. The error message I am getting is: remote: Permission to umple/umple.git denied to toulayha. fatal: unable to access 'https://github.com/umple/umple.git/': The requested URL returned error: 403
- [issue #449] (https://github.com/umple/umple/issues/449) is still pending waiting for more information about the code structure and how the Umple code gets parsed.
October 3 2015
- Started looking at simpler issues; namely [#603] (https://github.com/umple/umple/issues/603) and [#604] (https://github.com/umple/umple/issues/604), in order to be able to make a pull request by October 7th as Tim asked.
September 20 2015
- Discussed some options about how to fix the issue with Tim who suggested to encapsulate the code block that is responsible of parsing the attributes of an umple class in a function, and use that function use it to recurse on the parent class in order to ensure efficiency.
- After playing with the code and doing some research about the issue, I found important information that explained a lot about in former UCOSP student [Warren Marivel's log] (https://github.com/umple/umple/wiki/UCOSPLogWarrenMarivel). The issue, originally reported on google code with ID  https://groups.google.com/forum/#!topic/umple-dev/fw3Lw8Fcv7A, used to include both this problem and generating the correct java code as well. The student fixed the java code problem by implementing a method UmpleClass::getAllAttributes to get the inherited attributes in addition to the member attributes, and updated the Java code generator to use that method. However, he was not able to fix the warning issue as it is not possible to get the inherited attributes at the point in the code where the warning is being issued. I have discussed this with Tim and he asked me to email him all the details so he can have a look on it and try to figure out why the inherited attributes are not being fetched.
September 18 2015
- Development Set Up is now completely finalized, and all tests are passing in Eclipse except the "executeSimpleAntScript".
- Started looking at [issue #449] (https://github.com/umple/umple/issues/449) where a warning is being issued on Umple online when inherited attributes are used as keys. After analyzing the UmpleParser classes, I have localized the place in the code where the warning is being issued. It is located in the UmpleInternalarser_CodeClass class in line #2704, and the parser is basically considering the inherited attributes as not declared in the subclass which results in issuing a warning [(W27)] (http://cruise.eecs.uottawa.ca/umple/W027KeyIdentifierIncorrect.html).
September 16 2015
- Worked on finalizing the full Development Set Up from https://github.com/umple/umple/wiki/DevelopmentSetUp.
- Resolved all the issues with ant build by figuring out how to set the java and ant home environment. All what needs to be done on the terminal for UNIX can be found at http://stackoverflow.com/questions/3222804/how-can-i-install-apache-ant-on-mac-os-x
- Umple is now building successfully on the command-line. Changing current directory to the umple/build is important.
- Installed Ivy on Eclipse and Created and checked out the projects cruise.umple and cruise.umple.nebula.
- Installed JET and Builded the project Successfully.
- Run all the tests of the projects, but had some errors. Running a full build from the command line and refreshing the projects made the tests pass. However, I'm receiving warning saying that "Ant failed to run successfully", which is located at BuilderTest.executeSimpleAntScripts.
September 13 2015
- Read the first 2 tutorials to learn more about umple language at https://github.com/umple/umple/wiki/Tutorials. Tutorial 1 about Basic attributes and associations is very simple and straightforward and explains the concept clearly. Tutorial 2 requires is also easy to understand; however, it requires some knowledge about state machines. Thus, Reading a little about that would be very helpful.
- Downloaded and installed the latest version of Ruby from https://www.ruby-lang.org/en/downloads/ and followed terminal installation direction from https://www.ruby-lang.org/en/documentation/installation/#homebrew which were pretty straightforward.
- Still having issues building using ant, even after reading more about it on http://ant.apache.org/manual/install.html. The steps are not precise and little vague. Did not really figure out how to perform step 4, which says to "Set environmental variables JAVA_HOME to your Java environment, ANT_HOME to the directory you uncompressed Ant to".
September 10 2015
- Set up the configuration management repository by cloning it using GitHub. Reading about it at https://www.atlassian.com/git/tutorials/setting-up-a-repository was very helpful.
- Read about best practices of contributing to umple at https://github.com/umple/umple/wiki/ContributionProcessToUmple and the philosophy and vision.
- Downloaded apache-ant from https://ant.apache.org/bindownload.cgi and installed from terminal. Using ant to compile umple did not work, because the shell is not finding the command "ant".
September 7 2015
- Read about Umple at http://www.umple.org.
- Explored examples and features of UmpleOnline and modified some of the examples to get familiar with it.
- Downloaded the Eclipse plug-in from http://cruise.eecs.uottawa.ca/umpleonline/download_eclipse_umple_plugin.shtml, and tried some examples of it which worked. Updating the java version is really important.
- Had problems compiling umple on the command-line, but fixed it after changing the location of the "umple.jar" file.
- Downloaded the command-line compiler but could not install, since ant is not installed yet.