Tuesday, June 30, 2009

Merge dependencies in maven

I have a need to merge dependencies of my Confluence JSON webservice plugin because the plugin needs 2 libraries which are json-lib and ezmorph. There are a few ways on how to do this:

  • A very naive way, by unjaring all the dependencies and my plugin together and then rejar it back. This is definitely not a good way since I want to make my plugin is installable via repository client.
  • Maven, maven provides you a way on how to merge file. The idea is to unjar the dependencies before maven package the classes to be jar file. So, what I did was to unpack the dependencies to classes directory where maven allocate the classes of my plugin after compile them.
The following is the additional pom.xml configuration for my plugin:

Saturday, June 27, 2009

installation of sharepoint

I have been struggling a lot with this freaking tool. Why do I say so, because its really really freaking me out. My purpose is to set up SSO using sso service bundled with MOSS. Its

The first time I experienced the problem of the domain name. Then, I googled a lot, I found a page saying that we cant have domain name more than 15 characters??!!! What the ???!!! And then i changed the domain of my AD successfully. This way, I faced another problem which I dont understand what is the problem actually :D. Its about network administration thing. If I had to learn about the administration thing, it would take quite some time to learn. I need to consider about the time that i have. So, I left this way.

After thinking that this way seems to be impossible, then I moved to another way which is to remove the domain of domain controller. Because this machine is only 1 machine as a domain controller. After removing the domain controller of course, many applications which deal with domain will have a problem, not excluded sharepoint. So, after removing domain, I definitely need to create a new domain.

Oww yeah, I forgot to say about the tool used to remove and create domain in my windows server 2003. The tool is dcpromo. This tool is bundled with your Windows server 2003, if you cant find it. You can google and download it. :P

After creating the domain (a shorter name, of course), what I did is to remove and reinstall my sharepoint as I am afraid that there is something may crash or something. So, I reinstalled sharepoint. I faced a problem here as well :P *problems never stop coming*. So, what was I facing is about installing this darn application from my vm of windows server 2003. You need to install manually another sql server instance which name is officeservers. Because, sharepoint needs this database with this fix name *it seems they use a constant on this db, im not sure anyway :P*. After installing this database, the installation went smooth and it says that it is completely installed. But...... *there is a "but" coming* I got another problem still. So, it was a "not enough permission" problem. I had been googling a lot to find solution for this problem. Some people suggest editing regedit and creating a new user (all of this suggestions can be found by googling). This way didnt work. So, the last thing that I did are:
- I switched to use administrator account.
- I changed service account in sharepoint. You can have a look on the following figure.

- Put the name of administator account on the SSO service as I have configured in the above step.

taraaaaa................ All things work fine.... after all.....

Sunday, June 21, 2009


Today, I asses the feasibility of NotificationMessage plugin that I want to develop. What does this plugin do is simple, just message ur team mates. The message itself can be email or message which is stored in local data.

One thing that I asses is about how to store the data in Confluence if it is in the form of message. If it is possible I dont really like to put it as property or more complex data. Usually, plugin developer will store the data in OS_PROPERTYENTRY (if the data is about property) or BANDANA (if the data is a more complex data, usually it is an object representative). I just want to put it as a normal page or news. Lucky me, that Confluence designs its object in a elegant way. News and Page are inherited from AbstractPage. I can foretell that Message class of mine can be inherited from the same AbstractPage. I just need to specify the content type. The same thing happens to user updates feature which people say as "Twitter a like".

I could not find any class to represent user update in Confluence core code, but I could find the entry of this class in the database. It must be somewhere in the plugin which represent this entry. I will do the same thing anyway.

Thursday, June 4, 2009

Sharepoint cannot display anything, just an error message

I just got an error message on my sharepoint. it does not give any clue, the message in the display is so useless. Then, i am trying to find the log which is usually located at C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS. And again, such a useless log, not telling me anything about the cause.

However, I can delete the problematic webpart by specifying this parameter ?Contents=1 For microsoft, this may be called a hidden secret. They dont want to spread the knowledge on their product. Such a stupid.

Also, Sharepoint has an administration page, it is a different process which runs in the different port... haiiihhh.... it is running on port 42094

Monday, June 1, 2009

Last night, I just finished up my testing and a few additional bugs  on JIRA2JIRA plugin which will be used by Atlassian to transfer issues from https://support.atlassian.com to http:// jira.atlassian.com. which I just found that time. Ugghh..... A few things that I realize abouut JIRA implementation on issue is: 

Issue's comment does not belong to issue.

Everytime I need to create issue using webservice provided by JIRA, I need to use another method to add the comment to the issue. There should be an object to encapsulate this operation. Thus, it will roll back all the the transaction in case, the transaction failed. What I think about this design is a very risky to do it. The reasons are:
  1. During the execution of the method, if in case there is a problem of connection for a few seconds. Maybe, during adding a comment #2, for certain issue, it fails. This will make your issue incomplete and be added in half way. Of course, it will be a trash if it does happen.
  2. Its more effort to maintain both method in the implementation wise.