FissuresImpl

FissuresImpl provides java classes directly needed to support clients and servers using the Fissures/DHI system. If you are using Fissures/DHI and coding in Java, then you almost certainly need fissuresImpl. You may also be interested in fissuresUtil, a collection of utility code built on top of fissuresImpl.

You are likely will also want FissuresIDL.jar. This contains the compiled Java code that was generated by the IDL to Java compiler. You could recreate this from the IDL files, but it is usually quicker to download it.

A jar file with all classes can be downloaded here. The JavaDocs for the latest release of fissuresImpl can be browsed here. You may also be interested in the source as it stands in CVS, which you can get from Fisheye, our CVS viewer.

Because object location is an issue in any distributed computing system we have written a brief document explaining how the CORBA NamingService is used withing the Fissures/DHI system.

The general naming scheme for packages is that things related to the edu.iris.Fissures.IfXyz package are in edu.iris.Fissures.xyz. The exception is that things related to classes directly in the edu.iris.Fissures package are in edu.iris.Fissures.model.

One of the best things in Corba 2.3 are valuetypes. These map to Java objects in a much more natural way than structs, but they do come with additional complexity. In general, valuetypes are mapped into abstract Java classes, which means that you can create a subclass within an application that has additional functionality, but can still be sent via Corba. This contrasts with structs in IDL, which are mapped to final classes in Java, and hence cannot be subclasses. This works fine on the sending side, so long as you don't expect any additional attributes to be sent (they won't be), but is much more difficult on the recieving side. The ORB must somehow find out which subclass of the abstract class to populate. There are several ways of doing this, but the safest way is to explicitely register a factory for each valuetype with the orb. Because this is a common need, and many applicatons will not need or want to create there own subclasses, we have provided subclasses and factories for all of the valuetypes in the Fissures IDL here. In addition, each package has a class that registers all the default valuetypes. For instance in edu.iris.Fissures.network, there is a IfNetworkRegisterVT class that registers default valuetype factories for all the valuetypes in edu.iris.Fissures.IfNetwork. Lastly, edu.iris.Fissures.AllVTFactory calls all of the xxxRegisterVT classes to register all valuetypes with the ORB. Even if you want to create specialized subclasses of a few valuetypes, you should use the AllVTFactory.register(orb) method, and then regtister your own factories to overwrite the defaults. This way there will always be at least the default subclass for any valuetype.

Another area where there is quite alot of prebuilt functionality in this utility implementation library is in the units and quantities. There is code for converting units and quantities, as well as the definitions of a large number of units. In many cases, one need only do something like edu.iris.Fissures.model.UnitImpl.SECOND to get an instance of a familiar unit. See the javadocs for UnitImpl, UnitRangeImpl and QuantityImpl for more information.

Similarly, there is already quite a bit of code for handling time and dates. ISOTime in edu.iris.Fissures.model can convert the ISO standard date string into forms more useful for calculations. Also, MicroSecondDate in the same package extends java.util.Date to provide for microsecond precision and functionality for doing simple time arithmatic.