git://git.nikiroo.be
/
nikiroo-utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'subtree'
[nikiroo-utils.git]
/
src
/
be
/
nikiroo
/
fanfix
/
library
/
RemoteLibrary.java
diff --git
a/src/be/nikiroo/fanfix/library/RemoteLibrary.java
b/src/be/nikiroo/fanfix/library/RemoteLibrary.java
index 077a857cf9a748ddbd242b1af625b853ecf6d75e..65be7b1759e4893b2412f2c74cc00c0b3a95a2a7 100644
(file)
--- a/
src/be/nikiroo/fanfix/library/RemoteLibrary.java
+++ b/
src/be/nikiroo/fanfix/library/RemoteLibrary.java
@@
-41,12
+41,7
@@
public class RemoteLibrary extends BasicLibrary {
Object rep = super.send(data);
if (rep instanceof RemoteLibraryException) {
RemoteLibraryException remoteEx = (RemoteLibraryException) rep;
Object rep = super.send(data);
if (rep instanceof RemoteLibraryException) {
RemoteLibraryException remoteEx = (RemoteLibraryException) rep;
- IOException cause = remoteEx.getCause();
- if (cause == null) {
- cause = new IOException("IOException");
- }
-
- throw cause;
+ throw remoteEx.unwrapException();
}
return rep;
}
return rep;
@@
-61,8
+56,6
@@
public class RemoteLibrary extends BasicLibrary {
// informative only (server will make the actual checks)
private boolean rw;
// informative only (server will make the actual checks)
private boolean rw;
- // TODO: error handling is not up to par!
-
/**
* Create a {@link RemoteLibrary} linked to the given server.
* <p>
/**
* Create a {@link RemoteLibrary} linked to the given server.
* <p>
@@
-85,7
+78,7
@@
public class RemoteLibrary extends BasicLibrary {
* <li><b>wl</b>: flag to allow access to all the stories (bypassing the
* whitelist if it exists)</li>
* </ul>
* <li><b>wl</b>: flag to allow access to all the stories (bypassing the
* whitelist if it exists)</li>
* </ul>
- *
+ *
<p>
* Some examples:
* <ul>
* <li><b>my_key</b>: normal connection, will take the default server
* Some examples:
* <ul>
* <li><b>my_key</b>: normal connection, will take the default server
@@
-126,14
+119,14
@@
public class RemoteLibrary extends BasicLibrary {
@Override
public String getLibraryName() {
@Override
public String getLibraryName() {
- return host + ":" + port;
+ return
(rw ? "[READ-ONLY] " : "") +
host + ":" + port;
}
@Override
public Status getStatus() {
}
@Override
public Status getStatus() {
- Instance.getTraceHandler().trace("Getting remote lib status...");
+ Instance.get
Instance().get
TraceHandler().trace("Getting remote lib status...");
Status status = getStatusDo();
Status status = getStatusDo();
- Instance.getTraceHandler().trace("Remote lib status: " + status);
+ Instance.get
Instance().get
TraceHandler().trace("Remote lib status: " + status);
return status;
}
return status;
}
@@
-150,10
+143,10
@@
public class RemoteLibrary extends BasicLibrary {
if ("r/w".equals(rep)) {
rw = true;
if ("r/w".equals(rep)) {
rw = true;
- result[0] = Status.READ
Y
;
+ result[0] = Status.READ
_WRITE
;
} else if ("r/o".equals(rep)) {
rw = false;
} else if ("r/o".equals(rep)) {
rw = false;
- result[0] = Status.READY;
+ result[0] = Status.READ
_ONL
Y;
} else {
result[0] = Status.UNAUTHORIZED;
}
} else {
result[0] = Status.UNAUTHORIZED;
}
@@
-180,7
+173,7
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public Image getCover(final String luid) {
+ public Image getCover(final String luid)
throws IOException
{
final Image[] result = new Image[1];
connectRemoteAction(new RemoteAction() {
final Image[] result = new Image[1];
connectRemoteAction(new RemoteAction() {
@@
-197,17
+190,18
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public Image getCustomSourceCover(final String source) {
+ public Image getCustomSourceCover(final String source)
throws IOException
{
return getCustomCover(source, "SOURCE");
}
@Override
return getCustomCover(source, "SOURCE");
}
@Override
- public Image getCustomAuthorCover(final String author) {
+ public Image getCustomAuthorCover(final String author)
throws IOException
{
return getCustomCover(author, "AUTHOR");
}
// type: "SOURCE" or "AUTHOR"
return getCustomCover(author, "AUTHOR");
}
// type: "SOURCE" or "AUTHOR"
- private Image getCustomCover(final String source, final String type) {
+ private Image getCustomCover(final String source, final String type)
+ throws IOException {
final Image[] result = new Image[1];
connectRemoteAction(new RemoteAction() {
final Image[] result = new Image[1];
connectRemoteAction(new RemoteAction() {
@@
-224,7
+218,8
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public synchronized Story getStory(final String luid, Progress pg) {
+ public synchronized Story getStory(final String luid, Progress pg)
+ throws IOException {
final Progress pgF = pg;
final Story[] result = new Story[1];
final Progress pgF = pg;
final Story[] result = new Story[1];
@@
-331,18
+326,20
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- public void setSourceCover(final String source, final String luid) {
+ public void setSourceCover(final String source, final String luid)
+ throws IOException {
setCover(source, luid, "SOURCE");
}
@Override
setCover(source, luid, "SOURCE");
}
@Override
- public void setAuthorCover(final String author, final String luid) {
+ public void setAuthorCover(final String author, final String luid)
+ throws IOException {
setCover(author, luid, "AUTHOR");
}
// type = "SOURCE" | "AUTHOR"
private void setCover(final String value, final String luid,
setCover(author, luid, "AUTHOR");
}
// type = "SOURCE" | "AUTHOR"
private void setCover(final String value, final String luid,
- final String type) {
+ final String type)
throws IOException
{
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
@@
-355,8
+352,9
@@
public class RemoteLibrary extends BasicLibrary {
@Override
// Could work (more slowly) without it
@Override
// Could work (more slowly) without it
- public
Story
imprt(final URL url, Progress pg) throws IOException {
+ public
MetaData
imprt(final URL url, Progress pg) throws IOException {
// Import the file locally if it is actually a file
// Import the file locally if it is actually a file
+
if (url == null || url.getProtocol().equalsIgnoreCase("file")) {
return super.imprt(url, pg);
}
if (url == null || url.getProtocol().equalsIgnoreCase("file")) {
return super.imprt(url, pg);
}
@@
-367,13
+365,7
@@
public class RemoteLibrary extends BasicLibrary {
pg = new Progress();
}
pg = new Progress();
}
- pg.setMinMax(0, 2);
- Progress pgImprt = new Progress();
- Progress pgGet = new Progress();
- pg.addProgress(pgImprt, 1);
- pg.addProgress(pgGet, 1);
-
- final Progress pgF = pgImprt;
+ final Progress pgF = pg;
final String[] luid = new String[1];
connectRemoteAction(new RemoteAction() {
final String[] luid = new String[1];
connectRemoteAction(new RemoteAction() {
@@
-402,11
+394,8
@@
public class RemoteLibrary extends BasicLibrary {
throw new IOException("Remote failure");
}
throw new IOException("Remote failure");
}
- Story story = getStory(luid[0], pgGet);
- pgGet.done();
-
pg.done();
pg.done();
- return
story
;
+ return
getInfo(luid[0])
;
}
@Override
}
@Override
@@
-444,19
+433,23
@@
public class RemoteLibrary extends BasicLibrary {
/**
* Stop the server.
/**
* Stop the server.
+ *
+ * @throws IOException
+ * in case of I/O error (including bad key)
*/
*/
- public void exit() {
+ public void exit()
throws IOException
{
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
action.send(new Object[] { subkey, "EXIT" });
connectRemoteAction(new RemoteAction() {
@Override
public void action(ConnectActionClientObject action)
throws Exception {
action.send(new Object[] { subkey, "EXIT" });
+ Thread.sleep(100);
}
});
}
@Override
}
});
}
@Override
- public synchronized MetaData getInfo(String luid) {
+ public synchronized MetaData getInfo(String luid)
throws IOException
{
List<MetaData> metas = getMetasList(luid, null);
if (!metas.isEmpty()) {
return metas.get(0);
List<MetaData> metas = getMetasList(luid, null);
if (!metas.isEmpty()) {
return metas.get(0);
@@
-466,7
+459,7
@@
public class RemoteLibrary extends BasicLibrary {
}
@Override
}
@Override
- protected
List<MetaData> getMetas(Progress pg)
{
+ protected
synchronized List<MetaData> getMetas(Progress pg) throws IOException
{
return getMetasList("*", pg);
}
return getMetasList("*", pg);
}
@@
-510,10
+503,13
@@
public class RemoteLibrary extends BasicLibrary {
* @param pg
* the optional progress
*
* @param pg
* the optional progress
*
- *
* @return the metas
* @return the metas
+ *
+ * @throws IOException
+ * in case of I/O error or bad key (SSLException)
*/
*/
- private List<MetaData> getMetasList(final String luid, Progress pg) {
+ private List<MetaData> getMetasList(final String luid, Progress pg)
+ throws IOException {
final Progress pgF = pg;
final List<MetaData> metas = new ArrayList<MetaData>();
final Progress pgF = pg;
final List<MetaData> metas = new ArrayList<MetaData>();
@@
-550,7
+546,9
@@
public class RemoteLibrary extends BasicLibrary {
return metas;
}
return metas;
}
- private void connectRemoteAction(final RemoteAction runAction) {
+ private void connectRemoteAction(final RemoteAction runAction)
+ throws IOException {
+ final IOException[] err = new IOException[1];
try {
final RemoteConnectAction[] array = new RemoteConnectAction[1];
RemoteConnectAction ra = new RemoteConnectAction() {
try {
final RemoteConnectAction[] array = new RemoteConnectAction[1];
RemoteConnectAction ra = new RemoteConnectAction() {
@@
-561,18
+559,22
@@
public class RemoteLibrary extends BasicLibrary {
@Override
protected void onError(Exception e) {
@Override
protected void onError(Exception e) {
- if (e instanceof SSLException) {
- Instance.getTraceHandler().error(
- "Connection refused (bad key)");
- } else {
- Instance.getTraceHandler().error(e);
+ if (!(e instanceof IOException)) {
+ Instance.getInstance().getTraceHandler().error(e);
+ return;
}
}
+
+ err[0] = (IOException) e;
}
};
array[0] = ra;
ra.connect();
} catch (Exception e) {
}
};
array[0] = ra;
ra.connect();
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ err[0] = (IOException) e;
+ }
+
+ if (err[0] != null) {
+ throw err[0];
}
}
}
}
}
}