The Sony Ericsson Clicker - Clicker
lets you remotely control your Macintosh from a compatible Sony Ericsson phone. Further, Sony Ericsson Clicker has a built in "proximity sensor", allowing you to trigger actions when you leave or come back to your Mac. Downloading now...
After trying it: That is a cool fricken app! On the T68i, the controls are at Connect -> Accessories -> Macintosh.
I finished patching XDoclet to allow for Hibernate 2.0 support. I say almost in this post's title because someone still has to commit it. Seems to work pretty good on struts-resume. I can't get one of my unit tests (UserManagerTest
) to run, so I won't be releasing tonight (though I was hoping to). Maybe tomorrow. Here's a rough draft of features and plans in the coming 0.6:
Features in 0.6
===============
- Upgraded to Hibernate 2.0 (http://tinyurl.com/6b00) and
Struts 1.1RC1 (http://tinyurl.com/6cp9).
- Fixed Validation issues when attempting cancel validation and using
LookupDispatchAction (document in Struts 1.1RC1 link above).
- Moved opening Hibernate sessions from being at a method level to being passed
in to each method on the business/persistence tier. Sessions are now obtained
via the ActionFilter.getSession() method.
- Added SMTPAppender to log4.properties to e-mail errors that occur in log
files.
- Added "Remember Me" feature - for details see http://tinyurl.com/6du0.
- Added "Current User" count as a demonstration of a Tiles Controller.
// TODO for 0.7
- Add Skills, SkillGroups, Education, Experience to the mix. Make them
all editable when editing a resume using the Struts Nested Tag Library.
- Figure out a way to display resumes to anonymous users. Do I create XML
versions of a resume in "resources/${username}" or use a servlet that maps
to something like /struts-resume/view/${username}. I like the servlet
idea better, then it's dynamic. However, how often does a resume really
change.
- Complete tests for all Action classes using StrutsTestCase.
- When Tomcat 5 become stable, or I figure out how to install an app on Resin 3,
figure out a way (using Ant) to create JSP 2.0-compliant distribution.
// TODO for 0.8
- Add Transformers and XSL for transforming an XHTML document to XML or Text.
PDF will be covered in a later release.
- Allow a way for users to register (similar to Roller).
- Create User Administration interface with sortable/pageable list of users.
- Complete tests for all JSPs using Canoo WebTest.
The XDoclet team was doing some musing yesterday over who purchased xdoclet.org. I guess someone was listening (and wanted to help), because it was pointing a company yesterday and now it's pointing to XDoclet's homepage. Very cool. Is hibernate.org next?
Soon after: According to an e-mail on the list, xdoclet.net and xdoclet.com should be working too.
While upgrading Hibernate last night and this morning, I also upgraded Struts. Now I'm having some issues there, so I'd better document those too. First of all, the following line doesn't seem to be rendering any client-side JavaScript anymore:
<html:javascript formName="resumeForm"
dynamicJavascript="true" staticJavascript="false"/>
Update 1: Nevermind, it seems my Internet connection went dow while starting Tomcat. Since the Digester couldn't validate the Struts' XML configuration files with their respective DTDs, it stopped them from loading.
Update 2: This turned out to be a legitimate issue. Adding cdata="false"
to the above tag enabled the browser to see the JavaScript by removing the "<![CDATA[" after <script type="text/javascript">
Revisiting the Hibernate upgrade, I needed to add dom4j.jar
to WEB-INF/lib
to solve java.lang.NoClassDefFoundError: org/dom4j/Node
.
Now I'm getting:
java.lang.NoClassDefFoundError
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:571)
What the @#$*%#? hibernate2.jar
is in WEB-INF/lib??
Update 3: I had to add cglib.jar
to WEB-INF/lib as well. Now back to an issue I'm having with the Validator where client-side validation is working when I click "cancel" (as in, it's disable), but server-side is kicks in. Argghhhh!
Update 4: I found an issue (via the struts-user list) about using the Validator with LookupDispatchAction. It basically doesn't allow you to control validation on a method level, so I've hacked the following workaround.
I changed <html:cancel>
to be <html:button>
and added onclick="cancel()"
, where cancel()
is the following JavaScript method:
<script type="text/javascript">
function cancel() {
location.href = '<html:rewrite forward="cancelUser"/>';
}
</script>
The "cancelUser" forward points to "/editUser.do?action=Cancel", which is an action-mapping that doesn't have validation (validation="false") and this hits the "cancel" method on UserAction and routes appropriately.
Phew - I'm beat. I never realized being an upgrade-happy-keyboard-monkey could be so much work!