use of org.apache.directory.api.asn1.ber.tlv.BerValue in project directory-ldap-api by apache.
the class StoredProcedureTest method testDecodeStoredProcedureNParams.
@Test
public void testDecodeStoredProcedureNParams() throws IntegerDecoderException {
Asn1Decoder storedProcedureDecoder = new StoredProcedureDecoder();
ByteBuffer stream = ByteBuffer.allocate(0x44);
stream.put(new byte[] { 0x30, 0x42, 0x04, 0x04, 'J', 'a', 'v', 'a', 0x04, 0x07, 'e', 'x', 'e', 'c', 'u', 't', 'e', 0x30, 0x31, 0x30, 0x08, 0x04, 0x03, 'i', 'n', 't', 0x04, 0x01, 0x01, 0x30, 0x0F, 0x04, 0x07, 'b', 'o', 'o', 'l', 'e', 'a', 'n', 0x04, 0x04, 't', 'r', 'u', 'e', 0x30, 0x14, 0x04, 0x06, 'S', 't', 'r', 'i', 'n', 'g', 0x04, 0x0A, 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '3' });
String decodedPdu = Strings.dumpBytes(stream.array());
stream.flip();
// Allocate a StoredProcedure Container
StoredProcedureContainer storedProcedureContainer = new StoredProcedureContainer();
// Decode a StoredProcedure message
try {
storedProcedureDecoder.decode(stream, storedProcedureContainer);
} catch (DecoderException de) {
de.printStackTrace();
fail(de.getMessage());
}
StoredProcedureRequestDecorator storedProcedure = storedProcedureContainer.getStoredProcedure();
assertEquals("Java", storedProcedure.getLanguage());
assertEquals("execute", storedProcedure.getProcedureSpecification());
assertEquals(3, storedProcedure.size());
assertEquals("int", Strings.utf8ToString((byte[]) storedProcedure.getParameterType(0)));
assertEquals(1, IntegerDecoder.parse(new BerValue((byte[]) storedProcedure.getParameterValue(0))));
assertEquals("boolean", Strings.utf8ToString((byte[]) storedProcedure.getParameterType(1)));
assertEquals("true", Strings.utf8ToString((byte[]) storedProcedure.getParameterValue(1)));
assertEquals("String", Strings.utf8ToString((byte[]) storedProcedure.getParameterType(2)));
assertEquals("parameter3", Strings.utf8ToString((byte[]) storedProcedure.getParameterValue(2)));
// Check the encoding
try {
ByteBuffer bb = storedProcedure.encodeInternal();
String encodedPdu = Strings.dumpBytes(bb.array());
assertEquals(encodedPdu, decodedPdu);
} catch (EncoderException ee) {
ee.printStackTrace();
fail(ee.getMessage());
}
}
use of org.apache.directory.api.asn1.ber.tlv.BerValue in project directory-ldap-api by apache.
the class ApiAsn1BerOsgiTest method useBundleClasses.
@Override
protected void useBundleClasses() throws Exception {
new CheckNotNullLength<Asn1Container>();
new Asn1Decoder().getMaxLengthLength();
new BerValue().init(5);
new TLV(1).getValue();
}
use of org.apache.directory.api.asn1.ber.tlv.BerValue in project directory-ldap-api by apache.
the class AbstractReadOctetString method action.
/**
* {@inheritDoc}
*/
@Override
public final void action(C container) throws DecoderException {
TLV tlv = container.getCurrentTLV();
// The Length should not be null
if ((tlv.getLength() == 0) && (!canBeNull)) {
String msg = I18n.err(I18n.ERR_01101_NULL_LENGTH);
LOG.error(msg);
// This will generate a PROTOCOL_ERROR
throw new DecoderException(msg);
}
BerValue value = tlv.getValue();
// The data should not be null
if ((value.getData() == null) && (!canBeNull)) {
String msg = I18n.err(I18n.ERR_01101_NULL_LENGTH);
LOG.error(msg);
// This will generate a PROTOCOL_ERROR
throw new DecoderException(msg);
}
setOctetString(value.getData(), container);
}
Aggregations