Inheritance of .class-files in the package explorer in a Domino application

September 5, 2011 § 2 Comments

We have had great problems with XPages in one of our applications.

We have an application that is based on a template. The XPages in the application calls java code that has been added to the package explorer in .java-files and jars.

We had determined that the problem somehow had to do with the signing of the design elements (we mostly got error like ‘sessionAsSigner not found’), but we could not really understand what happened. But now we have learned that the complied .class files in an application is by default set to disallow inheritance. This means that the production database did not inherent the updated .class-files from the template. This then led to the signing problem. So I think that the thing to do is first update and sign the template. Then clean (without build) the production appplication. Thirdly you should inherent the template and then build the producgtion application. And finally sign the production db with the same ID as the template (haven’t tested yet but it seems right).

Advertisements

Dojo Data Grid problems in XPages

February 4, 2011 § 3 Comments

I’m working on a project where I need to use an Dojo Data Grid (djxDataGrid) to enable Excel like editing. (As a note I can mention that I’m using the XPages Extension Library from OpenNTF to accomplish this.)

I want to present a selection of documents from a Domino View. The problem is that I get empty rows for those documents that should not be presented:

I use a RestService control to collect the data from the Domino View. This service is of the type viewItemFileService (I have also tested another of the types with the same result, the distinction between the different services is not clear to me).

I have tried using either the property categoryFilter or the key propert. Both with the same unsatisfactory result.

I have also tried to set a readers field to limit what is shown in the data grid. The result is still the same.

Another way to solve my problem is if I could bind a javascript object directly to the data grid (this is actually the preferred way as I originally don’t have the data as Notes Documents). I haven’t been able to find any documentation about how this could be accomplished.

I guess I will have to read the source for the custom controls in the extension library and try to figure out if it is doable.

War in the East

December 13, 2010 § Leave a comment

Yesterday I bought Matrix games War in the East. It really is a monster game, but there are some smaller scenarios for us normal people. And I must say that the game was easy to get into. I have played the tutorial scenario twice and I have started the Roads to Minsk scenario (see the picture below) and I have already got the hang of moving and fighting. The more subtle things will have to wait until I have read the almost 400 page thick manual.

The road to Minsk is before us

And I must say that the game is visually clean and the different zooming levels make it possible to get a reasonable overview of the fronts also.

The top 25 music albums of 2010

November 27, 2010 § 1 Comment

So. Another year has gone by.

This is my distillation of the music I have experienced during 2010. When I look at the list, it feels very predictable and slightly boring, but that is who I am.

This is a list of CD albums. Counting down from twenty five to one. I have illustrated each album with a Youtube clip (some of them you have to double click to watch).

You can also get this list via Spotify: årsbästalistan 2010 (Seventh Wonder’s album is not available on Spotify right now, but I will add it if it becomes available).

25. Teenage fanclub – Shadows

Some good songs, but on the whole a very uneven album.

24. Mutiny Within

A good debut album in the progressive metal genre.

23. Kort – Invariable Hearthache

Country duetts by Kurt Wagner and Cortney Tidwell.

22. Rooney – Eureka

Pure pop. Upbeat and sunny.

21.Shelby Lynne – Tears, Lies and Alibis

Americana.

20. Sound Massi – Ô Houria

Arabicana.

19. Anais Mitchell – Hadestown

Mitchell was a new acquaintance for me. She has a very personal diction. I feel that this album is a bit reminiscent of last years Decemberists’ album, but not as good.

18. Robert Plant – Band of Joy

The guitar playing by Buddy Miller is fantastic, but Plants performance is a bit too restraint.

17. Tom Jones – Praise & Blame

Devotional and gospel covers sung very heartfelt by Mr Jones.

16. My Jerusalem – Gone for Good

Good indie album. Vulgar video. But just a tad.

15. Avenged Sevenfold – Nightmare

A varied rocker with Mike portnoy behind the drums.

14. Kiuas – Lustdriven

A lot of Finnish sisu on this power metal album with some progressive influences. Nice.

13. Laura Marling – I Speak Because I Can

Weather beaten English folkey music.

12. Cherry Ghost – Beneath This Burning Shoreline

Pure longing on the second effort from the Bolton indie band.

11. Shugo Tokumaru – Port Entropy

Brittle and beautiful Japanese pop.

10. The National – High Violet

American indie gloom.

9. I am Kloot – Sky At Night

Great songs from this Manchester trio.

8. Duke and King – Long Live the Duke & the King

Second album from this Huckelberry Finn inspired band. Again, it is a slightly uneven album, but Shaky is one of the betters songs of the year.

7. Khoma – A Final Storm

Dark post metal from northern Sweden. Not as good and heavy as their 2006 effort ‘The Second Wave’ though.

