More reflection on SWE practices would have made it better.
- 03 Jan 2005
The last diagram of our part: class diagram v4
So our acceptance review went well. Eelco was rather satisfied, apart from some details (like RAT integration :)). Next week, we will try to integrate more with them, and that's all. The metrics from Tobias showed what we expected. Bad OO of our part, because of the servlets. ServletForm is a bad thing, but that is something we now about. o that was all I think...
The metrics of Tobias showed an absence of OO modelling in our servlets indeed. We propably should not have continued with the prototype at the beginning. But we learned about it :). His suggestion was to make an extra layer between the servlets and the rendering/storage layer. So the amount of the servlets was not the problem, the length of the servlets was. I think that if rendering is completely integrated then the servlets will probably shrink in size. Most doGet methods are making HTML and that can be done through variables and the rendering pipeline.
At least we had a lot of fun in the project
Alright, so for today we can do the following things:
- write the report for eelco - done
- prepare the presentation - perform a walkthrough tomorrow
- change historyfile, add a check for fileExists - fixed
- look at the arrayindexoutofbounds exception - appeared to be in Storage code, so not our problem
- integrating with RAT (we have an appointment for monday 13:00) - done, but not as nice as we wished...
- a form at the bottom of revision info for more log messages... but that isn't a big deal - fixed
so that's all I hope...
As said, integrating with rendering didn't went that well. Lot of things were not really implemented proparly, but now it worked. So I will present our part tomorrow. I made a demo and it looks fine. That's all for today.
Although Michiel sayd we where the die-hards we will have to blame ourselfs. We where there at the time and the others didn't need to come. All files needed to be modified and this cannot be done by 5 people at the same time. And the two of us already needed to deal with the User Management team
I checked wheter the authentication works with copy and revert and it does. So this todo can be deleted from the book. We can ad the "ArrayIndexOutOfBoundsException" to the todo list. It seems that whenerver a commit is done, this array happens...
- 31 Oct 2004
As the die-hards of our team Eric and I have just peformed a major refactoring session. All HTML forms are moved in one class, just like all formatter methods.
De updated class diagram is located here
Now we are starting with user integration and then we will see...
Well after five hours of hard work (and some fun
), we finally made things working. User authentication should work now, altough it isn't fully tested yet. But I will go through the complete gw this evening and test all functions. Further, we refactored some more things. Some Servlets use the existing revision numbers drop down menu, so that should work somewhat nicer...
Todo things are:
- testing all functions
- integrating with RAT (we have an appointment for monday 13:00)
- a form at the bottom of revision info for more log messages... but that isn't a big deal
- some more things that I can't remember...
Last refactor session. What should be done is:
- integrate with user management
- integrate with rendering
- last check on javadocs
- implementing last requirements
The priority is from top to bottom...
Oh, the updated class diagram: class diagram
Finished Javadocs and completed the use of our text and resource bundles. Michiel is currently working on copyfile. Ivaylo has completed his work on FunctionalTest. Patrick worked on the structure of the JavaDocs?
This evening I performed a major refactoring. I moved methods, made them smaller and more consistent. Every class should use the print(response, contenttype, title, body) method for output, no direct writing anymore. Not all files have been changed, but I call it a day.
I've added a class diagram of our servlets at this moment: class diagram
(This one is overwritten with a newer version).
Today was a day without MartinBravenboer
, so it was quite relaxed :-). It started with non working Linux Computers, but at 11:30 we could finally begin. JeroenZuijderwijk
began on the javadocs and some refactoring. IvayloGochkov
went further with the tests. EricBouwers
and I discussed integration with several teams: Query, Storage, UserManagement
and RAT. User authentication is implemented by Storage and UserManagement
so we can catch an Exception and redirect to some login servlet. We discussed some things with RAT, and they were very busy today, but we are not yet integrated with them. We extended MoveFile?
so it can rename files and directories too. That's all I think...
Beacuse I had no lecture today (everybody knew it, except for me
), I worked on MoveFile?
. It now has a file overwrite function.
Today there were some minor features added to the code. The no-cache meta tag was added to the page head so the ugly random number generation feature could be deleted. Also the ugly pipe-code in ShowFile?
was deleted from it (again! :)). Michiel changed the printException method so that it requires the whole response, not just the PrintWriter?
. Also create directory was added to HandleFile?
. Eric made a nice feature that requests all the earlier revision numbers for a certain file and use that output to let the visitor choose a revision to revert to. Today the Dutch language pack was added separately from the english default one. HistoryServlet?
works on dirs and on simple files now. No binaries or other strange things. Further, the getDirListing(pathInfo, revision, recurse) from SVNStorage is fixed with permission from Patrick (one of the storage team members). Also a bug in EditFile?
when creating new files was fixed. It turned out that our ServletUtilities?
was broken after a commit, which caused the whole system not to compile. This was fixed within the shortest possible notice. Special thanks go to Eric.
Monday we should go talk with the render team, because we have to make some agreements on how we are going to use their input.
>Changed HandleFile? changed to Showfile. The rendering pipe was in there. I lik e getting credits for solving the problem, but apperently it was also my fault that the errors appeared. Thanks to Arie for bringing the errors under attention. I do not know why and how the lines came into ServletUtilities? . I should have tested the code after the 'svn up' i guess. It is solved anyway -- EricBouwers
Today we did a lot of work again. Jeroen and Patrick finished the ResourceBundle?
and managed to create a Dutch version too. That's nice, but not one of our main features. So thursday they can work on other things. Ivo worked on some HttpUnit?
tests, but encountered problems that weren't there yesterday. So that's also something for thursday...
Eric and myself worked on a number of small things. When you create a new file within a new directory, it doesn't throw an exception anymore. (Thanks to ThomasVanDijk
for notifying us about this problem). Furthermore, the changed paths in commit logs are printed as links. Revision numbers in the commit overview are links too. We changed the used repository to the original test-wiki again, moved the stylesheets to make it work. Furthermore some small bug fixes. Thursday we plan on fixing the revert function, so that it displays all available revision numbers.
> corrected some minor errors -- EricBouwers
Today was another very productive day. We can now handle binairy files through uploading, give content-types to files and we made almost all hardcoded strings variable by using a resource bundel. Tomorrow we will finish this and maybe inlude the Dutch version of this bundle. We also made some minor fixes and changes so we can enjoy our wiki in a better way.
Apart from all the hacking some testSuites where made. These tests are based on HttpUnit?
and construct a specific flow through the wiki. In this way we can test if everything still works after we made changes to the core servlets.
The third thing worth mentioning was the merging with the trunk. There is not much to say about is because everything went well, but it is nice to know that we are working directly on the trunk now.
The last thing to say about today was that we had, a little bit informal, meetings with the rendering and the user-management team. The meeting with the rendering team was not very productive and we decided together that we will meet again monday with all of our team members to discuss the problem of the forms. The meeting with the user-management team was more productive. We made a global sketch of the user-authentication process and both know what we must do to get the users logged in. We can work on it anyway :).
We hope Martin will have a good time at his seminar and hope to see him back in two weeks.
Okay, this is my actual first entry here, let's make it an informative one. I will not make such a lengthy one as Eric did (or perhaps it will be), typing with one hand is exhaustive (I broke my wrist one and a half week ago... and yes it did hurt quite a lot) :P
Anyway let's get to the point. Eric already mentioned this, but today, I and Jeroen worked hard on extracting all the English texts that are used throughout the program for showing the output. This involves not only error messages, but also simple things like menu item names such as Edit, Commit, and so on. We put this in a resource bundle, a standard feature provided by Java. We did not only extract these texts, but also things like how dates are shown (the SimpleDateFormat usages) which were put in a seperate resource bundle for config stuff. And tomorrow, we can have a little fun with this
A Dutch bundle is just a start of what we can do, we can literally use any language, or at least most of them, in case they require a different approach. I'm sure some things aren't covered 100% yet but we will see tomorrow for this. We also have been thinking on a way where to store these bundles, hardcoding them might not be the best thing, especially if you want to change them or add other languages. We'll come up with something :P
No meetings today, no working planned for today. But I tested if I could work from home (which is possible, through putty, winscp and some port forwarding). I fixed the force creation of MoveFile so new directories are made.
's next to those from 12-10-04:
- AttachFile? , with the common package from apache today (15-10) i've implemented this, but it couldn't be tested because the package is not yet available. So no commit yet, but it should work And it almost worked some compile errors, but it worked very good!
Today was like yesterday, a little cold but no rain. We managed to get the following work done today. Removed hard links to "/gw/???" and replaced those by generic links which are generated by the calls to the documents. Also the statusmessage was refactored and now uses method from Serverutils.java. Returing of error messages was added to PraiseFile?
and also saw that there was a bug-report for subversion 1.1pre2 for the issue we have with the native blame. ResourceBundle?
was added today as well, we should move all static messages there to have all hard-coded strings together in one file(and make it possible to let this file read these messages from a language file). ShowFile?
.java was extended to show the history of dirs, but this is not complete yet.
- Move strings into ResourceBundle?
- Make the history of dirs working
- Make sure PraiseFile? works with another version of subversion
's might be:
- Renaming Resources (extends ListResourceBundle? ) to StringResources?
- Create a ConfigResources? to use the ResourceBundles? for config objects (like the SimpleDateFormat? we are using)
- meet with Users about Sessions and stuff
- meet with RAT about their StyleSheet? using
- meet with Query about moving and renaming all links to a page
- take a good look at our good and refactor it to something better (ShowFile? for example could use a refactoring)
Today was a vey productive day. We started with some small fixes in the servlets: VersioningUtils?
renamed to ServletUtils?
, added javadoc. Extended StatusOverview?
(seperate dir and file).
After that we had our meeting. It turned out that Patrick has broken his wrist, so we've worked with four out of five. But tomorrow he is back. MartinBravenboer
was satisfied, altough he didn't looked at our work :-(. After that we splitted and did the following stuff:
- merged our branch (storage/versioning) to the trunk again. This because we had another release ready, with seperate commits and good storage. And now we can start with looking at some Render code.
- RevertFile? is possible
- CommitFileSet? extended with conflict management
- began working on AttachFile? . It worked out that the Servlets support file upload in a dramatic way. We have to get our file from the inputstream that is given to us. So first we have to remove the boundaries and then get the file type and name and so on. So this isn't working properly, but tomorrow is another day
The most interesting thing of today was the merging with the trunk. It turned out that the rendering team has made mock-objects for interacting with the storage components. They made these with a older version of the storage interface. This caused a lot of conflicts during the merge because the mock objects implemented something that had been changed. If the interface of the mock object from the rendering team was updated before there merge, this problem would not have occured. So it is a good idea to have mock objects, but they will have to be up to date.
Today we solved some small things. We made some adjustments tv
The first day of working together in one branch with the storage team worked out quite well. It speeded up the testing of things we implemented today. Eric and Jeroen implemented a PraiseFile?
that praises different updates to the right date, time and user. The storage part was not ready before we started programming on it, but because the storage team immedeately took this at hand we were able to test the PraiseFile?
succesfully. Also Eric and Jeroen added JavaDoc?
. The commit functionality which was already mentioned yesterday is almost completely finished, it just needs a little alternation so it can commit a whole bunch of files at once. Patrick and Michiel also took the job of reimplementing the StatusFile?
to work with the storage backend and added it to ShowFile?
. Ivo worked on the test functionality to detect dead links in the files stored the svn repository. This function is already working, but it is under discussion whether links in dead files should also be checked.
- CommitServlet? has to commit all changed files
- Adding JavaDoc? to all our files
After the merging and decision to work on the same branch as storage, we could finally do some real work. It was good to work with the idea that this code was for real and not some time filling. So like Ivo wrote below, MoveFile?
is working correctly, so is the rest. A thing to look at is Status/ because Storage hasn't implemented this yet, we can't use it, so this servlet should be re-written completely. Another thing is commit functionality. At this moment, commit is invoked after every storeFile, but that's not how it should be. So we should implement a CommitServlet?
which shows a form as the result of a doGet in which you can enter a commit message and as a result of the doPost commits the whole working copy. That way you can edit more files in one 'session' and so on. But that's for the future.
Tomorrow we should implement a lot of things, and get HttpUnit?
wokring too, then we can test
We had team meeting in the morning with MartinBravenboer
. Writing tests with HttpUtil is necessary so we have to spend some time writing Check for broken links and tests folowing the flow View-Edit-Preview-Save. Today was made BrokenLinksTest.java, DiffFile.java, MoveFile.java and RevisionInfo.java and EditFile.java are updated. We going to work together with the Storage group in there branch so Versionig branch is deleted.
No work for today, but we decided to merge tomorrow. After that we can use the Storage code, so that should give us some more things todo. Hopefully, everything will go okay. Eric and myself will do the merging tomorrow morning...
We didn't do much today, because we're waiing on the merge to use the stuff from SM and RAT. We created a MoveFile and added some input check for parameters. That's all for today...
We had meeting with the customer (MartinBravenboer
) this morning. The merge is left for the next week. We going to work on simple fixes using quick hack again because the interfaces from the storage and rendering groups are not ready yet. Later today we expect interface form the rendering group.
So we stopped kinda early yesterday because there wasn't anything todo. Hopefully we can do some things today. But it looks like our part in the GWiki is getting smaller and smaller. At this moment we only have to make calles to the Storage group and the Render group, they have todo a lot for us. So that's nice
Today we came up with the idea that the architecture isn't optimal after all. There are a number of actions that you don't want to do through RAT. so we made a list and put it on the mailinglist to discuss it in the dev-team...
Today was the architecture meeting. The global design is decided and it looks cool :). Further not much to talk about.
We had a meeting with the customer this morning. The customer told us what we had to do for this week. Some things that involved the SVN engine where moved to a later revision so the storage group has time to come up with an interface. The points are listed under this paragraph. After the meeting we discussed what we want to get from the storage group. When we where discussing this the storage group provided us with an interface. We discussed this among ourselves and later with the storage group. The result is a set-up of the interface which will be disscused with the other groups. We tried to disscus the requirements with the rendering group, but they are not ready yet to discuss the things they want from us. This will be discussed next week.
This morning the meeting resulted in a number of new points:
- think of the architecture -> we did, Eric and I are going to the meeting, we don't dare to go alone
- requirements for storagegroup -> we did and we created an interface with them
- what should we offer to the RAT group -> we did, meeting this afternoon
- check the flows of the HTTP request, seperate GET and POST requests
- dir listing should go with SVN client not with IO methods, names should be links
- statusoverview should be links to, show the extended info, subdirectories should work
- revision number should be a link to commit info
- make a revert file servlet
- make edit sessions/transactions ...
so, now i'm going to put them in JIRA
After the lecture this morning our group worked for 2 hours on the features we have to implement. All 5 features listed in JIRA are finished (see issues: GW-2
Thank's to Michiel and Eric Directory Listing was finished today. The questions that raised today was about implementing ShowFile.java.
- Parameter isDir which is a boolean looks useless because the check is done with file.isDirectory(). In the related files is not used also. We have to ask MartinBravenboer about this.
- Should we rewrite the code displaying directory listing using svnClient.list? Now is implemented with file.listFiles().
Monday we going to talk about the structure of Versioning User Interface.
> corrected some minor errors -- MichielOvereem
The second day, how nice :). Today we only worked for an hour and 30 minutes, but we managed do get somethings done. We finally could compile and test some could from yesterday, so that resulted in a few errors (thanks to Jeroen and Patrick for fixing them). But one issue is fixed, the basic status overview. On to the following issues!
The first day of our project. During the lecture of this morning (11:00-13:00) we heard in which team we were. At 13:00 we meeted with each other and with MartinBravenboer
, our advisor. After half an hour we started with looking at the SVN API and the requirements. After that we splitted the team in two subteams and started on the first features. Because NIX wasn't working yet, we couldn't really begin developing, but we played a little with our branch.