@Override public void onEncode(BaseClientKey key, ClientPutState state, ClientContext context) { if (logMINOR) Logger.minor(this, "onEncode(" + key.getURI().toString(false, false) + ") for " + this); if (rootMetaPutHandler == this) { finalURI = key.getURI(); cb.onGeneratedURI(finalURI, this); return; } metadata.resolve(key.getURI()); }
@Override public void onEncode(BaseClientKey key, ClientPutState state, ClientContext context) { if (logMINOR) Logger.minor(this, "onEncode(" + key.getURI().toString(false, false) + ") for " + this); if (rootContainerPutHandler == this) { finalURI = key.getURI(); cb.onGeneratedURI(finalURI, this); } else { synchronized (BaseManifestPutter.this) { HashMap<String, Object> hm = putHandlersTransformMap.get(this); perContainerPutHandlersWaitingForMetadata.get(parentPutHandler).remove(this); Metadata m = new Metadata(DocumentType.SIMPLE_REDIRECT, null, null, key.getURI(), cm); hm.put(this.itemName, m); putHandlersTransformMap.remove(this); try { tryStartParentContainer(parentPutHandler, context); } catch (InsertException e) { fail(e, context); return; } } } }
@Override public void onEncode(BaseClientKey key, ClientPutState state, ClientContext context) { if (logMINOR) Logger.minor(this, "onEncode(" + key.getURI().toString(false, false) + ") for " + this); synchronized (BaseManifestPutter.this) { // transform the placeholders to redirects (redirects to 'uri/name') and // remove from waitfor lists ArrayList<PutHandler> phv = putHandlersArchiveTransformMap.get(this); if(phv == null) return; // Already encoded. for (PutHandler ph : phv) { HashMap<String, Object> hm = putHandlersTransformMap.get(ph); perContainerPutHandlersWaitingForMetadata.get(ph.parentPutHandler).remove(ph); if (ph.targetInArchive == null) throw new NullPointerException(); Metadata m = new Metadata(DocumentType.SIMPLE_REDIRECT, null, null, key.getURI().setMetaString(new String[] { ph.targetInArchive }), cm); hm.put(ph.itemName, m); putHandlersTransformMap.remove(ph); try { tryStartParentContainer(ph.parentPutHandler, context); } catch (InsertException e) { fail(new InsertException(InsertExceptionMode.INTERNAL_ERROR, e, null), context); return; } } putHandlersArchiveTransformMap.remove(this); } }
@Override public void onEncode(BaseClientKey key, ClientPutState state, ClientContext context) { if (logMINOR) Logger.minor(this, "onEncode(" + key + ") for " + this); //debugDecompose("ExternPutHandler.onEncode Begin"); if(metadata != null) { Logger.error(this, "Reassigning metadata: "+metadata, new Exception("debug")); //throw new IllegalStateException("Metadata set but we got a uri?!"); } // The file was too small to have its own metadata, we get this instead. // So we make the key into metadata. Metadata m = new Metadata(DocumentType.SIMPLE_REDIRECT, null, null, key.getURI(), cm); onMetadata(m, state, context); //debugDecompose("ExternPutHandler.onEncode End"); }
/** Called when we know the final URI of the insert. */ @Override public void onEncode(BaseClientKey key, ClientPutState state, ClientContext context) { FreenetURI u; synchronized(this) { u = key.getURI(); if(gotFinalMetadata) { Logger.error(this, "Generated URI *and* sent final metadata??? on "+this+" from "+state); } if(targetFilename != null) u = u.pushMetaString(targetFilename); if(this.uri != null) { if(!this.uri.equals(u)) { Logger.error(this, "onEncode() called twice with different URIs: "+this.uri+" -> "+u+" for "+this, new Exception("error")); } return; } this.uri = u; } client.onGeneratedURI(u, this); }