6. Justin Townes Earle – Harlem River Blues

The son of Steve Earle is living the roch n’ roll dream. And he’s making some good music in the process.

5. Dylan LeBlanc – Pauper’s Field

Soaring country rock album from this young new talent.

4. Johnossi – Mavericks

Solid third effort from Swedish rock duo.

3. Seventh Wonder – Great Escape

Rulers of the Swedish progressive metal scene.

2. James – ‘The Morning After’ and ‘The Night Before’

These two mini albums could have been released as one album. The really feel like one statement. This is rock when it is for real.

1. Manic Street Preachers – Postcards From a Young Man

Fantastic pop melodies, packaged in an incredibly crisp production by Dave Eringa.

And Merry Christmas to you all.

CKEditor in Lotus Domino

November 21, 2010 § 2 Comments

After spending a few hours dismantling the CKEditor in Domino this is what I have found out.

It is a quite a lot of JavaScript code that makes the Domino implementation of CKEditor tick. Most of the code is unaltered for the Domino implementation, but there are some changes. You will find the the code for CKEditor in the folder <data folder>\domino\html\ckeditor\ on the domino server.

By using a tool like grep you can search for any file withe the word IBM in it and you will find the files that has been altered for the Domino implementation. Also please note that the JavaScript files each as two versions one obfuscated for size reasons and one with the original code. You will find the readable versions in the folder _source.

If you want to change how the editor works I would not recommend you to make changes in these files. It is better to programmatically change the things you want to change. The problem with xPages is that it can be hard to guess the id that is assigned to different elements. And that makes it harder to get a handle on an element. One way to do this for the CKEditor is to loop through all instances and get the name of each instance. This example isn’t very useful, but you get the idea:

for(var i in CKEDITOR.instances) {
    alert(CKEDITOR.instances[i].name); // alerting for testing purposes only
}

Also note that the name of the CKEditor instance is the same as the id-tag of the containing textarea-element.

To get the CKEditor integrated into the whole xPages thing there are also a couple of dojo-files needed. You will find these files in the folder <data folder>\domino\js\dojo-x.y.z\ibm\xsp\widget\layout\ (where x.y.z is the current dojo-version used by Domino). The interesting files for the CKEditor-integration are xspCKEditor.js and CKEditorWrapper.js.

The file xspCKEditor.js defines the ajax-call used for uploading an image to the server. The return value of this call contains a short code snippet that contains the URL to the uploaded image.

var url = document.location.href.substring(0, document.location.href.indexOf('?'));
if(null != url){
  this.filebrowserImageUploadUrl = url +
    "?$$axtarget=" + options.id +
    "&$$viewid=" + XSP.findForm(options.id)["$$viewid"].value +
    "&command=QuickUpload&type=Images&SessionID=" +
    readCookie("SessionID");
}

I have not been able to find any documentation of what argument the call can use, but you can make some deductions from the code itself. And you should be able to make your own upload controls by following the patterns in the code above.

As the other half of the programming crew in my shop is quiting around Christmas I won’t be able to take the time to experiment with his. But maybe you, the unknown reader, have the time 😉

 

XPages course

November 8, 2010 § Leave a comment

I’m currently taking the online video course about XPages on the site xpages101.net. It’s great. Matt White is both very skilled in XPages and a really good teacher. So if you want to kick start your Xpages programming (and have the funds) I can really recommend this course.

jMonkeyEngine 3

October 16, 2010 § Leave a comment

jMonkey is a Java 3D game engine. It uses OpenGL via LWJGL and JOGL. For sound it supports OpenAL.

The release of version 3 of the engine is drawing near. A really nice feature is that they have implemented an IDE called jMonkeyPlatform. This IDE is based on NetBeans and has everything ready for game development.

I installed the Aplpha 2 on my Ubuntu 10.04 first, but I had problems with the SceneViewer Window. I haven’t solved that problem. On my Vista box, it plays niceley, though. If you try to install it on Ubuntu do not install it as sudo. Use your normal user to install it.

I haved worked my way through the Tutorials for beginners. With the jMonkeyPlatform the tutorials are easy to follow as most libraries is preconfigured. The only not totally obvious thing was that the models used for some of the tutorials was stored in the jme3testdata jar. You have to include that in your project to be able to run the examples. To do that, right-click on the Libraries-folder in your project explorer and select ‘Add Library…‘. You can then select the needed library from the list:

 

Select jme3-test-data to include it in your project

 

The tutotials has simple examples for most everything you want to do like picking, animation, asset handling. It is really easy to start 3D programming this way.

If you have trouble finding the javadocs they are in the zip-file jMonkeyEngine3-javadoc.zip.