GithubHelp home page GithubHelp logo

dark-exchange's People

Contributors

macourtney avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dark-exchange's Issues

Merge the search tab into the home tab.

Since searching for offers is a very common activity which should be emphasised, the search tab should be merged into the home tab. It may make sense to move the open trades table down, and put the search table and buttons as the top table.

Choose default currencies

Allow the user to choose which default currencies he or she wants to use.

When Dark Exchange starts the first time, the user is prompted for which currencies he or she wants to use.

When searching or adding an offer, they can select from the default list or choose "other" and be presented with the full list.

At any point, they can open the options window to add or remove default currencies.

Automatic updates of Dark Exchange

It would be nice to have Dark Exchange automatically update itself. However, posting the latest version of Dark Exchange on a specific website defeats the decentralization, but using something bittorrent like would open Dark Exchange up to hackers who might be able to hijack the "official" release.

More thought needs to be put into this issue.

Implement a Trust Score

Implement a Trust Score.

My notes so far:

I've already thought of a scoring based system, but I haven't had time to implement it yet. My idea is to include a scoring system where you would rate each person/identity on a percent trust/distrust scale. Everyone would start out at zero. As you complete trades with someone, you can increase your trust in them by raising the scale to a positive percentage. If the trade goes bad, you can decrease the scale into the negative territory.

Then, all of the trust ratings from the people you already trust would be combined with how much they trust someone else to determine your expected trust in an unknown party. I have an idea how to do that, but I don't want to go into detail here.

More thought for this issue is needed.

Cannot open <#<Timestamp>> as an InputStreamException when viewing an open order

I am able to create an offer and a friend found and started a trade. When I go to view a trade, in status "Needs to be confirmed", an exception is thrown:

2011-09-07 14:01:49,263 ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.lang.RuntimeException: java.lang.IllegalArgumentException: Cannot open <#> as an InputStream.
    at clojure.lang.AFn.run(AFn.java:28)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Add an in person transfer option.

Add an in person transfer option.

Currently, the only transfer options available are either online, or through the mail. It would be nice if you could make in person transfers based on region or some other way of determining a general location.

Splash screen.

It would be nice to pop up a splash screen as soon as you start Dark Exchange. At the moment, no windows appear and nothing happens until the database finishes updating. Then, the login screen appears.

Opening a splash screen immediately would help mask the database update, and give the user feedback on what Dark Exchange is doing.

It might be nice to include the login stuff with the splash screen, but disable it until the database is updated.

All buttons block the Event Thread.

All buttons block the Event Thread causing Dark Exchange to lock up for a few seconds after every action. Update the buttons to do the action in the background.

Move the Open Offers table to another tab.

On the home tab, both the open trade table and open offer table are displayed. The open offer table doesn't seem to fit as a main table.

It would be nice to move the open offer table to it's own tab.

Display a warning message when I2P cannot be found.

Display a warning message when I2P cannot be found.

Currently there is no way to tell if you are not connected to the I2P network. It would be nice to display a warning message if the I2P network cannot be found.

Running multiple searches at the same time.

Running multiple searches at the same time.

Currently, you can only run one search at a time. It would be nice to be able to run multiple searches at the same time and see each result in a new tab or window.

Remove unnecessary table columns.

Some table columns (like id) are on tables because they are needed to look up something later. With the new version of Seesaw, they are not needed anymore. It would be nice to remove them to unclutter these tables.

Search in progress feedback.

When you start a search, there is no feedback that the search is on going. It would be nice if they user could be notified that a search is ongoing.

The identity table should display the random short section of the public key.

When viewing an offer from a search, the user's public key is shortened to a section which is seemingly the most random to distinguish the owner from others.

However, the identity table tries to display the entire public key. Since the first x characters in the public key are the same for all public keys, it's impossible to distinguish them.

startup instructions

Im not familiar with clojure so I took my best shot and starting the app but got this error. Can you help and/or add README notes for starting the app?

