You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2015/08/14 21:08:22 UTC
[49/50] [abbrv] qpid-proton git commit: Build a parrallel transport
to plug in the codec + type system with minimum effort. This allows to
compare the the new codec with the old impl end-to-end.
Build a parrallel transport to plug in the codec + type system with minimum effort.
This allows to compare the the new codec with the old impl end-to-end.
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/0208b9e8
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/0208b9e8
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/0208b9e8
Branch: refs/heads/rajith-codec
Commit: 0208b9e8d0bcc13ab961c0345bb023a7c67cb151
Parents: 081610d
Author: Rajith Attapattu <ra...@apache.org>
Authored: Fri Aug 14 15:03:17 2015 -0400
Committer: Rajith Attapattu <ra...@apache.org>
Committed: Fri Aug 14 15:03:17 2015 -0400
----------------------------------------------------------------------
.../qpid/proton/codec2/DiscriptorRegistry.java | 10 +-
.../qpid/proton/engine/impl/FrameWriter2.java | 4 +-
.../qpid/proton/engine/impl/SaslImpl2.java | 286 ++++++++++++-------
.../proton/engine/impl/TransportSession.java | 71 ++++-
.../apache/qpid/proton/message2/Received.java | 4 +-
.../proton/messenger/impl/MessengerImpl.java | 2 +-
.../qpid/proton/security2/SaslChallenge.java | 20 +-
.../apache/qpid/proton/security2/SaslInit.java | 20 +-
.../qpid/proton/security2/SaslMechanisms.java | 20 +-
.../qpid/proton/security2/SaslOutcome.java | 26 +-
.../qpid/proton/security2/SaslResponse.java | 20 +-
11 files changed, 334 insertions(+), 149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/codec2/DiscriptorRegistry.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec2/DiscriptorRegistry.java b/proton-j/src/main/java/org/apache/qpid/proton/codec2/DiscriptorRegistry.java
index 5720432..6536c6b 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec2/DiscriptorRegistry.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec2/DiscriptorRegistry.java
@@ -125,11 +125,11 @@ public class DiscriptorRegistry
public static void registerSaslTypes()
{
- registerType(SaslMechanisms.DESCRIPTOR_LONG, SaslMechanisms.DESCRIPTOR_STRING, SaslMechanisms.FACTORY);
- registerType(SaslInit.DESCRIPTOR_LONG, SaslInit.DESCRIPTOR_STRING, SaslInit.FACTORY);
- registerType(SaslChallenge.DESCRIPTOR_LONG, SaslChallenge.DESCRIPTOR_STRING, SaslChallenge.FACTORY);
- registerType(SaslResponse.DESCRIPTOR_LONG, SaslResponse.DESCRIPTOR_STRING, SaslResponse.FACTORY);
- registerType(SaslOutcome.DESCRIPTOR_LONG, SaslOutcome.DESCRIPTOR_STRING, SaslOutcome.FACTORY);
+ registerType(SaslMechanisms.CODE, SaslMechanisms.DESCRIPTOR, SaslMechanisms.FACTORY);
+ registerType(SaslInit.CODE, SaslInit.DESCRIPTOR, SaslInit.FACTORY);
+ registerType(SaslChallenge.CODE, SaslChallenge.DESCRIPTOR, SaslChallenge.FACTORY);
+ registerType(SaslResponse.CODE, SaslResponse.DESCRIPTOR, SaslResponse.FACTORY);
+ registerType(SaslOutcome.CODE, SaslOutcome.DESCRIPTOR, SaslOutcome.FACTORY);
}
public static DescribedTypeFactory lookup(Object code)
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
index 9d1b432..8feac53 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
@@ -146,7 +146,7 @@ class FrameWriter2
_encoder.putShort((short) channel);
}
- void writeFrame(int channel, Performative frameBody, ByteBuffer payload, Runnable onPayloadTooLarge)
+ void writeFrame(int channel, Object frameBody, ByteBuffer payload, Runnable onPayloadTooLarge)
{
startFrame();
@@ -206,7 +206,7 @@ class FrameWriter2
_framesOutput += 1;
}
- void writeFrame(Performative frameBody)
+ void writeFrame(Object frameBody)
{
writeFrame(0, frameBody, null, null);
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl2.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl2.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl2.java
index 3389789..3a27fb8 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl2.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl2.java
@@ -17,7 +17,7 @@
* specific language governing permissions and limitations
* under the License.
*
-*/
+ */
package org.apache.qpid.proton.engine.impl;
@@ -32,52 +32,69 @@ import java.util.logging.Logger;
import org.apache.qpid.proton.ProtonUnsupportedOperationException;
import org.apache.qpid.proton.amqp.Binary;
import org.apache.qpid.proton.amqp.Symbol;
-import org.apache.qpid.proton.amqp.security.SaslChallenge;
-import org.apache.qpid.proton.amqp.security.SaslCode;
-import org.apache.qpid.proton.amqp.security.SaslFrameBody;
-import org.apache.qpid.proton.amqp.security.SaslInit;
-import org.apache.qpid.proton.amqp.security.SaslMechanisms;
-import org.apache.qpid.proton.amqp.security.SaslResponse;
-import org.apache.qpid.proton.codec.AMQPDefinedTypes;
-import org.apache.qpid.proton.codec.DecoderImpl;
-import org.apache.qpid.proton.codec.EncoderImpl;
+import org.apache.qpid.proton.codec2.ByteArrayDecoder;
+import org.apache.qpid.proton.codec2.ByteArrayEncoder;
import org.apache.qpid.proton.engine.Sasl;
import org.apache.qpid.proton.engine.Transport;
import org.apache.qpid.proton.engine.TransportException;
-
-public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>, SaslFrameHandler
+import org.apache.qpid.proton.engine.impl.SaslImpl.Role;
+import org.apache.qpid.proton.security2.SaslBody;
+import org.apache.qpid.proton.security2.SaslChallenge;
+import org.apache.qpid.proton.security2.SaslCode;
+import org.apache.qpid.proton.security2.SaslInit;
+import org.apache.qpid.proton.security2.SaslMechanisms;
+import org.apache.qpid.proton.security2.SaslResponse;
+import org.apache.qpid.proton.transport2.Outcome;
+
+public class SaslImpl2 implements Sasl
{
private static final Logger _logger = Logger.getLogger(SaslImpl2.class.getName());
public static final byte SASL_FRAME_TYPE = (byte) 1;
- private final DecoderImpl _decoder = new DecoderImpl();
- private final EncoderImpl _encoder = new EncoderImpl(_decoder);
+ private ByteArrayDecoder _decoder = new ByteArrayDecoder();
+
+ private ByteArrayEncoder _encoder = new ByteArrayEncoder();
private final TransportImpl2 _transport;
private boolean _tail_closed = false;
+
private final ByteBuffer _inputBuffer;
+
private boolean _head_closed = false;
+
private final ByteBuffer _outputBuffer;
- private final FrameWriter _frameWriter;
+
+ private final FrameWriter2 _frameWriter;
private ByteBuffer _pending;
private boolean _headerWritten;
- private Binary _challengeResponse;
- private SaslFrameParser _frameParser;
+
+ private byte[] _challengeResponse;
+
+ private SaslFrameParser2 _frameParser;
+
private boolean _initReceived;
+
private boolean _mechanismsSent;
+
private boolean _initSent;
- enum Role { CLIENT, SERVER };
+ enum Role
+ {
+ CLIENT, SERVER
+ };
private SaslOutcome _outcome = SaslOutcome.PN_SASL_NONE;
+
private SaslState _state = SaslState.PN_SASL_IDLE;
private String _hostname;
+
private boolean _done;
+
private Symbol[] _mechanisms;
private Symbol _chosenMechanism;
@@ -85,9 +102,10 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
private Role _role;
/**
- * @param maxFrameSize the size of the input and output buffers
- * returned by {@link SaslTransportWrapper#getInputBuffer()} and
- * {@link SaslTransportWrapper#getOutputBuffer()}.
+ * @param maxFrameSize
+ * the size of the input and output buffers returned by
+ * {@link SaslTransportWrapper#getInputBuffer()} and
+ * {@link SaslTransportWrapper#getOutputBuffer()}.
*/
SaslImpl2(TransportImpl2 transport, int maxFrameSize)
{
@@ -95,16 +113,19 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
_inputBuffer = newWriteableBuffer(maxFrameSize);
_outputBuffer = newWriteableBuffer(maxFrameSize);
- AMQPDefinedTypes.registerAllTypes(_decoder,_encoder);
- _frameParser = new SaslFrameParser(this, _decoder);
- _frameWriter = new FrameWriter(_encoder, maxFrameSize, FrameWriter.SASL_FRAME_TYPE, null, _transport);
+ _frameParser = new SaslFrameParser2(this, _decoder);
+ _frameWriter = new FrameWriter2(_encoder, maxFrameSize, FrameWriter.SASL_FRAME_TYPE, null, _transport);
}
- void fail() {
- if (_role == null || _role == Role.CLIENT) {
+ void fail()
+ {
+ if (_role == null || _role == Role.CLIENT)
+ {
_role = Role.CLIENT;
_initSent = true;
- } else {
+ }
+ else
+ {
_initReceived = true;
}
@@ -112,10 +133,9 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
_outcome = SaslOutcome.PN_SASL_SYS;
}
- @Override
public boolean isDone()
{
- return _done && (_role==Role.CLIENT || _initReceived);
+ return _done && (_role == Role.CLIENT || _initReceived);
}
private void writeSaslOutput()
@@ -123,7 +143,7 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
process();
_frameWriter.readBytes(_outputBuffer);
- if(_logger.isLoggable(Level.FINER))
+ if (_logger.isLoggable(Level.FINER))
{
_logger.log(Level.FINER, "Finished writing SASL output. Output Buffer : " + _outputBuffer);
}
@@ -133,19 +153,19 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
{
processHeader();
- if(_role == Role.SERVER)
+ if (_role == Role.SERVER)
{
- if(!_mechanismsSent && _mechanisms != null)
+ if (!_mechanismsSent && _mechanisms != null)
{
SaslMechanisms mechanisms = new SaslMechanisms();
- mechanisms.setSaslServerMechanisms(_mechanisms);
+ mechanisms.setSaslServerMechanisms(LegacyTypeHelper.convertToStringArray(_mechanisms));
writeFrame(mechanisms);
_mechanismsSent = true;
_state = SaslState.PN_SASL_STEP;
}
- if(getState() == SaslState.PN_SASL_STEP && getChallengeResponse() != null)
+ if (getState() == SaslState.PN_SASL_STEP && getChallengeResponse() != null)
{
SaslChallenge challenge = new SaslChallenge();
challenge.setChallenge(getChallengeResponse());
@@ -153,37 +173,36 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
setChallengeResponse(null);
}
- if(_done)
+ if (_done)
{
- org.apache.qpid.proton.amqp.security.SaslOutcome outcome =
- new org.apache.qpid.proton.amqp.security.SaslOutcome();
- outcome.setCode(SaslCode.values()[_outcome.getCode()]);
+ org.apache.qpid.proton.security2.SaslOutcome outcome = new org.apache.qpid.proton.security2.SaslOutcome();
+ outcome.setSaslCode(SaslCode.values()[_outcome.getCode()]);
writeFrame(outcome);
}
}
- else if(_role == Role.CLIENT)
+ else if (_role == Role.CLIENT)
{
- if(getState() == SaslState.PN_SASL_IDLE && _chosenMechanism != null)
+ if (getState() == SaslState.PN_SASL_IDLE && _chosenMechanism != null)
{
processInit();
_state = SaslState.PN_SASL_STEP;
- //HACK: if we received an outcome before
- //we sent our init, change the state now
- if(_outcome != SaslOutcome.PN_SASL_NONE)
+ // HACK: if we received an outcome before
+ // we sent our init, change the state now
+ if (_outcome != SaslOutcome.PN_SASL_NONE)
{
_state = classifyStateFromOutcome(_outcome);
}
}
- if(getState() == SaslState.PN_SASL_STEP && getChallengeResponse() != null)
+ if (getState() == SaslState.PN_SASL_STEP && getChallengeResponse() != null)
{
processResponse();
}
}
}
- private void writeFrame(SaslFrameBody frameBody)
+ private void writeFrame(SaslBody frameBody)
{
_frameWriter.writeFrame(frameBody);
}
@@ -191,12 +210,12 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
@Override
final public int recv(byte[] bytes, int offset, int size)
{
- if(_pending == null)
+ if (_pending == null)
{
return -1;
}
final int written = pourBufferToArray(_pending, bytes, offset, size);
- if(!_pending.hasRemaining())
+ if (!_pending.hasRemaining())
{
_pending = null;
}
@@ -208,13 +227,13 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
{
byte[] data = new byte[size];
System.arraycopy(bytes, offset, data, 0, size);
- setChallengeResponse(new Binary(data));
+ setChallengeResponse(data);
return size;
}
final int processHeader()
{
- if(!_headerWritten)
+ if (!_headerWritten)
{
_frameWriter.writeHeader(AmqpHeader.SASL_HEADER);
@@ -244,12 +263,12 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
return _state;
}
- final Binary getChallengeResponse()
+ final byte[] getChallengeResponse()
{
return _challengeResponse;
}
- final void setChallengeResponse(Binary challengeResponse)
+ final void setChallengeResponse(byte[] challengeResponse)
{
_challengeResponse = challengeResponse;
}
@@ -257,16 +276,16 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
@Override
public void setMechanisms(String... mechanisms)
{
- if(mechanisms != null)
+ if (mechanisms != null)
{
_mechanisms = new Symbol[mechanisms.length];
- for(int i = 0; i < mechanisms.length; i++)
+ for (int i = 0; i < mechanisms.length; i++)
{
_mechanisms[i] = Symbol.valueOf(mechanisms[i]);
}
}
- if(_role == Role.CLIENT)
+ if (_role == Role.CLIENT)
{
assert mechanisms != null;
assert mechanisms.length == 1;
@@ -278,20 +297,20 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
@Override
public String[] getRemoteMechanisms()
{
- if(_role == Role.SERVER)
+ if (_role == Role.SERVER)
{
return _chosenMechanism == null ? new String[0] : new String[] { _chosenMechanism.toString() };
}
- else if(_role == Role.CLIENT)
+ else if (_role == Role.CLIENT)
{
- if(_mechanisms == null)
+ if (_mechanisms == null)
{
return new String[0];
}
else
{
String[] remoteMechanisms = new String[_mechanisms.length];
- for(int i = 0; i < _mechanisms.length; i++)
+ for (int i = 0; i < _mechanisms.length; i++)
{
remoteMechanisms[i] = _mechanisms[i].toString();
}
@@ -319,34 +338,54 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
setPending(initialResponse.asByteBuffer());
}
- @Override
- public void handle(SaslFrameBody frameBody, Binary payload)
+ public void handle(SaslBody frameBody, byte[] payload)
{
- frameBody.invoke(this, payload, null);
+ if (SaslInit.CODE == frameBody.getCode())
+ {
+ handleInit((SaslInit) frameBody, payload, null);
+ }
+ else if (SaslResponse.CODE == frameBody.getCode())
+ {
+ handleResponse((SaslResponse) frameBody, payload, null);
+ }
+ else if (SaslMechanisms.CODE == frameBody.getCode())
+ {
+ handleMechanisms((SaslMechanisms) frameBody, payload, null);
+ }
+ else if (SaslChallenge.CODE == frameBody.getCode())
+ {
+ handleChallenge((SaslChallenge) frameBody, payload, null);
+ }
+ else if (org.apache.qpid.proton.security2.SaslOutcome.CODE == frameBody.getCode())
+ {
+ handleOutcome((org.apache.qpid.proton.security2.SaslOutcome) frameBody, payload, null);
+ }
+ else
+ {
+ throw new IllegalArgumentException("SASLImpl Invalid code: " + frameBody.getCode());
+ }
}
- @Override
- public void handleInit(SaslInit saslInit, Binary payload, Void context)
+ public void handleInit(SaslInit saslInit, byte[] payload, Void context)
{
- if(_role == null)
+ if (_role == null)
{
server();
}
checkRole(Role.SERVER);
_hostname = saslInit.getHostname();
- _chosenMechanism = saslInit.getMechanism();
+ _chosenMechanism = Symbol.valueOf(saslInit.getMechanism());
_initReceived = true;
- if(saslInit.getInitialResponse() != null)
+ if (saslInit.getInitialResponse() != null)
{
- setPending(saslInit.getInitialResponse().asByteBuffer());
+ setPending(ByteBuffer.wrap(saslInit.getInitialResponse()));
}
}
- @Override
- public void handleResponse(SaslResponse saslResponse, Binary payload, Void context)
+ public void handleResponse(SaslResponse saslResponse, byte[] payload, Void context)
{
checkRole(Role.SERVER);
- setPending(saslResponse.getResponse() == null ? null : saslResponse.getResponse().asByteBuffer());
+ setPending(saslResponse.getResponse() == null ? null : ByteBuffer.wrap(saslResponse.getResponse()));
}
@Override
@@ -361,39 +400,34 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
private void checkRole(Role role)
{
- if(role != _role)
+ if (role != _role)
{
throw new IllegalStateException("Role is " + _role + " but should be " + role);
}
}
- @Override
- public void handleMechanisms(SaslMechanisms saslMechanisms, Binary payload, Void context)
+ public void handleMechanisms(SaslMechanisms saslMechanisms, byte[] payload, Void context)
{
- if(_role == null)
+ if (_role == null)
{
client();
}
checkRole(Role.CLIENT);
- _mechanisms = saslMechanisms.getSaslServerMechanisms();
+ _mechanisms = LegacyTypeHelper.convertToSymbolArray(saslMechanisms.getSaslServerMechanisms());
}
- @Override
- public void handleChallenge(SaslChallenge saslChallenge, Binary payload, Void context)
+ public void handleChallenge(SaslChallenge saslChallenge, byte[] payload, Void context)
{
checkRole(Role.CLIENT);
- setPending(saslChallenge.getChallenge() == null ? null : saslChallenge.getChallenge().asByteBuffer());
+ setPending(saslChallenge.getChallenge() == null ? null : ByteBuffer.wrap(saslChallenge.getChallenge()));
}
- @Override
- public void handleOutcome(org.apache.qpid.proton.amqp.security.SaslOutcome saslOutcome,
- Binary payload,
- Void context)
+ public void handleOutcome(org.apache.qpid.proton.security2.SaslOutcome saslOutcome, byte[] payload, Void context)
{
checkRole(Role.CLIENT);
- for(SaslOutcome outcome : SaslOutcome.values())
+ for (SaslOutcome outcome : SaslOutcome.values())
{
- if(outcome.getCode() == saslOutcome.getCode().ordinal())
+ if (outcome.getCode() == saslOutcome.getSaslCode().ordinal())
{
_outcome = outcome;
if (_state != SaslState.PN_SASL_IDLE)
@@ -405,7 +439,7 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
}
_done = true;
- if(_logger.isLoggable(Level.FINE))
+ if (_logger.isLoggable(Level.FINE))
{
_logger.fine("Handled outcome: " + this);
}
@@ -428,8 +462,8 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
{
SaslInit init = new SaslInit();
init.setHostname(_hostname);
- init.setMechanism(_chosenMechanism);
- if(getChallengeResponse() != null)
+ init.setMechanism(_chosenMechanism.toString());
+ if (getChallengeResponse() != null)
{
init.setInitialResponse(getChallengeResponse());
setChallengeResponse(null);
@@ -445,11 +479,11 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
_chosenMechanism = Symbol.valueOf("PLAIN");
byte[] usernameBytes = username.getBytes();
byte[] passwordBytes = password.getBytes();
- byte[] data = new byte[usernameBytes.length+passwordBytes.length+2];
+ byte[] data = new byte[usernameBytes.length + passwordBytes.length + 2];
System.arraycopy(usernameBytes, 0, data, 1, usernameBytes.length);
- System.arraycopy(passwordBytes, 0, data, 2+usernameBytes.length, passwordBytes.length);
+ System.arraycopy(passwordBytes, 0, data, 2 + usernameBytes.length, passwordBytes.length);
- setChallengeResponse(new Binary(data));
+ setChallengeResponse(data);
}
@Override
@@ -462,7 +496,7 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
public void client()
{
_role = Role.CLIENT;
- if(_mechanisms != null)
+ if (_mechanisms != null)
{
assert _mechanisms.length == 1;
@@ -479,7 +513,7 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
@Override
public void allowSkip(boolean allowSkip)
{
- //TODO: implement
+ // TODO: implement
throw new ProtonUnsupportedOperationException();
}
@@ -492,20 +526,19 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
public String toString()
{
StringBuilder builder = new StringBuilder();
- builder
- .append("SaslImpl [_outcome=").append(_outcome)
- .append(", state=").append(_state)
- .append(", done=").append(_done)
- .append(", role=").append(_role)
- .append("]");
+ builder.append("SaslImpl [_outcome=").append(_outcome).append(", state=").append(_state).append(", done=")
+ .append(_done).append(", role=").append(_role).append("]");
return builder.toString();
}
private class SaslTransportWrapper implements TransportWrapper
{
private final TransportInput _underlyingInput;
+
private final TransportOutput _underlyingOutput;
+
private boolean _outputComplete;
+
private final ByteBuffer _head;
private SaslTransportWrapper(TransportInput input, TransportOutput output)
@@ -518,10 +551,10 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
private void fillOutputBuffer()
{
- if(isOutputInSaslMode())
+ if (isOutputInSaslMode())
{
SaslImpl2.this.writeSaslOutput();
- if(_done)
+ if (_done)
{
_outputComplete = true;
}
@@ -529,23 +562,28 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
}
/**
- * TODO rationalise this method with respect to the other similar checks of _role/_initReceived etc
+ * TODO rationalise this method with respect to the other similar checks
+ * of _role/_initReceived etc
+ *
* @see SaslImpl2#isDone()
*/
private boolean isInputInSaslMode()
{
- return _role == null || (_role == Role.CLIENT && !_done) ||(_role == Role.SERVER && (!_initReceived || !_done));
+ return _role == null || (_role == Role.CLIENT && !_done)
+ || (_role == Role.SERVER && (!_initReceived || !_done));
}
private boolean isOutputInSaslMode()
{
- return _role == null || (_role == Role.CLIENT && (!_done || !_initSent)) || (_role == Role.SERVER && !_outputComplete);
+ return _role == null || (_role == Role.CLIENT && (!_done || !_initSent))
+ || (_role == Role.SERVER && !_outputComplete);
}
@Override
public int capacity()
{
- if (_tail_closed) return Transport.END_OF_STREAM;
+ if (_tail_closed)
+ return Transport.END_OF_STREAM;
if (isInputInSaslMode())
{
return _inputBuffer.remaining();
@@ -559,7 +597,8 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
@Override
public int position()
{
- if (_tail_closed) return Transport.END_OF_STREAM;
+ if (_tail_closed)
+ return Transport.END_OF_STREAM;
if (isInputInSaslMode())
{
return _inputBuffer.position();
@@ -600,19 +639,22 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
public void close_tail()
{
_tail_closed = true;
- if (isInputInSaslMode()) {
+ if (isInputInSaslMode())
+ {
_head_closed = true;
_underlyingInput.close_tail();
- } else {
+ }
+ else
+ {
_underlyingInput.close_tail();
}
}
private void reallyProcessInput() throws TransportException
{
- if(isInputInSaslMode())
+ if (isInputInSaslMode())
{
- if(_logger.isLoggable(Level.FINER))
+ if (_logger.isLoggable(Level.FINER))
{
_logger.log(Level.FINER, SaslImpl2.this + " about to call input.");
}
@@ -620,9 +662,9 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
_frameParser.input(_inputBuffer);
}
- if(!isInputInSaslMode())
+ if (!isInputInSaslMode())
{
- if(_logger.isLoggable(Level.FINER))
+ if (_logger.isLoggable(Level.FINER))
{
_logger.log(Level.FINER, SaslImpl2.this + " about to call plain input");
}
@@ -704,4 +746,26 @@ public class SaslImpl2 implements Sasl, SaslFrameBody.SaslFrameBodyHandler<Void>
_underlyingOutput.close_head();
}
}
+
+ @Override
+ public String getHostname()
+ {
+ if (_role != null)
+ {
+ checkRole(Role.SERVER);
+ }
+
+ return _hostname;
+ }
+
+ @Override
+ public void setRemoteHostname(String hostname)
+ {
+ if (_role != null)
+ {
+ checkRole(Role.CLIENT);
+ }
+
+ _hostname = hostname;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSession.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSession.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSession.java
index 79d953b..0a510e1 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSession.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportSession.java
@@ -361,7 +361,7 @@ class TransportSession
unsetRemoteChannel();
}
- private void setRemoteIncomingWindow(UnsignedInteger incomingWindow)
+ void setRemoteIncomingWindow(UnsignedInteger incomingWindow)
{
_remoteIncomingWindow = incomingWindow;
}
@@ -371,7 +371,7 @@ class TransportSession
_remoteIncomingWindow = _remoteIncomingWindow.subtract(UnsignedInteger.ONE);
}
- private void setRemoteOutgoingWindow(UnsignedInteger outgoingWindow)
+ void setRemoteOutgoingWindow(UnsignedInteger outgoingWindow)
{
_remoteOutgoingWindow = outgoingWindow;
}
@@ -402,12 +402,13 @@ class TransportSession
}
}
- private void setRemoteNextOutgoingId(UnsignedInteger nextOutgoingId)
+ //Changing visibility temporarily to bridge the code
+ void setRemoteNextOutgoingId(UnsignedInteger nextOutgoingId)
{
_remoteNextOutgoingId = nextOutgoingId;
}
- private void setRemoteNextIncomingId(UnsignedInteger remoteNextIncomingId)
+ void setRemoteNextIncomingId(UnsignedInteger remoteNextIncomingId)
{
_remoteNextIncomingId = remoteNextIncomingId;
}
@@ -508,4 +509,64 @@ class TransportSession
{
_beginSent = true;
}
-}
+
+ int getIncomingDeliveryId()
+ {
+ return _incomingDeliveryId == null ? -1 : _incomingDeliveryId.intValue();
+ }
+
+ UnsignedInteger getIncomingDeliveryIdAsUnsignedInteger()
+ {
+ return _incomingDeliveryId;
+ }
+
+ DeliveryImpl getUnsettledIncomingDeliveryById(UnsignedInteger id)
+ {
+ return _unsettledIncomingDeliveriesById.get(id);
+ }
+
+ void putUnsettledIncomingDelivery(UnsignedInteger id, DeliveryImpl delivery)
+ {
+ _unsettledIncomingDeliveriesById.put(id, delivery);
+ }
+
+ void incrementUnsettledIncomingSize()
+ {
+ _unsettledIncomingSize++;
+ }
+
+ void setIncomingWindowSize(UnsignedInteger size)
+ {
+ _incomingWindowSize = size;
+ }
+
+ void handleDisposition(org.apache.qpid.proton.transport2.Disposition disposition)
+ {
+ UnsignedInteger id = UnsignedInteger.valueOf(disposition.getFirst());
+ UnsignedInteger last = disposition.getLast() == -1 ? id : UnsignedInteger.valueOf(disposition.getLast());
+ final Map<UnsignedInteger, DeliveryImpl> unsettledDeliveries =
+ disposition.getRole() == org.apache.qpid.proton.transport2.Role.RECEIVER ? _unsettledOutgoingDeliveriesById
+ : _unsettledIncomingDeliveriesById;
+
+ while(id.compareTo(last)<=0)
+ {
+ DeliveryImpl delivery = unsettledDeliveries.get(id);
+ if(delivery != null)
+ {
+ if(disposition.getState() != null)
+ {
+ delivery.setRemoteDeliveryState(LegacyTypeHelper.convertToLegacyDeliveryState(disposition.getState()));
+ }
+ if(Boolean.TRUE.equals(disposition.getSettled()))
+ {
+ delivery.setRemoteSettled(true);
+ unsettledDeliveries.remove(id);
+ }
+ delivery.updateWork();
+
+ getSession().getConnection().put(Event.Type.DELIVERY, delivery);
+ }
+ id = id.add(UnsignedInteger.ONE);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/message2/Received.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/message2/Received.java b/proton-j/src/main/java/org/apache/qpid/proton/message2/Received.java
index 7f7945d..e20e746 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/message2/Received.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/message2/Received.java
@@ -84,9 +84,9 @@ public final class Received implements DeliveryState, Encodable
{
case 0:
- received.setSectionOffset((long) l.get(1));
+ received.setSectionOffset((Long) l.get(1));
case 1:
- received.setSectionNumber((int) l.get(0));
+ received.setSectionNumber((Integer) l.get(0));
}
return received;
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java b/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
index 2ce57e9..f0d7119 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
@@ -461,7 +461,7 @@ public class MessengerImpl implements Messenger
StoreEntry entry = _incomingStore.get( null );
if (entry != null)
{
- Message message = Proton.message();
+ Message message = Proton.message2();
message.decode( entry.getEncodedMsg(), 0, entry.getEncodedLength() );
_incomingTracker = new TrackerImpl(TrackerImpl.Type.INCOMING,
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslChallenge.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslChallenge.java b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslChallenge.java
index 7240895..e37a0aa 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslChallenge.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslChallenge.java
@@ -28,11 +28,11 @@ import org.apache.qpid.proton.codec2.DescribedTypeFactory;
import org.apache.qpid.proton.codec2.Encodable;
import org.apache.qpid.proton.codec2.Encoder;
-public final class SaslChallenge implements Encodable
+public final class SaslChallenge implements Encodable, SaslBody
{
- public final static long DESCRIPTOR_LONG = 0x0000000000000042L;
+ public final static long CODE = 0x0000000000000042L;
- public final static String DESCRIPTOR_STRING = "amqp:sasl-challenge:list";
+ public final static String DESCRIPTOR = "amqp:sasl-challenge:list";
public final static Factory FACTORY = new Factory();
@@ -57,7 +57,7 @@ public final class SaslChallenge implements Encodable
public void encode(Encoder encoder)
{
encoder.putDescriptor();
- encoder.putUlong(DESCRIPTOR_LONG);
+ encoder.putUlong(CODE);
encoder.putList();
encoder.putBinary(_challenge, 0, _challenge.length);
encoder.end();
@@ -85,4 +85,16 @@ public final class SaslChallenge implements Encodable
{
return "SaslChallenge{" + "challenge=" + _challenge + '}';
}
+
+ @Override
+ public long getCode()
+ {
+ return CODE;
+ }
+
+ @Override
+ public String getDescriptor()
+ {
+ return DESCRIPTOR;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslInit.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslInit.java b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslInit.java
index b0facf9..5292d12 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslInit.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslInit.java
@@ -28,11 +28,11 @@ import org.apache.qpid.proton.codec2.DescribedTypeFactory;
import org.apache.qpid.proton.codec2.Encodable;
import org.apache.qpid.proton.codec2.Encoder;
-public final class SaslInit implements Encodable
+public final class SaslInit implements Encodable, SaslBody
{
- public final static long DESCRIPTOR_LONG = 0x0000000000000042L;
+ public final static long CODE = 0x0000000000000042L;
- public final static String DESCRIPTOR_STRING = "amqp:sasl-challenge:list";
+ public final static String DESCRIPTOR = "amqp:sasl-challenge:list";
public final static Factory FACTORY = new Factory();
@@ -81,7 +81,7 @@ public final class SaslInit implements Encodable
public void encode(Encoder encoder)
{
encoder.putDescriptor();
- encoder.putUlong(DESCRIPTOR_LONG);
+ encoder.putUlong(CODE);
encoder.putList();
encoder.putSymbol(_mechanism);
encoder.putBinary(_initialResponse, 0, _initialResponse.length);
@@ -121,4 +121,16 @@ public final class SaslInit implements Encodable
", hostname='" + _hostname + '\'' +
'}';
}
+
+ @Override
+ public long getCode()
+ {
+ return CODE;
+ }
+
+ @Override
+ public String getDescriptor()
+ {
+ return DESCRIPTOR;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslMechanisms.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslMechanisms.java b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslMechanisms.java
index 60451d7..e67e597 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslMechanisms.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslMechanisms.java
@@ -30,11 +30,11 @@ import org.apache.qpid.proton.codec2.Encodable;
import org.apache.qpid.proton.codec2.Encoder;
import org.apache.qpid.proton.codec2.Type;
-public final class SaslMechanisms implements Encodable
+public final class SaslMechanisms implements Encodable, SaslBody
{
- public final static long DESCRIPTOR_LONG = 0x0000000000000040L;
+ public final static long CODE = 0x0000000000000040L;
- public final static String DESCRIPTOR_STRING = "amqp:sasl-mechanisms:list";
+ public final static String DESCRIPTOR = "amqp:sasl-mechanisms:list";
public final static Factory FACTORY = new Factory();
@@ -59,7 +59,7 @@ public final class SaslMechanisms implements Encodable
public void encode(Encoder encoder)
{
encoder.putDescriptor();
- encoder.putUlong(DESCRIPTOR_LONG);
+ encoder.putUlong(CODE);
encoder.putList();
encoder.putArray(Type.SYMBOL);
for (String mech : _saslServerMechanisms)
@@ -102,4 +102,16 @@ public final class SaslMechanisms implements Encodable
return "SaslMechanisms{" + "saslServerMechanisms="
+ (_saslServerMechanisms == null ? null : Arrays.asList(_saslServerMechanisms)) + '}';
}
+
+ @Override
+ public long getCode()
+ {
+ return CODE;
+ }
+
+ @Override
+ public String getDescriptor()
+ {
+ return DESCRIPTOR;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslOutcome.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslOutcome.java b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslOutcome.java
index cebb66c..010ad1f 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslOutcome.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslOutcome.java
@@ -28,11 +28,11 @@ import org.apache.qpid.proton.codec2.DescribedTypeFactory;
import org.apache.qpid.proton.codec2.Encodable;
import org.apache.qpid.proton.codec2.Encoder;
-public final class SaslOutcome implements Encodable
+public final class SaslOutcome implements Encodable, SaslBody
{
- public final static long DESCRIPTOR_LONG = 0x0000000000000044L;
+ public final static long CODE = 0x0000000000000044L;
- public final static String DESCRIPTOR_STRING = "amqp:sasl-saslOutcome:list";
+ public final static String DESCRIPTOR = "amqp:sasl-saslOutcome:list";
public final static Factory FACTORY = new Factory();
@@ -40,12 +40,12 @@ public final class SaslOutcome implements Encodable
private byte[] _additionalData;
- public SaslCode getCode()
+ public SaslCode getSaslCode()
{
return _code;
}
- public void setCode(SaslCode code)
+ public void setSaslCode(SaslCode code)
{
if (code == null)
{
@@ -69,7 +69,7 @@ public final class SaslOutcome implements Encodable
public void encode(Encoder encoder)
{
encoder.putDescriptor();
- encoder.putUlong(DESCRIPTOR_LONG);
+ encoder.putUlong(CODE);
encoder.putList();
encoder.putUbyte(_code.getValue());
if (_additionalData != null)
@@ -98,7 +98,7 @@ public final class SaslOutcome implements Encodable
case 0:
saslOutcome.setAdditionalData( (byte[]) l.get( 1 ) );
case 1:
- saslOutcome.setCode(SaslCode.valueOf((Byte)l.get(0)));
+ saslOutcome.setSaslCode(SaslCode.valueOf((Byte)l.get(0)));
}
@@ -114,4 +114,16 @@ public final class SaslOutcome implements Encodable
", _additionalData=" + _additionalData +
'}';
}
+
+ @Override
+ public long getCode()
+ {
+ return CODE;
+ }
+
+ @Override
+ public String getDescriptor()
+ {
+ return DESCRIPTOR;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0208b9e8/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslResponse.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslResponse.java b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslResponse.java
index 5d8ff15..0831d65 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslResponse.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/security2/SaslResponse.java
@@ -28,11 +28,11 @@ import org.apache.qpid.proton.codec2.DescribedTypeFactory;
import org.apache.qpid.proton.codec2.Encodable;
import org.apache.qpid.proton.codec2.Encoder;
-public final class SaslResponse implements Encodable
+public final class SaslResponse implements Encodable, SaslBody
{
- public final static long DESCRIPTOR_LONG = 0x0000000000000043L;
+ public final static long CODE = 0x0000000000000043L;
- public final static String DESCRIPTOR_STRING = "amqp:sasl-response:list";
+ public final static String DESCRIPTOR = "amqp:sasl-response:list";
public final static Factory FACTORY = new Factory();
@@ -57,7 +57,7 @@ public final class SaslResponse implements Encodable
public void encode(Encoder encoder)
{
encoder.putDescriptor();
- encoder.putUlong(DESCRIPTOR_LONG);
+ encoder.putUlong(CODE);
encoder.putList();
encoder.putBinary(_response, 0, _response.length);
encoder.end();
@@ -85,4 +85,16 @@ public final class SaslResponse implements Encodable
{
return "SaslResponse{response=" + _response + '}';
}
+
+ @Override
+ public long getCode()
+ {
+ return CODE;
+ }
+
+ @Override
+ public String getDescriptor()
+ {
+ return DESCRIPTOR;
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org