/** call this when the distributed system ID has been modified */ @edu.umd.cs.findbugs.annotations.SuppressWarnings( value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "Only applicable in client DS and in that case too multiple instances do not modify it at the same time.") public void updateID(DistributedMember idm) { // this.transientPort = ((InternalDistributedMember)this.memberId).getPort(); // if (this.transientPort == 0) { // InternalDistributedSystem.getLoggerI18n().warning( // LocalizedStrings.DEBUG, // "updating client ID when member port is zero: " + this.memberId, // new Exception("stack trace") // ); // } HeapDataOutputStream hdos = new HeapDataOutputStream(256, Version.CURRENT); try { DataSerializer.writeObject(idm, hdos); } catch (IOException e) { throw new InternalGemFireException("Unable to serialize member: " + this.memberId, e); } this.identity = hdos.toByteArray(); if (this.memberId != null && this.memberId == systemMemberId) { systemMemberId = idm; // client_side_identity = this.identity; } this.memberId = idm; this._toString = null; // make sure we don't retain the old ID representation in toString }
public AuthenticateUserOpImpl(Connection con, ExecutablePool pool) { super(MessageType.USER_CREDENTIAL_MESSAGE, 1); byte[] credentialBytes = null; // TODO this is not a valid way to create a member ID DistributedMember server = new InternalDistributedMember( con.getSocket().getInetAddress(), con.getSocket().getPort(), false); DistributedSystem sys = InternalDistributedSystem.getConnectedInstance(); String authInitMethod = sys.getProperties().getProperty(DistributionConfig.SECURITY_CLIENT_AUTH_INIT_NAME); Properties tmpSecurityProperties = sys.getSecurityProperties(); // LOG: following passes the DS API LogWriters into the security API Properties credentials = HandShake.getCredentials( authInitMethod, tmpSecurityProperties, server, false, (InternalLogWriter) sys.getLogWriter(), (InternalLogWriter) sys.getSecurityLogWriter()); getMessage().setEarlyAck(Message.MESSAGE_HAS_SECURE_PART); HeapDataOutputStream heapdos = new HeapDataOutputStream(Version.CURRENT); try { DataSerializer.writeProperties(credentials, heapdos); credentialBytes = ((ConnectionImpl) con).getHandShake().encryptBytes(heapdos.toByteArray()); } catch (Exception e) { throw new ServerOperationException(e); } finally { heapdos.close(); } getMessage().addBytesPart(credentialBytes); }
public static byte[] initializeAndGetDSIdentity(DistributedSystem sys) { byte[] client_side_identity = null; if (sys == null) { // DistributedSystem is required now before handshaking -Kirk throw new IllegalStateException( LocalizedStrings .ClientProxyMembershipID_ATTEMPTING_TO_HANDSHAKE_WITH_CACHESERVER_BEFORE_CREATING_DISTRIBUTEDSYSTEM_AND_CACHE .toLocalizedString()); } // if (system != sys) { // DS already exists... make sure it's for current DS connection systemMemberId = sys.getDistributedMember(); try { HeapDataOutputStream hdos = new HeapDataOutputStream(256, Version.CURRENT); DataSerializer.writeObject(systemMemberId, hdos); client_side_identity = hdos.toByteArray(); } catch (IOException ioe) { throw new InternalGemFireException( LocalizedStrings.ClientProxyMembershipID_UNABLE_TO_SERIALIZE_IDENTITY .toLocalizedString(), ioe); } system = sys; } return client_side_identity; }
public void testRVVSerialization() throws IOException, ClassNotFoundException { DiskStoreID ownerId = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); rvv.recordVersion(id1, 5); rvv.recordVersion(id1, 6); rvv.recordVersion(id1, 7); rvv.recordVersion(id1, 9); rvv.recordVersion(id1, 20); rvv.recordVersion(id1, 11); rvv.recordVersion(id1, 12); rvv.recordGCVersion(id2, 5); rvv.recordGCVersion(id1, 3); assertTrue(rvv.sameAs(rvv.getCloneForTransmission())); HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT); InternalDataSerializer.writeObject(rvv.getCloneForTransmission(), out); byte[] bytes = out.toByteArray(); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bytes)); DiskRegionVersionVector rvv2 = InternalDataSerializer.readObject(dis); assertTrue(rvv.sameAs(rvv2)); }
public static String formulateJsonForListQueriesCall(Region<String, String> queryRegion) { HeapDataOutputStream outputStream = new HeapDataOutputStream(com.gemstone.gemfire.internal.Version.CURRENT); try { JsonGenerator generator = enableDisableJSONGeneratorFeature( getObjectMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8)); JsonWriter.writeQueryListAsJson(generator, "queries", queryRegion); generator.close(); return new String(outputStream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } finally { outputStream.close(); } }
public static String convertStructToJson(StructImpl structSet) throws JSONException { HeapDataOutputStream outputStream = new HeapDataOutputStream(com.gemstone.gemfire.internal.Version.CURRENT); try { JsonGenerator generator = enableDisableJSONGeneratorFeature( getObjectMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8)); JsonWriter.writeStructAsJson(generator, structSet); generator.close(); return new String(outputStream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } finally { outputStream.close(); } }
public static String formulateJsonForGetOnKey(Object value) throws JSONException { HeapDataOutputStream outputStream = new HeapDataOutputStream(com.gemstone.gemfire.internal.Version.CURRENT); try { JsonGenerator generator = enableDisableJSONGeneratorFeature( getObjectMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8)); JsonWriter.writeValueAsJson(generator, value, "GET_ON_KEY_RESPONSE"); generator.close(); return new String(outputStream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } finally { outputStream.close(); } }
public static String formulateJsonForListFunctionsCall(Set<String> functionIds) { HeapDataOutputStream outputStream = new HeapDataOutputStream(com.gemstone.gemfire.internal.Version.CURRENT); try { JsonGenerator generator = enableDisableJSONGeneratorFeature( getObjectMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8)); generator.writeStartObject(); generator.writeFieldName("functions"); JsonWriter.writeCollectionAsJson(generator, functionIds); generator.writeEndObject(); generator.close(); return new String(outputStream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } finally { outputStream.close(); } }
public static String formulateJsonForGetOnMultipleKey( Collection<Object> collection, String regionName) throws JSONException { HeapDataOutputStream outputStream = new HeapDataOutputStream(com.gemstone.gemfire.internal.Version.CURRENT); try { JsonGenerator generator = enableDisableJSONGeneratorFeature( getObjectMapper().getFactory().createGenerator(outputStream, JsonEncoding.UTF8)); generator.writeStartObject(); generator.writeFieldName(regionName); JsonWriter.writeCollectionAsJson(generator, collection); generator.writeEndObject(); generator.close(); return new String(outputStream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } finally { outputStream.close(); } }
@Override protected void sendMessage(Connection cnx) throws Exception { HeapDataOutputStream hdos = new HeapDataOutputStream(Version.CURRENT); byte[] secureBytes = null; hdos.writeLong(cnx.getConnectionID()); if (this.securityProperties != null) { byte[] credentialBytes = null; // TODO this is not a valid way to create a member ID DistributedMember server = new InternalDistributedMember( cnx.getSocket().getInetAddress(), cnx.getSocket().getPort(), false); DistributedSystem sys = InternalDistributedSystem.getConnectedInstance(); String authInitMethod = sys.getProperties().getProperty(DistributionConfig.SECURITY_CLIENT_AUTH_INIT_NAME); Properties credentials = HandShake.getCredentials( authInitMethod, this.securityProperties, server, false, (InternalLogWriter) sys.getLogWriter(), (InternalLogWriter) sys.getSecurityLogWriter()); HeapDataOutputStream heapdos = new HeapDataOutputStream(Version.CURRENT); try { DataSerializer.writeProperties(credentials, heapdos); credentialBytes = ((ConnectionImpl) cnx).getHandShake().encryptBytes(heapdos.toByteArray()); } finally { heapdos.close(); } getMessage().addBytesPart(credentialBytes); } try { secureBytes = ((ConnectionImpl) cnx).getHandShake().encryptBytes(hdos.toByteArray()); } finally { hdos.close(); } getMessage().setSecurePart(secureBytes); getMessage().send(false); }