Skip to Main Content

Analytics Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Cannot connect to HSQLDB for ODI demo

Daniel RedfernJun 17 2011 — edited Dec 9 2011
Hi all,

I have been trying for hours now to setup the demo environment.
I've installed ODI, placed the demo directory in the 'oracledi'. Hard-coded the JAVA_HOME and ODI_JAVA_HOME in the environment .sh file, run the './startdemo.sh' in the demo/bin directory... all seems to run OK (see below).

OracleDI: Starting Demo Environment ...

OracleDI: Starting Demo Source Data Server ...
+[Server@186db54]: [Thread[main,5,main]]: checkRunning(false) entered+
+[Server@186db54]: [Thread[main,5,main]]: checkRunning(false) exited+
+[Server@186db54]: Startup sequence initiated from main() method+
+[Server@186db54]: Loaded properties from [home/oracle/Oracle/Middleware/ODI_11g/oracledi/demo/bin/server.properties]+
+[Server@186db54]: Initiating startup sequence...+
+[Server@186db54]: Server socket opened successfully in 47 ms.+
+[Server@186db54]: Database [index=0, id=0, db=file:../hsql/demo_src, alias=] opened sucessfully in 779 ms.+
+[Server@186db54]: Startup sequence completed in 861 ms.+
+[Server@186db54]: 2011-06-17 01:47:35.059 HSQLDB server 1.7.3 is online+
+[Server@186db54]: To close normally, connect and execute SHUTDOWN SQL+
+[Server@186db54]: From command line, use [Ctrl]+[C] to abort abruptly+
OracleDI: Starting Demo Target Data Server ...
+[Server@1754ad2]: [Thread[main,5,main]]: checkRunning(false) entered+
+[Server@1754ad2]: [Thread[main,5,main]]: checkRunning(false) exited+
+[Server@1754ad2]: Startup sequence initiated from main() method+
+[Server@1754ad2]: Loaded properties from [home/oracle/Oracle/Middleware/ODI_11g/oracledi/demo/bin/server.properties]+
+[Server@1754ad2]: Initiating startup sequence...+
+[Server@1754ad2]: Server socket opened successfully in 6 ms.+
+[Server@1754ad2]: Database [index=0, id=0, db=file:../hsql/demo_trg, alias=] opened sucessfully in 243 ms.+
+[Server@1754ad2]: Startup sequence completed in 263 ms.+
+[Server@1754ad2]: 2011-06-17 01:47:38.403 HSQLDB server 1.7.3 is online+
+[Server@1754ad2]: To close normally, connect and execute SHUTDOWN SQL+
+[Server@1754ad2]: From command line, use [Ctrl]+[C] to abort abruptly+
OracleDI: Starting Starting Demo Repository Server (en) ...
+[Server@e86da0]: [Thread[main,5,main]]: checkRunning(false) entered+
+[Server@e86da0]: [Thread[main,5,main]]: checkRunning(false) exited+
+[Server@e86da0]: Startup sequence initiated from main() method+
+[Server@e86da0]: Loaded properties from [home/oracle/Oracle/Middleware/ODI_11g/oracledi/demo/bin/server.properties]+
+[Server@e86da0]: Initiating startup sequence...+
+[Server@e86da0]: Server socket opened successfully in 7 ms.+
+[Server@e86da0]: Database [index=0, id=0, db=file:../hsql/demo_repository_en, alias=] opened sucessfully in 2205 ms.+
+[Server@e86da0]: Startup sequence completed in 2225 ms.+
+[Server@e86da0]: 2011-06-17 01:47:45.367 HSQLDB server 1.7.3 is online+
+[Server@e86da0]: To close normally, connect and execute SHUTDOWN SQL+
+[Server@e86da0]: From command line, use [Ctrl]+[C] to abort abruptly+

OracleDI: Demo Environment Started. Run './stopdemo.sh all' to stop it.



I then use another session to execute the odi.sh (confirmed that the JAVA_HOME and ODI_JAVA_HOME is still set in that session). I got to 'connect to a new repository'
and put in the variables

■ Login name: Getting Started - ETL Project
■ User: SUPERVISOR
■ Password: SUNOPSIS
■ User: sa
■ Password: Leave this field empty.
■ Driver List: Select Hypersonic SQL Driver from the list.
■ Driver Name: org.hsqldb.jdbcDriver
■ URL: jdbc:hsqldb:hsql://localhost


though I get the following error pop up (see further below)


