diff options
author | Simon Rettberg | 2015-08-11 14:21:04 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-11 14:21:04 +0200 |
commit | f6fe4500652b153443ebd947efb1557196f63dfc (patch) | |
tree | d1cea23f0c79ac750f2766f5ad6e1c2ed4f9eaaf /src/main/java | |
parent | Add whoami() and getConfig() to sat RPC (diff) | |
download | master-sync-shared-f6fe4500652b153443ebd947efb1557196f63dfc.tar.gz master-sync-shared-f6fe4500652b153443ebd947efb1557196f63dfc.tar.xz master-sync-shared-f6fe4500652b153443ebd947efb1557196f63dfc.zip |
whoami() returns WhoamiInfo
Diffstat (limited to 'src/main/java')
4 files changed, 608 insertions, 18 deletions
diff --git a/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java b/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java index 3565c4a..9fcfd69 100644 --- a/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java +++ b/src/main/java/org/openslx/bwlp/thrift/iface/SatelliteServer.java @@ -54,7 +54,7 @@ public class SatelliteServer { public void isAuthenticated(String userToken) throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException; - public UserInfo whoami(String userToken) throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException; + public WhoamiInfo whoami(String userToken) throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException; public void invalidateSession(String userToken) throws org.apache.thrift.TException; @@ -440,7 +440,7 @@ public class SatelliteServer { return; } - public UserInfo whoami(String userToken) throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException + public WhoamiInfo whoami(String userToken) throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException { send_whoami(userToken); return recv_whoami(); @@ -453,7 +453,7 @@ public class SatelliteServer { sendBase("whoami", args); } - public UserInfo recv_whoami() throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException + public WhoamiInfo recv_whoami() throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException { whoami_result result = new whoami_result(); receiveBase(result, "whoami"); @@ -1464,7 +1464,7 @@ public class SatelliteServer { prot.writeMessageEnd(); } - public UserInfo getResult() throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException { + public WhoamiInfo getResult() throws TAuthorizationException, TInternalServerError, org.apache.thrift.TException { if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { throw new IllegalStateException("Method call not finished!"); } @@ -3720,7 +3720,7 @@ public class SatelliteServer { } } - public static class whoami<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, whoami_args, UserInfo> { + public static class whoami<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, whoami_args, WhoamiInfo> { public whoami() { super("whoami"); } @@ -3729,10 +3729,10 @@ public class SatelliteServer { return new whoami_args(); } - public AsyncMethodCallback<UserInfo> getResultHandler(final AsyncFrameBuffer fb, final int seqid) { + public AsyncMethodCallback<WhoamiInfo> getResultHandler(final AsyncFrameBuffer fb, final int seqid) { final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback<UserInfo>() { - public void onComplete(UserInfo o) { + return new AsyncMethodCallback<WhoamiInfo>() { + public void onComplete(WhoamiInfo o) { whoami_result result = new whoami_result(); result.success = o; try { @@ -3777,7 +3777,7 @@ public class SatelliteServer { return false; } - public void start(I iface, whoami_args args, org.apache.thrift.async.AsyncMethodCallback<UserInfo> resultHandler) throws TException { + public void start(I iface, whoami_args args, org.apache.thrift.async.AsyncMethodCallback<WhoamiInfo> resultHandler) throws TException { iface.whoami(args.userToken,resultHandler); } } @@ -13718,7 +13718,7 @@ public class SatelliteServer { schemes.put(TupleScheme.class, new whoami_resultTupleSchemeFactory()); } - public UserInfo success; // required + public WhoamiInfo success; // required public TAuthorizationException authError; // required public TInternalServerError serverError; // required @@ -13791,7 +13791,7 @@ public class SatelliteServer { static { Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, UserInfo.class))); + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, WhoamiInfo.class))); tmpMap.put(_Fields.AUTH_ERROR, new org.apache.thrift.meta_data.FieldMetaData("authError", org.apache.thrift.TFieldRequirementType.DEFAULT, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT))); tmpMap.put(_Fields.SERVER_ERROR, new org.apache.thrift.meta_data.FieldMetaData("serverError", org.apache.thrift.TFieldRequirementType.DEFAULT, @@ -13804,7 +13804,7 @@ public class SatelliteServer { } public whoami_result( - UserInfo success, + WhoamiInfo success, TAuthorizationException authError, TInternalServerError serverError) { @@ -13819,7 +13819,7 @@ public class SatelliteServer { */ public whoami_result(whoami_result other) { if (other.isSetSuccess()) { - this.success = new UserInfo(other.success); + this.success = new WhoamiInfo(other.success); } if (other.isSetAuthError()) { this.authError = new TAuthorizationException(other.authError); @@ -13840,11 +13840,11 @@ public class SatelliteServer { this.serverError = null; } - public UserInfo getSuccess() { + public WhoamiInfo getSuccess() { return this.success; } - public whoami_result setSuccess(UserInfo success) { + public whoami_result setSuccess(WhoamiInfo success) { this.success = success; return this; } @@ -13918,7 +13918,7 @@ public class SatelliteServer { if (value == null) { unsetSuccess(); } else { - setSuccess((UserInfo)value); + setSuccess((WhoamiInfo)value); } break; @@ -14150,7 +14150,7 @@ public class SatelliteServer { switch (schemeField.id) { case 0: // SUCCESS if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.success = new UserInfo(); + struct.success = new WhoamiInfo(); struct.success.read(iprot); struct.setSuccessIsSet(true); } else { @@ -14249,7 +14249,7 @@ public class SatelliteServer { TTupleProtocol iprot = (TTupleProtocol) prot; BitSet incoming = iprot.readBitSet(3); if (incoming.get(0)) { - struct.success = new UserInfo(); + struct.success = new WhoamiInfo(); struct.success.read(iprot); struct.setSuccessIsSet(true); } diff --git a/src/main/java/org/openslx/bwlp/thrift/iface/WhoamiInfo.java b/src/main/java/org/openslx/bwlp/thrift/iface/WhoamiInfo.java new file mode 100644 index 0000000..dc8b8f2 --- /dev/null +++ b/src/main/java/org/openslx/bwlp/thrift/iface/WhoamiInfo.java @@ -0,0 +1,585 @@ +/** + * Autogenerated by Thrift Compiler (0.9.1) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +package org.openslx.bwlp.thrift.iface; + +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; + +import org.apache.thrift.scheme.TupleScheme; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.protocol.TProtocolException; +import org.apache.thrift.EncodingUtils; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.server.AbstractNonblockingServer.*; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import java.util.HashMap; +import java.util.EnumMap; +import java.util.Set; +import java.util.HashSet; +import java.util.EnumSet; +import java.util.Collections; +import java.util.BitSet; +import java.nio.ByteBuffer; +import java.util.Arrays; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class WhoamiInfo implements org.apache.thrift.TBase<WhoamiInfo, WhoamiInfo._Fields>, java.io.Serializable, Cloneable, Comparable<WhoamiInfo> { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("WhoamiInfo"); + + private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = new org.apache.thrift.protocol.TField("user", org.apache.thrift.protocol.TType.STRUCT, (short)1); + private static final org.apache.thrift.protocol.TField IS_SUPER_USER_FIELD_DESC = new org.apache.thrift.protocol.TField("isSuperUser", org.apache.thrift.protocol.TType.BOOL, (short)2); + private static final org.apache.thrift.protocol.TField CAN_LIST_IMAGES_FIELD_DESC = new org.apache.thrift.protocol.TField("canListImages", org.apache.thrift.protocol.TType.BOOL, (short)3); + + private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>(); + static { + schemes.put(StandardScheme.class, new WhoamiInfoStandardSchemeFactory()); + schemes.put(TupleScheme.class, new WhoamiInfoTupleSchemeFactory()); + } + + public UserInfo user; // required + public boolean isSuperUser; // required + public boolean canListImages; // required + + /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + USER((short)1, "user"), + IS_SUPER_USER((short)2, "isSuperUser"), + CAN_LIST_IMAGES((short)3, "canListImages"); + + private static final Map<String, _Fields> byName = new HashMap<String, _Fields>(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** + * Find the _Fields constant that matches fieldId, or null if its not found. + */ + public static _Fields findByThriftId(int fieldId) { + switch(fieldId) { + case 1: // USER + return USER; + case 2: // IS_SUPER_USER + return IS_SUPER_USER; + case 3: // CAN_LIST_IMAGES + return CAN_LIST_IMAGES; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception + * if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** + * Find the _Fields constant that matches name, or null if its not found. + */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __ISSUPERUSER_ISSET_ID = 0; + private static final int __CANLISTIMAGES_ISSET_ID = 1; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put(_Fields.USER, new org.apache.thrift.meta_data.FieldMetaData("user", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, UserInfo.class))); + tmpMap.put(_Fields.IS_SUPER_USER, new org.apache.thrift.meta_data.FieldMetaData("isSuperUser", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL))); + tmpMap.put(_Fields.CAN_LIST_IMAGES, new org.apache.thrift.meta_data.FieldMetaData("canListImages", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(WhoamiInfo.class, metaDataMap); + } + + public WhoamiInfo() { + } + + public WhoamiInfo( + UserInfo user, + boolean isSuperUser, + boolean canListImages) + { + this(); + this.user = user; + this.isSuperUser = isSuperUser; + setIsSuperUserIsSet(true); + this.canListImages = canListImages; + setCanListImagesIsSet(true); + } + + /** + * Performs a deep copy on <i>other</i>. + */ + public WhoamiInfo(WhoamiInfo other) { + __isset_bitfield = other.__isset_bitfield; + if (other.isSetUser()) { + this.user = new UserInfo(other.user); + } + this.isSuperUser = other.isSuperUser; + this.canListImages = other.canListImages; + } + + public WhoamiInfo deepCopy() { + return new WhoamiInfo(this); + } + + @Override + public void clear() { + this.user = null; + setIsSuperUserIsSet(false); + this.isSuperUser = false; + setCanListImagesIsSet(false); + this.canListImages = false; + } + + public UserInfo getUser() { + return this.user; + } + + public WhoamiInfo setUser(UserInfo user) { + this.user = user; + return this; + } + + public void unsetUser() { + this.user = null; + } + + /** Returns true if field user is set (has been assigned a value) and false otherwise */ + public boolean isSetUser() { + return this.user != null; + } + + public void setUserIsSet(boolean value) { + if (!value) { + this.user = null; + } + } + + public boolean isIsSuperUser() { + return this.isSuperUser; + } + + public WhoamiInfo setIsSuperUser(boolean isSuperUser) { + this.isSuperUser = isSuperUser; + setIsSuperUserIsSet(true); + return this; + } + + public void unsetIsSuperUser() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISSUPERUSER_ISSET_ID); + } + + /** Returns true if field isSuperUser is set (has been assigned a value) and false otherwise */ + public boolean isSetIsSuperUser() { + return EncodingUtils.testBit(__isset_bitfield, __ISSUPERUSER_ISSET_ID); + } + + public void setIsSuperUserIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISSUPERUSER_ISSET_ID, value); + } + + public boolean isCanListImages() { + return this.canListImages; + } + + public WhoamiInfo setCanListImages(boolean canListImages) { + this.canListImages = canListImages; + setCanListImagesIsSet(true); + return this; + } + + public void unsetCanListImages() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CANLISTIMAGES_ISSET_ID); + } + + /** Returns true if field canListImages is set (has been assigned a value) and false otherwise */ + public boolean isSetCanListImages() { + return EncodingUtils.testBit(__isset_bitfield, __CANLISTIMAGES_ISSET_ID); + } + + public void setCanListImagesIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CANLISTIMAGES_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case USER: + if (value == null) { + unsetUser(); + } else { + setUser((UserInfo)value); + } + break; + + case IS_SUPER_USER: + if (value == null) { + unsetIsSuperUser(); + } else { + setIsSuperUser((Boolean)value); + } + break; + + case CAN_LIST_IMAGES: + if (value == null) { + unsetCanListImages(); + } else { + setCanListImages((Boolean)value); + } + break; + + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case USER: + return getUser(); + + case IS_SUPER_USER: + return Boolean.valueOf(isIsSuperUser()); + + case CAN_LIST_IMAGES: + return Boolean.valueOf(isCanListImages()); + + } + throw new IllegalStateException(); + } + + /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case USER: + return isSetUser(); + case IS_SUPER_USER: + return isSetIsSuperUser(); + case CAN_LIST_IMAGES: + return isSetCanListImages(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) + return false; + if (that instanceof WhoamiInfo) + return this.equals((WhoamiInfo)that); + return false; + } + + public boolean equals(WhoamiInfo that) { + if (that == null) + return false; + + boolean this_present_user = true && this.isSetUser(); + boolean that_present_user = true && that.isSetUser(); + if (this_present_user || that_present_user) { + if (!(this_present_user && that_present_user)) + return false; + if (!this.user.equals(that.user)) + return false; + } + + boolean this_present_isSuperUser = true; + boolean that_present_isSuperUser = true; + if (this_present_isSuperUser || that_present_isSuperUser) { + if (!(this_present_isSuperUser && that_present_isSuperUser)) + return false; + if (this.isSuperUser != that.isSuperUser) + return false; + } + + boolean this_present_canListImages = true; + boolean that_present_canListImages = true; + if (this_present_canListImages || that_present_canListImages) { + if (!(this_present_canListImages && that_present_canListImages)) + return false; + if (this.canListImages != that.canListImages) + return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(WhoamiInfo other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetUser()).compareTo(other.isSetUser()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetUser()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, other.user); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetIsSuperUser()).compareTo(other.isSetIsSuperUser()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetIsSuperUser()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isSuperUser, other.isSuperUser); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetCanListImages()).compareTo(other.isSetCanListImages()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetCanListImages()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.canListImages, other.canListImages); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("WhoamiInfo("); + boolean first = true; + + sb.append("user:"); + if (this.user == null) { + sb.append("null"); + } else { + sb.append(this.user); + } + first = false; + if (!first) sb.append(", "); + sb.append("isSuperUser:"); + sb.append(this.isSuperUser); + first = false; + if (!first) sb.append(", "); + sb.append("canListImages:"); + sb.append(this.canListImages); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + if (user != null) { + user.validate(); + } + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor. + __isset_bitfield = 0; + read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class WhoamiInfoStandardSchemeFactory implements SchemeFactory { + public WhoamiInfoStandardScheme getScheme() { + return new WhoamiInfoStandardScheme(); + } + } + + private static class WhoamiInfoStandardScheme extends StandardScheme<WhoamiInfo> { + + public void read(org.apache.thrift.protocol.TProtocol iprot, WhoamiInfo struct) throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) + { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // USER + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.user = new UserInfo(); + struct.user.read(iprot); + struct.setUserIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // IS_SUPER_USER + if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) { + struct.isSuperUser = iprot.readBool(); + struct.setIsSuperUserIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 3: // CAN_LIST_IMAGES + if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) { + struct.canListImages = iprot.readBool(); + struct.setCanListImagesIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, WhoamiInfo struct) throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.user != null) { + oprot.writeFieldBegin(USER_FIELD_DESC); + struct.user.write(oprot); + oprot.writeFieldEnd(); + } + oprot.writeFieldBegin(IS_SUPER_USER_FIELD_DESC); + oprot.writeBool(struct.isSuperUser); + oprot.writeFieldEnd(); + oprot.writeFieldBegin(CAN_LIST_IMAGES_FIELD_DESC); + oprot.writeBool(struct.canListImages); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + + } + + private static class WhoamiInfoTupleSchemeFactory implements SchemeFactory { + public WhoamiInfoTupleScheme getScheme() { + return new WhoamiInfoTupleScheme(); + } + } + + private static class WhoamiInfoTupleScheme extends TupleScheme<WhoamiInfo> { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, WhoamiInfo struct) throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetUser()) { + optionals.set(0); + } + if (struct.isSetIsSuperUser()) { + optionals.set(1); + } + if (struct.isSetCanListImages()) { + optionals.set(2); + } + oprot.writeBitSet(optionals, 3); + if (struct.isSetUser()) { + struct.user.write(oprot); + } + if (struct.isSetIsSuperUser()) { + oprot.writeBool(struct.isSuperUser); + } + if (struct.isSetCanListImages()) { + oprot.writeBool(struct.canListImages); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, WhoamiInfo struct) throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(3); + if (incoming.get(0)) { + struct.user = new UserInfo(); + struct.user.read(iprot); + struct.setUserIsSet(true); + } + if (incoming.get(1)) { + struct.isSuperUser = iprot.readBool(); + struct.setIsSuperUserIsSet(true); + } + if (incoming.get(2)) { + struct.canListImages = iprot.readBool(); + struct.setCanListImagesIsSet(true); + } + } + } + +} + diff --git a/src/main/java/org/openslx/filetransfer/Downloader.java b/src/main/java/org/openslx/filetransfer/Downloader.java index 5f026c2..cb933af 100644 --- a/src/main/java/org/openslx/filetransfer/Downloader.java +++ b/src/main/java/org/openslx/filetransfer/Downloader.java @@ -151,6 +151,10 @@ public class Downloader extends Transfer } sendDone(); sendEndOfMeta(); + try { + transferSocket.shutdownOutput(); + } catch ( IOException e ) { + } } finally { this.close( null ); } diff --git a/src/main/java/org/openslx/filetransfer/Transfer.java b/src/main/java/org/openslx/filetransfer/Transfer.java index 79a0242..4502622 100644 --- a/src/main/java/org/openslx/filetransfer/Transfer.java +++ b/src/main/java/org/openslx/filetransfer/Transfer.java @@ -127,6 +127,7 @@ public abstract class Transfer { try { outStream.writeShort( 0 ); + outStream.flush(); } catch ( SocketTimeoutException e ) { log.error( "Error sending end of meta - socket timeout" ); return false; |