public ResultsMessage createResultsMessage(List<? extends List<?>> batch, List<? extends Expression> columnSymbols) { String[] columnNames = new String[columnSymbols.size()]; String[] dataTypes = new String[columnSymbols.size()]; byte clientSerializationVersion = this.dqpWorkContext.getClientVersion().getClientSerializationVersion(); for(int i=0; i<columnSymbols.size(); i++) { Expression symbol = columnSymbols.get(i); columnNames[i] = Symbol.getShortName(Symbol.getOutputName(symbol)); dataTypes[i] = DataTypeManager.getDataTypeName(symbol.getType()); if (!this.dqpWorkContext.getSession().isEmbedded()) { dataTypes[i] = BatchSerializer.getClientSafeType(dataTypes[i], clientSerializationVersion); } } ResultsMessage result = new ResultsMessage(batch, columnNames, dataTypes); result.setClientSerializationVersion(clientSerializationVersion); result.setDelayDeserialization(this.requestMsg.isDelaySerialization() && this.originalCommand.returnsResultSet()); return result; }
Version v = DQPWorkContext.getWorkContext().getClientVersion(); if (v.compareTo(Version.EIGHT_7) >= 0) { LogonResult result = new LogonResult(); result.addProperty(ILogon.AUTH_TYPE, authType);
this.labelAsName = workContext.getClientVersion().compareTo(Version.SEVEN_3) <= 0;
private void receivedHahdshake(Handshake handshake) throws CommunicationException { String clientVersion = handshake.getVersion(); this.workContext.setClientVersion(Version.getVersion(clientVersion)); if (usingEncryption) { byte[] returnedPublicKey = handshake.getPublicKey(); byte[] returnedPublicKeyLarge = handshake.getPublicKeyLarge(); boolean large = false; //ensure the key information if (returnedPublicKey == null) { if (returnedPublicKeyLarge == null) { throw new CommunicationException(RuntimePlugin.Event.TEIID40052, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40052)); } large = true; returnedPublicKey = returnedPublicKeyLarge; } if (LogManager.isMessageToBeRecorded(LogConstants.CTX_TRANSPORT, MessageLevel.DETAIL)) { LogManager.logDetail(LogConstants.CTX_TRANSPORT, large?"2048":"1024", "key exchange being used."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } boolean useCbc = handshake.isCbc(); try { this.cryptor = keyGen.getSymmetricCryptor(returnedPublicKey, "08.03".compareTo(clientVersion) > 0, SocketClientInstance.class.getClassLoader(), large, useCbc); //$NON-NLS-1$ } catch (CryptoException e) { throw new CommunicationException(RuntimePlugin.Event.TEIID40053, e); } this.keyGen = null; } else { this.cryptor = new NullCryptor(); } }
public void exceptionOccurred(Throwable t) { //Object encoding may fail, so send a specific type of message to indicate there was a problem if (objectSocket.isOpen() && !isClosedException(t)) { if (workContext.getClientVersion().compareTo(Version.EIGHT_4) >= 0 && t instanceof FailedWriteException) { FailedWriteException fwe = (FailedWriteException)t; if (fwe.getObject() instanceof Message) { Message m = (Message)fwe.getObject(); if (!(m.getMessageKey() instanceof ExceptionHolder)) { Message exception = new Message(); exception.setContents(m.getMessageKey()); exception.setMessageKey(new ExceptionHolder(fwe.getCause())); objectSocket.write(exception); LogManager.log(getLevel(t), LogConstants.CTX_TRANSPORT, t, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40113)); return; } } } if (workContext.getClientVersion().compareTo(Version.EIGHT_6) >= 0) { Message exception = new Message(); exception.setMessageKey(new ExceptionHolder(t)); objectSocket.write(exception); LogManager.log(getLevel(t), LogConstants.CTX_TRANSPORT, t, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40113)); return; } } int level = getLevel(t); LogManager.log(level, LogConstants.CTX_TRANSPORT, LogManager.isMessageToBeRecorded(LogConstants.CTX_TRANSPORT, MessageLevel.DETAIL)||level<MessageLevel.WARNING?t:null, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40114, t.getMessage())); objectSocket.close(); }
public ResultsMessage createResultsMessage(List<? extends List<?>> batch, List<? extends Expression> columnSymbols) { String[] columnNames = new String[columnSymbols.size()]; String[] dataTypes = new String[columnSymbols.size()]; byte clientSerializationVersion = this.dqpWorkContext.getClientVersion().getClientSerializationVersion(); for(int i=0; i<columnSymbols.size(); i++) { Expression symbol = columnSymbols.get(i); columnNames[i] = Symbol.getShortName(Symbol.getOutputName(symbol)); dataTypes[i] = DataTypeManager.getDataTypeName(symbol.getType()); if (dataTypes[i].equals(DataTypeManager.DefaultDataTypes.GEOMETRY) && !this.dqpWorkContext.getSession().isEmbedded() && clientSerializationVersion < BatchSerializer.VERSION_GEOMETRY) { dataTypes[i] = DataTypeManager.DefaultDataTypes.BLOB; } } ResultsMessage result = new ResultsMessage(batch, columnNames, dataTypes); result.setClientSerializationVersion(clientSerializationVersion); result.setDelayDeserialization(this.requestMsg.isDelaySerialization() && this.originalCommand.returnsResultSet()); return result; }
public ResultsMessage createResultsMessage(List<? extends List<?>> batch, List<? extends Expression> columnSymbols) { String[] columnNames = new String[columnSymbols.size()]; String[] dataTypes = new String[columnSymbols.size()]; byte clientSerializationVersion = this.dqpWorkContext.getClientVersion().getClientSerializationVersion(); for(int i=0; i<columnSymbols.size(); i++) { Expression symbol = columnSymbols.get(i); columnNames[i] = Symbol.getShortName(Symbol.getOutputName(symbol)); dataTypes[i] = DataTypeManager.getDataTypeName(symbol.getType()); if (!this.dqpWorkContext.getSession().isEmbedded()) { dataTypes[i] = BatchSerializer.getClientSafeType(dataTypes[i], clientSerializationVersion); } } ResultsMessage result = new ResultsMessage(batch, columnNames, dataTypes); result.setClientSerializationVersion(clientSerializationVersion); result.setDelayDeserialization(this.requestMsg.isDelaySerialization() && this.originalCommand.returnsResultSet()); return result; }
@Test public void testVersion() { assertEquals(4, DQPWorkContext.Version.getVersion("11.0").getClientSerializationVersion()); assertEquals(5, DQPWorkContext.Version.getVersion("11.2").getClientSerializationVersion()); } }