* {@inheritDoc}
*/
public JcrPackage upload(InputStream in, boolean replace, boolean strict)
throws RepositoryException, IOException {
MemoryArchive archive = new MemoryArchive(true);
InputStreamPump pump = new InputStreamPump(in , archive);
// this will cause the input stream to be consumed and the memory archive being initialized.
Binary bin = session.getValueFactory().createBinary(pump);
if (pump.getError() != null) {
Exception error = pump.getError();
log.error("Error while reading from input stream.", error);
bin.dispose();
throw new IOException("Error while reading from input stream", error);
}
if (archive.getJcrRoot() == null) {
String msg = "Stream is not a content package. Missing 'jcr_root'.";
log.error(msg);
bin.dispose();
throw new IOException(msg);
}
final MetaInf inf = archive.getMetaInf();
PackagePropertiesImpl props = new PackagePropertiesImpl() {
@Override
protected Properties getPropertiesMap() {
return inf.getProperties();
}