org.openorb.pss.connector.database
Class DatabaseSession

java.lang.Object
  extended by org.omg.CORBA.LocalObject
      extended by org.openorb.pss.connector.database.DatabaseCatalog
          extended by org.openorb.pss.connector.database.DatabaseSession
All Implemented Interfaces:
java.io.Serializable, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity, CatalogBase, CatalogBaseOperations, Session, SessionOperations, DatabaseCatalogBase, ExtendedCatalog
Direct Known Subclasses:
DatabaseSessionPool, TransactionalDatabaseSession

public class DatabaseSession
extends DatabaseCatalog
implements Session, DatabaseCatalogBase

This class is an implementation of database persistent session.

Author:
Jerome Daniel
See Also:
Serialized Form

Constructor Summary
DatabaseSession()
          Constructor without any parameter
DatabaseSession(org.omg.PortableInterceptor.ORBInitInfo info)
          Constructor
 
Method Summary
 void close()
          The operation close terminates the catalog.
 StorageObject create_embedded_object(StorageHomeBase home_base, java.lang.String storage_type_id)
          This operation is used to create an embedded storage type
 StorageObject create_empty_object(StorageHomeBase home_base, java.lang.String storage_type_id)
          This operation is used to create a storage type
 StorageObject create_object(StorageHomeBase home_base, java.lang.String storage_type_id)
          This operation is used to create a storage type
 PID createHomePID(java.lang.String storage_home_name)
          Generate a Home PID
 PID createPID(PID home_pid, long index)
          Generate a storage type PID
 void destroy(StorageHomeBase home)
           
 StorageHomeBase find_home_base(PID pid)
          Returns an storage object home from its PID ( high part is only used )
 PID[] find_pids(PID home_pid)
          Returns all PIDs for this home
 PID find(PID home_pid, KeyBag[] keys)
          This operation is used to find a storage type
 void flush()
          The flush operation instructs the PSS implementation to write to disk any cached modifications of storage object incarnations managed by this catalog.
 void free_all()
          The operation free_all instructs the catalog implementation to set the reference count of all its PSDL storage object instances to 0.
 java.lang.String getParameter(java.lang.String parameter_name)
          Return a parameter
 StorageObject incarnate(StorageHomeBase home_base, byte[] storage_type_pid, java.lang.String storage_type_id)
          This operation is used to incarnate a storage type
 org.omg.CORBA.portable.InputStream[] read(PID home_pid, PID type_pid, int nb_members)
          This operation is used to get a input access for a storagetype from the datastore
 void refresh()
          A PSS implementation can cache data read from the datastore(s).
 void remove(PID home_pid, PID type_pid)
          This operation is used to delete a storage type
 void setBaseInfo(DatabaseConnector connector, short access, Parameter[] parameters)
          Set the base information require by a catalog
 boolean stored(PID home_pid, PID type_pid)
          This operation is used to check if a storage type is already stored
 void write_entry_into_database(DatabaseEntry entry)
          This operation is used to flush an entry into the database
 void write(PID home_pid, PID type_pid, org.omg.CORBA.portable.OutputStream[] output)
          This operation is used to create a new entry into the datastore
 
Methods inherited from class org.openorb.pss.connector.database.DatabaseCatalog
access_mode, clean, connector, find_all, find_by_pid, find_ref_by_pid, find_storage_home, iterator, parameters, setCatalogInfo
 
Methods inherited from class org.omg.CORBA.LocalObject
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_interface, _get_policy, _hash, _invoke, _is_a, _is_equivalent, _is_local, _non_existent, _orb, _release, _releaseReply, _request, _request, _servant_postinvoke, _servant_preinvoke, _set_policy_override, validate_connection
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.omg.CosPersistentState.CatalogBaseOperations
access_mode, find_by_pid, find_storage_home
 
Methods inherited from interface org.omg.CORBA.Object
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _is_a, _is_equivalent, _non_existent, _release, _request, _set_policy_override
 
Methods inherited from interface org.openorb.pss.connector.database.DatabaseCatalogBase
connector, parameters
 

Constructor Detail

DatabaseSession

public DatabaseSession()
Constructor without any parameter


DatabaseSession

public DatabaseSession(org.omg.PortableInterceptor.ORBInitInfo info)
Constructor

Method Detail

setBaseInfo

public void setBaseInfo(DatabaseConnector connector,
                        short access,
                        Parameter[] parameters)
Set the base information require by a catalog

Specified by:
setBaseInfo in interface DatabaseCatalogBase
Parameters:
connector - the database connector
access - the access mode
parameters - parameters
Throws:
java.lang.NullPointerException - if a supplier parameter is null

createHomePID

