case
ADM Blog
6Sep/100

JavaScript Object-Oriented Programming (OOP) – jClass

I just finished working on a JavaScript 'framework' that will allow you to write highly object-oriented code in your browser.
Using jClass you can easily define namespaces, create and extend class, define and implement interfaces, define public/private/static methods, override and overload them, have getters and setters, and so on.

The syntax for writing code using jClass looks something like this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
include("some.other.files");
 
namespace("my.namespace")
({
    MyClass : jClass.extends(BaseClass).implements(SomeInterf, SomeOtherInterf)
    ({
        constructor : function(){
         ....
        },
        private : {
          ....
        },
        public : {
          ....
        },
        static : {
          ....
        }
    }),
    OtherClass : jClass({
       ......
    })
})

I'm also working on some useful libraries that you can use with jClass.
Usage examples, documentation and downloads are all available on Google Code right HERE

24Sep/090

The simplest way to parse XML in Java

You can do a lot with XML, but often all you want to do is to read a simple file with some basic data in it. The options for doing this, SAX, DOM and JAXB are all relatively verbose and often off-putting. So here is a class that will make all this much much more simple.

Parsing a file such as:

1
2
3
4
5
6
7
8
9
10
11
12
<config>
	<title>test</title>
	<version major="1" minor="2"/>
	<roles>
		<role name="admin"/>
		<role name="user"/>
	</roles>
	<users>
		<user name="joe" password="pass" role="admin"/>
		<user name="harry" password="secret" role="user"/>
	</users>
</config>

Can be achieved with the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Xml config = new Xml("config.xml","config");
 
System.out.println("title: "+config.child("title").content());
 
Xml version = config.child("version");
System.out.println("version: "+version.integer("major")+"."+version.integer("minor"));
 
for(Xml role:config.child("roles").children("role"))
	System.out.println("role: name: "+role.string("name"));
 
for(Xml user:config.child("users").children("user"))
{
	System.out.println(
		"user: name: "+user.string("name")+
		", password: "+user.string("password")+
		", role: "+user.string("role"));
}

As you can see, it's nice and simple and allows you to get to the information quickly and without any hassle. The API uses the DOM parser underneath, but attempts to make the data more easily available. All you need is the following [Click to download] class, which you can of course customise however you like.

Update:
I've just added another nice method to this class. Is called e4xEval, that is actualy a xpath eval but i made it use the flex e4x syntax. So, if you want to get all the role name you can do:

1
2
3
 
Xml config = new Xml("config.xml","config");
String[] list = config.e4xEval("config.roles.role.@name");  // @ is attribute