WildcardAlias

WilldcardAlias allows creating aliases for packages, namespaces or multiple similar classes. WilcardAlias constructor accepts 2 parameters:

* symbol is used to specify the place where multiple matches are allowed (you can use only one * per pattern).

Let's look how to alias all classes within one package/namespace.

AliasExample.java: savePilots
01private static void savePilots(Configuration configuration){ 02 new File(DB4O_FILE_NAME ).delete(); 03 ObjectContainer container = Db4o.openFile(configuration, DB4O_FILE_NAME); 04 try { 05 Pilot pilot = new Pilot("David Barrichello",99); 06 container.set(pilot); 07 pilot = new Pilot("Kimi Raikkonen",100); 08 container.set(pilot); 09 } finally { 10 container.close(); 11 } 12 }
AliasExample.java: configureAlias
01private static Configuration configureAlias() { 02 // com.db4odoc.aliases.* - package for the classes saved in the database 03 // com.db4odoc.aliases.newalias.* - runtime package 04 WildcardAlias wAlias = new WildcardAlias("com.db4odoc.aliases.*","com.db4odoc.aliases.newalias.*"); 05 // add the alias to the configuration 06 Configuration configuration = Db4o.newConfiguration(); 07 configuration.addAlias(wAlias); 08 System.out.println("Stored name for com.db4odoc.aliases.newalias.Pilot: "+wAlias.resolveRuntimeName("com.db4odoc.aliases.newalias.Pilot")); 09 System.out.println("Runtime name for com.db4odoc.aliases.Pilot: "+wAlias.resolveStoredName("com.db4odoc.aliases.Pilot")); 10 return configuration; 11 }

You can check the matches for the concrete classes using resolveRuntimeName and resolveStoredName.

In order to add your own aliasing logic implement Alias interface (for example you may want to use more sophisticated pattern logic). You own resolving logic implementation should reside in resolveRuntimeName and resolveStoredName methods.