$ git clone https://github.com/macourtney/Dark-Exchange
$ cd Dark-Exchange/
$ clojure project.clj
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: defproject in this context (project.clj:1)
at clojure.lang.Compiler.analyze(Compiler.java:4420)
at clojure.lang.Compiler.analyze(Compiler.java:4366)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2828)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:4594)
at clojure.lang.Compiler.analyze(Compiler.java:4405)
at clojure.lang.Compiler.analyze(Compiler.java:4366)
at clojure.lang.Compiler.eval(Compiler.java:4646)
at clojure.lang.Compiler.load(Compiler.java:4972)
at clojure.lang.Compiler.loadFile(Compiler.java:4939)
at clojure.main$load_script__7405.invoke(main.clj:213)
at clojure.main$script_opt__7442.invoke(main.clj:265)
at clojure.main$main__7466.doInvoke(main.clj:346)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at clojure.lang.Var.invoke(Var.java:359)
at clojure.lang.AFn.applyToHelper(AFn.java:173)
at clojure.lang.Var.applyTo(Var.java:476)
at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: Unable to resolve symbol: defproject in this context
at clojure.lang.Compiler.resolveIn(Compiler.java:4797)
at clojure.lang.Compiler.resolve(Compiler.java:4743)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:4720)
at clojure.lang.Compiler.analyze(Compiler.java:4387)
... 16 more

Search Cancel

Related to Issue #7

At the moment, when you start a search, there is not feedback and you can just click the search button again to start a new search. It would be nice if you would be blocked from starting another search until you cancel, or let complete the previous search.

Enter logs in user in the login window.

On the login window, the user must click login or tab to the login button and press the space bar. It would be nice if when the user presses enter in the password field or when the login button is selected, the login action is performed.

Payment Address

Right now, the only way to tell your trade partner how to send you money is through trade messages. It would be nice if you could set up your payment address in advance. The payment address would be different depending on if you're accepting bitcoin, cash in the mail, or Dwolla.

The payment address for bitcoin would be your bitcoin receiving address.

The payment address for cash in the mail would be your mailing address.

The payment address for Dwolla would be your Dwolla id.

help menu

Put help menu, with help, about and links to the wiki.
=)

Exception when creating a new user

I started the app with 'lein run' and when I created a new user, the app throws this exception

2011-09-06 19:25:49,038 ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.util.concurrent.RejectedExecutionException
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
    at clojure.core$future_call.invoke(core.clj:5396)
    at darkexchange.controller.login.create_user$create_user.invoke(create_user.clj:55)
    at darkexchange.controller.login.create_user$create_user_action.invoke(create_user.clj:60)
    at seesaw.event$fire.invoke(event.clj:206)
    at seesaw.event$eval1216$fn$reify__1218.actionPerformed(event.clj:233)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    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:6288)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6053)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4651)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    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:2478)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    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:616)
    at java.awt.EventQueue$2.run(EventQueue.java:614)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Delay opening the main window until after the Destination is loaded.

At the moment, after you log into Dark Exchange, the main window pops up, but you can't do anything since the destination address has not been loaded yet. It's not obvious this is the problem and it can look like Dark Exchange is not working. It would be nice to delay the main window until the destination address is loaded. However, it would be necessary to give the user feedback on what's going on.

Bouncy Castle exception

