Archive for August, 2010
Changing default Apache webroot in Ubuntu
By default the webroot for apache/php is in /var/www
To change this, say, to /home/user/workspace/public_html
1 Go to file: /etc/apache2/sites-available/default
2. Change the /var/www to /home/user/workspace/public_html – as simple as this!!
OR,
If you are changing root just to abscond some difficulty from your IDE or just for temporary purpose, you can use the symlik: just open your terminal and -
cd /home/user/workspace/public_html
ln -s /var/www/project project
hibernate automatically saves/edits objects that are updated
Kind of mysterious – all you want to do would be to update the some component on your java logic and it is automatically saved in the database.
Here is the typical scenario, if you are updating collection of objects and and updating one object would also update others based on some logic – say reordering of numbers, the session would all be saved without saving all the collections – yup I got this exact situation and the reason was
After the update, I have another ajax call to the backend where I would get the list of objects. And the method which collect the objects was annotated as Transactional. In this case, all the dirty objects in the session would be saved though what I wanted was to read only.
So, I changed the annotation to Transactional(readOnly=true) – that took care of it.
SVN integration to Eclipse setup and error – unable to load default svn client
Posted by gullele in Programming Tools on August 26, 2010
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.200.v20090520
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
-vmargs
-Djava.library.path=/usr/share/java/
-Djava.library.path=/usr/lib/jni/
-Xms128m
-Xmx512m
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins
http://subclipse.tigris.org/update_1.6.x – depends on what eclipse you have – check this for compatibility. how do i know what version i have.
sudo apt-get install libsvn-java
default path /usr/lib/eclipse/eclipse.ini
http://ubuntuforums.org/showthread.php?t=916633
One of prevailing repository tools is SVN. I like and use it. I am also a fun of eclipse. The two would make programming cool.
To install SVN in eclipse
Go to http://subclipse.tigris.org/ and see the download and install link. Check which to install based on the Eclipse version – which is depicted on the page.
Install JavaHL
From your command line in Linux: sudo apt-get install libsvn-java.
This is the major factor for the unable to load default svn client error.
Finally
Update your eclipse.ini by adding this line just next to -vmargs at the end
-Djava.library.path=/usr/share/java/
-Djava.library.path=/usr/lib/jni
The location of eclipse.ini would be in your installation folder. The default location for eclipse which loaded from package would be /usr/lib/eclipse/eclipse.ini
Now, restart your Eclipse and enjoy SVNing.
Adding multiple javascript files to page
Posted by gullele in jQuery/JavaScript/CSS on August 15, 2010
I was pulling my hair just for some silly stuff. All I wanted was to put two external javascript file for my floundering page – that was it!! and I do it as
<script language="javascript" src="sourceone" /> <script language="javascript" src="sourcetwo" />
BTW, I am using firefox on ubuntu, then when I try to run the page it would turn white. Astonishingly, the kick for the error was
<script language="javascript" src="sourceone"></script> <script language="javascript" src="sourcetwo" ></script>
datatable/component not updated after deleting and adding new one
Posted by gullele in JavaServer Faces on August 14, 2010
During working on tabular data, it is common to have edit and delete command buttons for each row. And, after we update or delete we want the table to be updated. Let’s looks some simple example.
The table on the JSF might look like
<form id="tablularForm">
<h:datatable id="tabularData" value="#{someBean.list}"
binding="#{someBean.htmlDataTable}" var="data">
<h:column>
<h:outputText id="colum1" value="#{data.column}" />
</h:column>
<h:column>
<h:CommandLink id="edit" value="Edit" action="#{someBean.editAction}" reRender="tabularData"/>
</h:column>
<h:column>
<h:CommandLink id="delete" value="Delete" action="#{someBean.deleteAction}" reRender="tabularData"/>
</h:column>
</h:datatable>
<h:CommandButton id="add" value="add" action="#{someBean.addAction}" />
</h:form>
The above ideal table would work fine. The datatable would store values by reading from bean and would be updated on Edit and Delete actions accordingly. This is b/c of the reRender attribute of the components.
The glitch comes when there is no any data in the table. Say you daleted all the data and you want to add a new one. Or it is the brand new table to be added. The row would be added but it wont be shown on the table. In short the table would not be updated.
The thing is when we use reRender, we have to use the enclosing component not the component to be safe!. When it tries to rerender if the component was not there initially, it wont rerender it.
So, here we can use the id of the form for rerendering the datatable and we would be OK.
Wanted but not invoked: However, there were other interactions with this mock: ->
This is a mockito error you would catch when trying to verify the invocation on an object on specific method, but what happens is you have interacted with other method of that object but not the one mentioned.
If you have an object named CustomerService and say it has two methods named saveCustomer() and verifyExistingCustomer(),
and your mockito looks something like verify(customerService, atleast(1)).verifyExistingCustomer(customer), but in your actual service you called the saveCustomer() at least one.. BINGO you would get that error.
deleted object would be re-saved by cascade (remove deleted object from associations):
Kind of oxymoron ha!, you try to delete but you are told it would be re-saved. Actually it is a safe guard by hibernate that this action is meaningless unless you do the actual stuff.
Two thing to check would be, make sure any collection that holds the object is cleared before deleting the object and the other and most probably the most one would be: Clear the child object from the parent object before deleting the child if you have cascade=”all”
Action in bean is never triggered/called from jsf page
Posted by gullele in JavaServer Faces on August 4, 2010
One plus side of the compiled languages would be telling us every error during/after compilation which would save a lot time from chicanery. But, in JSF you may get unexpected error which is a silent.
The page would run and the action linked to, say command button or command link, may not be triggered.
If you got that, just check your form fields – especially if you are working with datatable, make sure all the conversion and validations are working as expected. If the validation/conversion is not working properly, then the framework would exit before reaching the backend.
One way to troubleshoot this would be to have <h:messages /> with appropriate attributes, like adding showDetail=”false” showSummary=”true”, on your form – that, definitely, would help you to debug the problem.