public PID createHomePID(java.lang.String storage_home_name)
Generate a Home PID


createPID

public PID createPID(PID home_pid,
                     long index)
Generate a storage type PID


flush

public void flush()
Description copied from interface: CatalogBaseOperations
The flush operation instructs the PSS implementation to write to disk any cached modifications of storage object incarnations managed by this catalog. Often, when an application creates a new storage object or updates a storage object, the modification is not written directly to disk -- the PSS implementation can cache some dirty data.

Specified by:
flush in interface CatalogBaseOperations
Specified by:
flush in class DatabaseCatalog

refresh

public void refresh()
Description copied from interface: CatalogBaseOperations
A PSS implementation can cache data read from the datastore(s). The refresh operation instructs the PSS implementation to refresh any cached storage object incarnations accessed by this catalog. This operation can invalidate any direct reference to a storage object incarnation?s data member.

Specified by:
refresh in interface CatalogBaseOperations
Specified by:
refresh in class DatabaseCatalog

free_all

public void free_all()
Description copied from interface: CatalogBaseOperations
The operation free_all instructs the catalog implementation to set the reference count of all its PSDL storage object instances to 0. In programming languages without garbage collection, such as C++, PSDL storage object instances are reference-counted by the application. Further, when a PSDL storage object A holds a reference to another PSDL storage object B, A?s instance owns a reference count of B?s instance. When PSDL storage objects form a cyclic graph, the corresponding instances own reference count of each other; even if the programmer correctly releases all her reference counts, the cyclic graph will never be completely released. The free_all operation deals with this problem.

Specified by:
free_all in interface CatalogBaseOperations
Specified by:
free_all in class DatabaseCatalog

close

public void close()
Description copied from interface: CatalogBaseOperations
The operation close terminates the catalog. When closed, the catalog is also flushed. If the catalog is associated with one or more transactions when close is called, these transactions are marked roll-back only.

Specified by:
close in interface CatalogBaseOperations
Specified by:
close in class DatabaseCatalog

find_home_base

public StorageHomeBase find_home_base(PID pid)
Returns an storage object home from its PID ( high part is only used )

Specified by:
find_home_base in class DatabaseCatalog

getParameter

public java.lang.String getParameter(java.lang.String parameter_name)
Return a parameter


destroy

public void destroy(StorageHomeBase home)
Specified by:
destroy in interface ExtendedCatalog

stored

public boolean stored(PID home_pid,
                      PID type_pid)
This operation is used to check if a storage type is already stored

Specified by:
stored in interface DatabaseCatalogBase

read

public org.omg.CORBA.portable.InputStream[] read(PID home_pid,
                                                 PID type_pid,
                                                 int nb_members)
                                          throws NotFoundException
This operation is used to get a input access for a storagetype from the datastore

Specified by:
read in interface DatabaseCatalogBase
Throws:
NotFoundException

write

public void write(PID home_pid,
                  PID type_pid,
                  org.omg.CORBA.portable.OutputStream[] output)
This operation is used to create a new entry into the datastore

Specified by:
write in interface DatabaseCatalogBase

write_entry_into_database

public void write_entry_into_database(DatabaseEntry entry)
This operation is used to flush an entry into the database


remove

public void remove(PID home_pid,
                   PID type_pid)
This operation is used to delete a storage type

Specified by:
remove in interface DatabaseCatalogBase

find

public PID find(PID home_pid,
                KeyBag[] keys)
         throws NotFoundException
This operation is used to find a storage type

Specified by:
find in interface DatabaseCatalogBase
Throws:
NotFoundException

find_pids

public PID[] find_pids(PID home_pid)
Returns all PIDs for this home

Specified by:
find_pids in class DatabaseCatalog

incarnate

public StorageObject incarnate(StorageHomeBase home_base,
                               byte[] storage_type_pid,
                               java.lang.String storage_type_id)
                        throws NotFoundException
This operation is used to incarnate a storage type

Specified by:
incarnate in interface DatabaseCatalogBase
Throws:
NotFoundException

create_object

public StorageObject create_object(StorageHomeBase home_base,
                                   java.lang.String storage_type_id)
This operation is used to create a storage type

Specified by:
create_object in interface DatabaseCatalogBase

create_empty_object

public StorageObject create_empty_object(StorageHomeBase home_base,
                                         java.lang.String storage_type_id)
This operation is used to create a storage type

Specified by:
create_empty_object in interface DatabaseCatalogBase

create_embedded_object

public StorageObject create_embedded_object(StorageHomeBase home_base,
                                            java.lang.String storage_type_id)
This operation is used to create an embedded storage type

Specified by:
create_embedded_object in interface DatabaseCatalogBase