java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: SHA1WithRSAEncryption, provider: BC, class: org.bouncycastle.jce.provider.JDKDigestSignature$SHA1WithRSAEncryption)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.Signature.getInstance(Signature.java:324)
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 clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:90)
at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:202)
at darkexchange.model.security$sign.invoke(security.clj:139)
at darkexchange.model.user$sign.invoke(user.clj:141)
at darkexchange.model.interceptors.signature_interceptor$sign.invoke(signature_interceptor.clj:17)
at darkexchange.model.interceptors.signature_interceptor$client_interceptor.invoke(signature_interceptor.clj:47)
at darkexchange.model.interceptors.interceptor_util$compose_interceptors$fn__4707$fn__4708.invoke(interceptor_util.clj:4)
at darkexchange.model.interceptors.identity_interceptor$client_interceptor.invoke(identity_interceptor.clj:17)
at darkexchange.model.interceptors.interceptor_util$compose_interceptors$fn__4707.invoke(interceptor_util.clj:4)
at darkexchange.model.interceptors.interceptor_util$run_interceptors.invoke(interceptor_util.clj:9)
at darkexchange.model.interceptors.client_interceptors$run_interceptors.invoke(client_interceptors.clj:10)
at darkexchange.model.client$send_message.invoke(client.clj:26)
at darkexchange.model.peer$get_peers_from.invoke(peer.clj:98)
at darkexchange.model.peer$all_network_destinations.invoke(peer.clj:152)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:159)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:164)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:155)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.SecurityException: class "org.bouncycastle.crypto.Digest"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
... 26 more
ERROR [darkexchange.model.interceptors.signature-interceptor]: an error occured while signing or verifying a signature on the client side.
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: SHA1WithRSAEncryption, provider: BC, class: org.bouncycastle.jce.provider.JDKDigestSignature$SHA1WithRSAEncryption)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.Signature.getInstance(Signature.java:324)
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 clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:90)
at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:202)
at darkexchange.model.security$sign.invoke(security.clj:139)
at darkexchange.model.user$sign.invoke(user.clj:141)
at darkexchange.model.interceptors.signature_interceptor$sign.invoke(signature_interceptor.clj:17)
at darkexchange.model.interceptors.signature_interceptor$client_interceptor.invoke(signature_interceptor.clj:47)
at darkexchange.model.interceptors.interceptor_util$compose_interceptors$fn__4707$fn__4708.invoke(interceptor_util.clj:4)
at darkexchange.model.interceptors.identity_interceptor$client_interceptor.invoke(identity_interceptor.clj:17)
at darkexchange.model.interceptors.interceptor_util$compose_interceptors$fn__4707.invoke(interceptor_util.clj:4)
at darkexchange.model.interceptors.interceptor_util$run_interceptors.invoke(interceptor_util.clj:9)
at darkexchange.model.interceptors.client_interceptors$run_interceptors.invoke(client_interceptors.clj:10)
at darkexchange.model.client$send_message.invoke(client.clj:26)
at darkexchange.model.calls.notify$call.invoke(notify.clj:10)
at darkexchange.model.peer$notify_destination.invoke(peer.clj:92)
at darkexchange.model.peer$notify_all_peers.invoke(peer.clj:134)
at darkexchange.model.peer$add_destinations.invoke(peer.clj:147)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:161)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:164)
at darkexchange.model.peer$download_peers_background.invoke(peer.clj:155)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.SecurityException: class "org.bouncycastle.crypto.Digest"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
... 28 more

Double click deletes offer in the open offers table.

Double click deletes offer in the open offers table. There is no warning, the offer just disappears. The offer should not be deleted. If we had a view offer window, a view button should be created for it, and displayed on double click.

Remote API

From wegotpickles:

