@Override protected boolean createEmptyObject(String key) { try { GSObject obj = new GSObject(key); obj.setDataInputStream(new ByteArrayInputStream(new byte[0])); obj.setContentLength(0); obj.setMd5Hash(DIR_HASH); obj.setContentType(Mimetypes.MIMETYPE_BINARY_OCTET_STREAM); mClient.putObject(mBucketName, obj); return true; } catch (ServiceException e) { LOG.error("Failed to create directory: {}", key, e); return false; } }
@Override protected ObjectStatus getObjectStatus(String key) { try { GSObject meta = mClient.getObjectDetails(mBucketName, key); if (meta == null) { return null; } return new ObjectStatus(key, meta.getMd5HashAsBase64(), meta.getContentLength(), meta.getLastModifiedDate().getTime()); } catch (ServiceException e) { return null; } }
/** * This method leverages the ability to open a stream from GCS from a given offset. When the * underlying stream has fewer bytes buffered than the skip request, the stream is closed, and * a new stream is opened starting at the requested offset. * * @param n number of bytes to skip * @return the number of bytes skipped */ @Override public long skip(long n) throws IOException { if (mInputStream.available() >= n) { return mInputStream.skip(n); } // The number of bytes to skip is possibly large, open a new stream from GCS. mInputStream.close(); mPos += n; try { mObject = mClient.getObject(mBucketName, mKey, null /* ignore ModifiedSince */, null /* ignore UnmodifiedSince */, null /* ignore MatchTags */, null /* ignore NoneMatchTags */, mPos /* byteRangeStart */, null /* ignore byteRangeEnd */); mInputStream = new BufferedInputStream(mObject.getDataInputStream()); } catch (ServiceException e) { throw new IOException(e); } return n; } }
@Override public void close() throws IOException { if (mClosed.getAndSet(true)) { return; } mLocalOutputStream.close(); try { GSObject obj = new GSObject(mKey); obj.setBucketName(mBucketName); obj.setDataInputFile(mFile); obj.setContentLength(mFile.length()); obj.setContentType(Mimetypes.MIMETYPE_BINARY_OCTET_STREAM); if (mHash != null) { obj.setMd5Hash(mHash.digest()); } else { LOG.warn("MD5 was not computed for: {}", mKey); } mClient.putObject(mBucketName, obj); if (!mFile.delete()) { LOG.error("Failed to delete temporary file @ {}", mFile.getPath()); } } catch (ServiceException e) { LOG.error("Failed to upload {}. Temporary file @ {}", mKey, mFile.getPath()); throw new IOException(e); } } }
GSObject object = new GSObject("object"); System.out.println("GSObject before upload: " + object); GSObject stringObject = new GSObject(TEST_OBJECT_NAME, stringData); GSObject fileObject = new GSObject(fileData); GSObject helloWorldObject = new GSObject("HelloWorld2.txt"); ByteArrayInputStream greetingIS = new ByteArrayInputStream( greeting.getBytes(Constants.DEFAULT_ENCODING)); helloWorldObject.setDataInputStream(greetingIS); helloWorldObject.setContentLength( greeting.getBytes(Constants.DEFAULT_ENCODING).length); helloWorldObject.setContentType("text/plain"); GSObject objectWithHash = new GSObject(TEST_OBJECT_NAME, stringData); System.out.println("Hash value: " + objectWithHash.getMd5HashAsHex()); GSObject hashObject = new GSObject("MyData"); hashObject.setDataInputStream(dataIS); hashObject.setMd5Hash(md5Hash); new InputStreamReader(objectComplete.getDataInputStream())); String data; while ((data = reader.readLine()) != null) { downloadedObject.getDataInputStream(), "UTF-8"); boolean valid = downloadedObject.verifyData(textData.getBytes("UTF-8")); System.out.println("Object verified? " + valid);
public void writeBlankChunk(String hash, byte[] chunk) throws IOException { String hashString = hash; GSObject gsObject = new GSObject(hashString); if (Main.compress) { chunk = CompressionUtils.compressZLIB(chunk); gsObject.addMetadata("compress", "true"); } else { gsObject.addMetadata("compress", "false"); } if (Main.chunkStoreEncryptionEnabled) { chunk = EncryptUtils.encrypt(chunk); gsObject.addMetadata("encrypt", "true"); } else { gsObject.addMetadata("encrypt", "false"); } ByteArrayInputStream s3IS = new ByteArrayInputStream(chunk); gsObject.setDataInputStream(s3IS); gsObject.setContentType("binary/octet-stream"); gsObject.setContentLength(s3IS.available()); try { gsService.putObject(this.getName(), gsObject); } catch (Exception e) { // TODO Auto-generated catch block SDFSLogger.getLog().fatal("unable to upload " + hashString, e); throw new IOException(e); } finally { s3IS.close(); } }
@Override public Object clone() { GSObject clone = new GSObject(getKey()); clone.dataInputStream = dataInputStream; clone.acl = acl; clone.isMetadataComplete = isMetadataComplete; clone.dataInputFile = dataInputFile; clone.setOwner(this.getOwner()); clone.addAllMetadata(getMetadataMap()); return clone; }
@Override protected boolean copyObject(String src, String dst) { LOG.debug("Copying {} to {}", src, dst); GSObject obj = new GSObject(dst); // Retry copy for a few times, in case some Jets3t or GCS internal errors happened during copy. int retries = 3; for (int i = 0; i < retries; i++) { try { mClient.copyObject(mBucketName, src, mBucketName, obj, false); return true; } catch (ServiceException e) { LOG.error("Failed to copy file {} to {}", src, dst, e); if (i != retries - 1) { LOG.error("Retrying copying file {} to {}", src, dst); } } } LOG.error("Failed to copy file {} to {}, after {} retries", src, dst, retries); return false; }
@Override public String toString() { return "GSObject [key=" + getKey() + ", lastModified=" + getLastModifiedDate() + ", dataInputStream=" + dataInputStream + ", Metadata=" + getMetadataMap() + "]"; }
@Override public byte[] getChunk(byte[] hash, long start, int len) throws IOException { String hashString = this.getHashName(hash); try { GSObject obj = gsService.getObject(this.name, hashString); byte[] data = new byte[(int) obj.getContentLength()]; DataInputStream in = new DataInputStream(obj.getDataInputStream()); in.readFully(data); obj.closeDataInputStream(); if (Main.chunkStoreEncryptionEnabled) data = EncryptUtils.decrypt(data); if (Main.compress) data = CompressionUtils.decompressZLIB(data); return data; } catch (Exception e) { // TODO Auto-generated catch block SDFSLogger.getLog() .error("unable to fetch block [" + hash + "]", e); throw new IOException("unable to read " + hashString); } }
private void gigyaLogin() { GSObject params = new GSObject(); params.put("screenSet", "Default-RegistrationLogin"); GSPluginFragment pluginFragment = GSPluginFragment.newInstance("accounts.screenSet", params); pluginFragment.setPluginListener(new GSPluginListener() { @Override public void onLoad(GSPluginFragment pluginFragment, GSObject event) { Log.d(TAG, "accounts.screenSet has finished loading"); } @Override public void onEvent(GSPluginFragment pluginFragment, GSObject event) { Log.d(TAG, "Received plugin event from accounts.screenSet - " + event.getString("eventName", "")); } @Override public void onError(GSPluginFragment pluginFragment, GSObject error) { Log.d(TAG, "Error in accounts.ScreenSet - " + error.getInt("errorCode", -1)); Log.d(TAG, "Error in accounts.ScreenSet - " + error.getString("errorMessage", "Error Message")); } }); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.activity_login_layout, pluginFragment); transaction.commit(); }
public void loginWithSocialService(GigyaSocialProvider provider, GSResponseListener listener) throws Exception { // did the user attempt a social login, and bail out on the registration // phase? if (GigyaManager.getInstance().getGSAPI().getSession() != null) { logout(); } GSObject providerArgs = new GSObject(); providerArgs.put(GigyaManager.GIGYA_ARG_PROVIDER, provider.name().toLowerCase()); mGSAPI.login(providerArgs, listener, null); }
public void clearStore() throws IOException { try { SDFSLogger.getLog().warn( "Deleting all entries from Bucket [" + this.name + "]"); GSObject[] obj = gsService.listObjects(this.name); SDFSLogger.getLog().info("Will delete " + obj.length + " objects"); for (int i = 0; i < obj.length; i++) { gsService.deleteObject(this.name, obj[i].getKey()); } SDFSLogger.getLog().info( "All entries in bucket [" + this.getName() + "] deleted"); } catch (ServiceException e) { SDFSLogger.getLog().warn( "Unable to delete entries in " + this.getName(), e); throw new IOException(e); } }
GSObject object = new GSObject("object"); System.out.println("GSObject before upload: " + object); GSObject stringObject = new GSObject(TEST_OBJECT_NAME, stringData); GSObject fileObject = new GSObject(fileData); GSObject helloWorldObject = new GSObject("HelloWorld2.txt"); ByteArrayInputStream greetingIS = new ByteArrayInputStream( greeting.getBytes(Constants.DEFAULT_ENCODING)); helloWorldObject.setDataInputStream(greetingIS); helloWorldObject.setContentLength( greeting.getBytes(Constants.DEFAULT_ENCODING).length); helloWorldObject.setContentType("text/plain"); GSObject objectWithHash = new GSObject(TEST_OBJECT_NAME, stringData); System.out.println("Hash value: " + objectWithHash.getMd5HashAsHex()); GSObject hashObject = new GSObject("MyData"); hashObject.setDataInputStream(dataIS); hashObject.setMd5Hash(md5Hash); new InputStreamReader(objectComplete.getDataInputStream())); String data; while ((data = reader.readLine()) != null) { downloadedObject.getDataInputStream(), "UTF-8"); boolean valid = downloadedObject.verifyData(textData.getBytes("UTF-8")); System.out.println("Object verified? " + valid);
GSObject gsObject = new GSObject(hashString); if (Main.compress) { chunk = CompressionUtils.compressZLIB(chunk); gsObject.addMetadata("compress", "true"); } else { gsObject.addMetadata("compress", "false"); gsObject.addMetadata("encrypt", "true"); } else { gsObject.addMetadata("encrypt", "false"); gsObject.setDataInputStream(s3IS); gsObject.setContentType("binary/octet-stream"); gsObject.setContentLength(s3IS.available()); try { gsService.putObject(this.name, gsObject);
@Override public void close() throws IOException { if (mClosed.getAndSet(true)) { return; } mLocalOutputStream.close(); try { GSObject obj = new GSObject(mKey); obj.setBucketName(mBucketName); obj.setDataInputFile(mFile); obj.setContentLength(mFile.length()); obj.setContentType(Mimetypes.MIMETYPE_BINARY_OCTET_STREAM); if (mHash != null) { obj.setMd5Hash(mHash.digest()); } else { LOG.warn("MD5 was not computed for: {}", mKey); } mClient.putObject(mBucketName, obj); if (!mFile.delete()) { LOG.error("Failed to delete temporary file @ {}", mFile.getPath()); } } catch (ServiceException e) { LOG.error("Failed to upload {}. Temporary file @ {}", mKey, mFile.getPath()); throw new IOException(e); } } }
@Override public Object clone() { GSObject clone = new GSObject(getKey()); clone.dataInputStream = dataInputStream; clone.acl = acl; clone.isMetadataComplete = isMetadataComplete; clone.dataInputFile = dataInputFile; clone.setOwner(this.getOwner()); clone.addAllMetadata(getMetadataMap()); return clone; }
@Override protected StorageObject newObject() { return new GSObject(); }
@Override public String toString() { return "GSObject [key=" + getKey() + ", lastModified=" + getLastModifiedDate() + ", dataInputStream=" + dataInputStream + ", Metadata=" + getMetadataMap() + "]"; }
@Override protected boolean createEmptyObject(String key) { try { GSObject obj = new GSObject(key); obj.setDataInputStream(new ByteArrayInputStream(new byte[0])); obj.setContentLength(0); obj.setMd5Hash(DIR_HASH); obj.setContentType(Mimetypes.MIMETYPE_BINARY_OCTET_STREAM); mClient.putObject(mBucketName, obj); return true; } catch (ServiceException e) { LOG.error("Failed to create directory: {}", key, e); return false; } }