oracle.odi.core.config.MasterRepositoryResourceFailureException: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLTransientConnectionException: connection exception: connection failure: java.io.EOFException*
+ at oracle.odi.core.repository.Repository.getMasterRepository(Repository.java:79)+
+ at oracle.odi.core.OdiInstance.createMasterRepository(OdiInstance.java:491)+
+ at oracle.odi.core.OdiInstance.<init>(OdiInstance.java:544)+
+ at oracle.odi.core.OdiInstance.createInstance(OdiInstance.java:521)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.testConnection(SnpsDialogLoginDetail.java:1365)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.jButtonTest_ActionPerformed(SnpsDialogLoginDetail.java:1052)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.connEtoC6(SnpsDialogLoginDetail.java:274)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.access$4(SnpsDialogLoginDetail.java:272)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail$IvjEventHandler.actionPerformed(SnpsDialogLoginDetail.java:161)+
+ at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)+
+ at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2319)+
+ at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)+
+ at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)+
+ at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)+
+ at java.awt.Component.processMouseEvent(Component.java:6289)+
+ at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)+
+ at java.awt.Component.processEvent(Component.java:6054)+
+ at java.awt.Container.processEvent(Container.java:2042)+
+ at java.awt.Component.dispatchEventImpl(Component.java:4652)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2101)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)+
+ at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)+
+ at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2085)+
+ at java.awt.Window.dispatchEventImpl(Window.java:2479)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)+
+ at java.awt.EventQueue.access$000(EventQueue.java:85)+
+ at java.awt.EventQueue$1.run(EventQueue.java:604)+
+ at java.awt.EventQueue$1.run(EventQueue.java:601)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)+
+ at java.awt.EventQueue$2.run(EventQueue.java:618)+
+ at java.awt.EventQueue$2.run(EventQueue.java:615)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)+
+ at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)+
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)+
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:179)+
+ at java.awt.Dialog$1.run(Dialog.java:1051)+
+ at java.awt.Dialog$3.run(Dialog.java:1099)+
+ at java.awt.Dialog.show(Dialog.java:1096)+
+ at java.awt.Component.show(Component.java:1585)+
+ at java.awt.Component.setVisible(Component.java:1538)+
+ at java.awt.Window.setVisible(Window.java:843)+
+ at java.awt.Dialog.setVisible(Dialog.java:987)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.snpsInitializeDisplayAll(SnpsDialogLoginDetail.java:1278)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.snpsInitialize(SnpsDialogLoginDetail.java:1227)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.initialize(SnpsDialogLoginDetail.java:970)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.<init>(SnpsDialogLoginDetail.java:210)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLoginDetail.<init>(SnpsDialogLoginDetail.java:188)+
+ at oracle.odi.ui.LoginFactory.createLoginDetailDialog(LoginFactory.java:211)+
+ at oracle.odi.ui.LoginFactory.createNewLogin(LoginFactory.java:287)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLogin.jToolBarButtonNew_ActionPerformed(SnpsDialogLogin.java:853)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLogin.connEtoC1(SnpsDialogLogin.java:166)+
+ at com.sunopsis.graphical.dialog.SnpsDialogLogin$IvjEventHandler.actionPerformed(SnpsDialogLogin.java:120)+
+ at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)+
+ at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2319)+
+ at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)+
+ at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)+
+ at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)+
+ at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)+
+ at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)+
+ at java.awt.Component.processMouseEvent(Component.java:6289)+
+ at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)+
+ at java.awt.Component.processEvent(Component.java:6054)+
+ at java.awt.Container.processEvent(Container.java:2042)+
+ at java.awt.Component.dispatchEventImpl(Component.java:4652)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2101)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)+
+ at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)+
+ at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2085)+
+ at java.awt.Window.dispatchEventImpl(Window.java:2479)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)+
+ at java.awt.EventQueue.access$000(EventQueue.java:85)+
+ at java.awt.EventQueue$1.run(EventQueue.java:604)+
+ at java.awt.EventQueue$1.run(EventQueue.java:601)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)+
+ at java.awt.EventQueue$2.run(EventQueue.java:618)+
+ at java.awt.EventQueue$2.run(EventQueue.java:615)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)+
+ at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)+
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)+
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:179)+
+ at java.awt.Dialog$1.run(Dialog.java:1051)+
+ at java.awt.Dialog$3.run(Dialog.java:1099)+
+ at java.awt.Dialog.show(Dialog.java:1096)+
+ at java.awt.Component.show(Component.java:1585)+
+ at java.awt.Component.setVisible(Component.java:1538)+
+ at java.awt.Window.setVisible(Window.java:843)+
+ at java.awt.Dialog.setVisible(Dialog.java:987)+
+ at com.sunopsis.graphical.dialog.SnpsAbstractDialog.setVisible(SnpsAbstractDialog.java:301)+
+ at oracle.odi.ui.OdiConnectController.handleEvent(OdiConnectController.java:117)+
+ at oracle.ide.controller.IdeAction.performAction(IdeAction.java:529)+
+ at oracle.ide.controller.IdeAction.actionPerformedImpl(IdeAction.java:884)+
+ at oracle.ide.controller.IdeAction.actionPerformed(IdeAction.java:502)+
+ at oracle.odi.ui.docking.AbstractOdiDockableWindow$1.actionPerformed(AbstractOdiDockableWindow.java:204)+
+ at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)+
+ at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2319)+
+ at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)+
+ at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)+
+ at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)+
+ at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)+
+ at java.awt.Component.processMouseEvent(Component.java:6289)+
+ at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)+
+ at java.awt.Component.processEvent(Component.java:6054)+
+ at java.awt.Container.processEvent(Container.java:2042)+
+ at java.awt.Component.dispatchEventImpl(Component.java:4652)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2101)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)+
+ at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)+
+ at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)+
+ at java.awt.Container.dispatchEventImpl(Container.java:2085)+
+ at java.awt.Window.dispatchEventImpl(Window.java:2479)+
+ at java.awt.Component.dispatchEvent(Component.java:4483)+
+ at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)+
+ at java.awt.EventQueue.access$000(EventQueue.java:85)+
+ at java.awt.EventQueue$1.run(EventQueue.java:604)+
+ at java.awt.EventQueue$1.run(EventQueue.java:601)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)+
+ at java.awt.EventQueue$2.run(EventQueue.java:618)+
+ at java.awt.EventQueue$2.run(EventQueue.java:615)+
+ at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)+
+ at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)+
+ at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)+
+ at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)+
+ at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:175)+
+ at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170)+
+ at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:162)+
+ at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)+
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLTransientConnectionException: connection exception: connection failure: java.io.EOFException
+ at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)+
+ at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:524)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:588)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:613)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:645)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:111)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:121)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:136)+
+ at oracle.odi.core.repository.support.RepositoryUtils$RepositoryInfoSource.loadRepositoryInfo(RepositoryUtils.java:180)+
+ at oracle.odi.core.repository.support.RepositoryUtils.loadMasterRepositoryInfo(RepositoryUtils.java:374)+
+ at oracle.odi.core.repository.Repository.getMasterRepository(Repository.java:77)+
+ at oracle.odi.core.OdiInstance.createMasterRepository(OdiInstance.java:492)+
+ ... 136 more+
Caused by: java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLTransientConnectionException: connection exception: connection failure: java.io.EOFException
+ at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.doGetConnection(LoginTimeoutDatasourceAdapter.java:133)+
+ at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.getConnection(LoginTimeoutDatasourceAdapter.java:62)+
+ at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)+
+ at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)+
+ at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:524)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:588)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:613)+
+ at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:645)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:111)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:121)+
+ at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:136)+
+ at oracle.odi.core.repository.support.RepositoryUtils$RepositoryInfoSource.loadRepositoryInfo(RepositoryUtils.java:180)+
+ at oracle.odi.core.repository.support.RepositoryUtils.loadMasterRepositoryInfo(RepositoryUtils.java:375)+
+ ... 138 more+
t
+ at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:488)+
+ at oracle.ucp.util.UCPErrorHandler.throwSQLException(UCPErrorHandler.java:163)+
+ at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:911)+
+ at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:857)+
+ at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:851)+
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)+
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)+
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)+
+ at java.lang.reflect.Method.invoke(Method.java:597)+
+ at oracle.odi.core.datasource.support.RuntimeClassLoaderDataSourceCreator$DataSourceInvocationHandler.invoke(RuntimeClassLoaderDataSourceCreator.java:41)+
+ at $Proxy0.getConnection(Unknown Source)+
+ at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter$ConnectionProcessor.run(LoginTimeoutDatasourceAdapter.java:217)+
+ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)+
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)+
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)+
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)+
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)+
+ at java.lang.Thread.run(Thread.java:662)+
Caused by: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLTransientConnectionException: connection exception: connection failure: java.io.EOFException
+ at oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:368)+
+ at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:49)+
+ at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:80)+
+ at oracle.ucp.jdbc.DataSourceConnectionFactoryAdapter.createConnection(DataSourceConnectionFactoryAdapter.java:102)+
+ at oracle.ucp.common.UniversalConnectionPoolImpl$UniversalConnectionPoolInternal.createOnePooledConnectionInternal(UniversalConnectionPoolImpl.java:1563)+
+ at oracle.ucp.common.UniversalConnectionPoolImpl$UniversalConnectionPoolInternal.access$600(UniversalConnectionPoolImpl.java:1399)+
+ at oracle.ucp.common.UniversalConnectionPoolImpl.createOnePooledConnection(UniversalConnectionPoolImpl.java:477)+
+ at oracle.ucp.common.UniversalConnectionPoolImpl.borrowConnectionWithoutCountingRequests(UniversalConnectionPoolImpl.java:297)+
+ at oracle.ucp.common.UniversalConnectionPoolImpl.borrowConnection(UniversalConnectionPoolImpl.java:142)+
+ at oracle.ucp.jdbc.JDBCConnectionPool.borrowConnection(JDBCConnectionPool.java:119)+
+ at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:899)+
+ ... 15 more+


Any ideas as I'm almost burnt out!

Regards,
Daniel
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 6 2012
Added on Jun 17 2011
8 comments
2,117 views