Some kind of remote API (i was thinking about android apps, but i2p's memory requirements are to great, so a front end is all that seems doable)

Add terms to offer.

Right now, the only way to let your trade partner know of your terms is to send a trade message to him. However, at that point, it may be too late, and the trade is already started. It would be nice to be able to add the trade terms to the initial offer and let people view them before accepting the trade.

Strange exception after update to Beta2

From SlipperySlope:

I just downloaded and launched beta 2. I needed to launch it twice before it found 7 peers.

However, before I tried searching, I received the following exceptions ...

ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.lang.RuntimeException: java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 4"" [90028-157]"; "lob: null table: -1 id: 4" [90031-157]
at clojure.lang.AFn.run(AFn.java:28)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 4"" [90028-157]"; "lob: null table: -1 id: 4" [90031-157]
at clojure.lang.LazySeq.sval(LazySeq.java:47)
at clojure.lang.LazySeq.seq(LazySeq.java:56)
at clojure.lang.RT.seq(RT.java:450)
at clojure.core$seq.invoke(core.clj:122)
at clojure.core$dorun.invoke(core.clj:2450)
at clojure.core$doall.invoke(core.clj:2465)
at clj_record.core$find_by_sql$func__4289__auto____4305$fn__4306.invoke(core.clj:73)
at clojure.contrib.sql.internal$with_query_results_STAR_.invoke(internal.clj:194)
at clj_record.core$find_by_sql$func__4289__auto____4305.invoke(core.clj:72)
at clj_record.core$find_by_sql$fn__4309.invoke(core.clj:71)
at clojure.contrib.sql.internal$with_connection_STAR_.invoke(internal.clj:105)
at clj_record.core$find_by_sql.invoke(core.clj:71)
at clj_record.core$find_records.invoke(core.clj:85)
at clj_record.core$find_record.invoke(core.clj:91)
at darkexchange.model.peer$find_record.invoke(peer.clj:41)
at darkexchange.model.peer$find_peer.invoke(peer.clj:67)
at darkexchange.model.identity$update_identity_peer.invoke(identity.clj:53)
at darkexchange.model.identity$update_identity.invoke(identity.clj:59)
at darkexchange.model.identity$add_or_update_identity.invoke(identity.clj:64)
at darkexchange.model.interceptors.identity_interceptor$identity_updater.invoke(identity_interceptor.clj:9)
at darkexchange.model.interceptors.identity_interceptor$client_interceptor$fn__6773.invoke(identity_interceptor.clj:18)
at clojure.lang.AFn.run(AFn.java:24)
... 1 more
Caused by: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 4"" [90028-157]"; "lob: null table: -1 id: 4" [90031-157]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:156)
at org.h2.message.DbException.convertIOException(DbException.java:313)
at org.h2.value.ValueLobDb.getInputStream(ValueLobDb.java:283)
at org.h2.value.ValueLobDb.getReader(ValueLobDb.java:267)
at org.h2.jdbc.JdbcClob.getCharacterStream(JdbcClob.java:112)
at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:90)
at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:265)
at darkexchange.model.base$clob_string.invoke(base.clj:9)
at darkexchange.model.base$load_clob.invoke(base.clj:13)
at darkexchange.model.base$clean_clob_key.invoke(base.clj:22)
at darkexchange.model.peer$peer_clean_up.invoke(peer.clj:39)
at clj_record.callbacks$run_callbacks$fn__4255.invoke(callbacks.clj:17)
at clojure.core$r.invoke(core.clj:799)
at clj_record.callbacks$run_callbacks.doInvoke(callbacks.clj:17)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at clj_record.callbacks$after_load$fn__4262.invoke(callbacks.clj:32)
at clojure.core$map$fn__3699.invoke(core.clj:2096)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
... 22 more
Caused by: java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: "Missing lob: 4" [90028-157]
at org.h2.message.DbException.convertToIOException(DbException.java:346)
at org.h2.store.LobStorage.getInputStream(LobStorage.java:449)
at org.h2.value.ValueLobDb.getInputStream(ValueLobDb.java:281)
... 40 more
Caused by: org.h2.jdbc.JdbcSQLException: IO Exception: "Missing lob: 4" [90028-157]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:167)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.store.LobStorage.getInputStream(LobStorage.java:444)
... 41 more
ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.lang.RuntimeException: java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 5"" [90028-157]"; "lob: null table: -1 id: 5" [90031-157]
at clojure.lang.AFn.run(AFn.java:28)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 5"" [90028-157]"; "lob: null table: -1 id: 5" [90031-157]
at clojure.lang.LazySeq.sval(LazySeq.java:47)
at clojure.lang.LazySeq.seq(LazySeq.java:56)
at clojure.lang.RT.seq(RT.java:450)
at clojure.core$seq.invoke(core.clj:122)
at clojure.core$dorun.invoke(core.clj:2450)
at clojure.core$doall.invoke(core.clj:2465)
at clj_record.core$find_by_sql$func__4289__auto____4305$fn__4306.invoke(core.clj:73)
at clojure.contrib.sql.internal$with_query_results_STAR_.invoke(internal.clj:194)
at clj_record.core$find_by_sql$func__4289__auto____4305.invoke(core.clj:72)
at clj_record.core$find_by_sql$fn__4309.invoke(core.clj:71)
at clojure.contrib.sql.internal$with_connection_STAR_.invoke(internal.clj:105)
at clj_record.core$find_by_sql.invoke(core.clj:71)
at clj_record.core$find_records.invoke(core.clj:85)
at clj_record.core$find_record.invoke(core.clj:91)
at darkexchange.model.peer$find_record.invoke(peer.clj:41)
at darkexchange.model.peer$find_peer.invoke(peer.clj:67)
at darkexchange.model.identity$add_identity.invoke(identity.clj:45)
at darkexchange.model.identity$add_or_update_identity.invoke(identity.clj:65)
at darkexchange.model.interceptors.identity_interceptor$identity_updater.invoke(identity_interceptor.clj:9)
at darkexchange.model.interceptors.identity_interceptor$client_interceptor$fn__6773.invoke(identity_interceptor.clj:18)
at clojure.lang.AFn.run(AFn.java:24)
... 1 more
Caused by: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob: 5"" [90028-157]"; "lob: null table: -1 id: 5" [90031-157]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:156)
at org.h2.message.DbException.convertIOException(DbException.java:313)
at org.h2.value.ValueLobDb.getInputStream(ValueLobDb.java:283)
at org.h2.value.ValueLobDb.getReader(ValueLobDb.java:267)
at org.h2.jdbc.JdbcClob.getCharacterStream(JdbcClob.java:112)
at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:90)
at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:265)
at darkexchange.model.base$clob_string.invoke(base.clj:9)
at darkexchange.model.base$load_clob.invoke(base.clj:13)
at darkexchange.model.base$clean_clob_key.invoke(base.clj:22)
at darkexchange.model.peer$peer_clean_up.invoke(peer.clj:39)
at clj_record.callbacks$run_callbacks$fn__4255.invoke(callbacks.clj:17)
at clojure.core$r.invoke(core.clj:799)
at clj_record.callbacks$run_callbacks.doInvoke(callbacks.clj:17)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at clj_record.callbacks$after_load$fn__4262.invoke(callbacks.clj:32)
at clojure.core$map$fn__3699.invoke(core.clj:2096)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
... 21 more
Caused by: java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: "Missing lob: 5" [90028-157]
at org.h2.message.DbException.convertToIOException(DbException.java:346)
at org.h2.store.LobStorage.getInputStream(LobStorage.java:449)
at org.h2.value.ValueLobDb.getInputStream(ValueLobDb.java:281)
... 39 more
Caused by: org.h2.jdbc.JdbcSQLException: IO Exception: "Missing lob: 5" [90028-157]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:167)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.store.LobStorage.getInputStream(LobStorage.java:444)
... 40 more

Viewing an identity.

It would be nice to add a view button to the identity tab, and display details about a specific identity.

Exception when logging in.

From JackJack:

Actually there are 2 different errors (when no dev flag), when I hit the Login button

If the password is correct:

ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.util.concurrent.RejectedExecutionException
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
at clojure.core$future_call.invoke(core.clj:5406)
at darkexchange.controller.login.login$login.invoke(login.clj:62)
at darkexchange.controller.login.login$login_action.invoke(login.clj:70)
at seesaw.event$fire.invoke(event.clj:206)
at seesaw.event$eval1022$fn$reify__1024.actionPerformed(event.clj:233)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicRootPaneUI.java:191)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1633)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2920)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6040)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4502)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

If not:

ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception:
java.util.concurrent.RejectedExecutionException
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
at clojure.core$future_call.invoke(core.clj:5406)
at darkexchange.controller.login.login$login.invoke(login.clj:62)
at darkexchange.controller.login.login$login_action.invoke(login.clj:70)
at seesaw.event$fire.invoke(event.clj:206)
at seesaw.event$eval1022$fn$reify__1024.actionPerformed(event.clj:233)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
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:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
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:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

And the error I posted above is also thrown when I try to create a new account.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.