messagecontextselfmanageddatatest.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 1,580 行 · 第 1/4 页
JAVA
1,580 行
serializecallcount + "]";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
String storedTestData =
(String) _mc.getSelfManagedData(this.getClass(), Integer.toString(id));
if (storedTestData == null) {
log.debug(title + ": No self managed data to serialize");
return null;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeUTF(storedTestData);
oos.close();
int baos_size = baos.size();
baos.close();
log.debug(title + ": saved self managed data string length [" +
storedTestData.length() + "]");
log.debug(title +
": saved self managed data byte array output stream (UTF) length [" +
baos_size + "]");
return baos;
}
public int getDeserializecallcount() {
return deserializecallcount;
}
public int getSerializecallcount() {
return serializecallcount;
}
}
/*
* TempHandler03 sets binary data, saves it (via the serializeSelfManagedData method
* called by the MessageContext object when saved in this handler's invoke()),
*
*/
public class TempHandler03 extends AbstractHandler implements SelfManagedDataManager {
private int id = -2;
private int serializecallcount = 0;
private int deserializecallcount = 0;
public TempHandler03() {
id = -1;
}
public TempHandler03(int id) {
this.id = id;
}
public int getID() {
return this.id;
}
public String getName() {
return new String(Integer.toString(id));
}
public Object getTestDataFromMessageContext(MessageContext _mc) {
return _mc.getSelfManagedData(this.getClass(), Integer.toString(id));
}
/*
* (non-Javadoc)
* @see org.apache.axis2.engine.Handler#invoke(org.apache.axis2.context.MessageContext)
*
* This invoke() method will test several things:
* 1. verify that serializeSelfManagedData is actually called when saving the MessageContext object
* 2. verify that deserializeSelfManagedData is actually called when restoring the MessageContext object
* 3. verify that any SelfManagedData stored in the MessageContext is properly saved/restored (via serializeSelfManagedData/deserializeSelfManagedData)
*/
public InvocationResponse invoke(MessageContext _mc) throws AxisFault {
String desc = "TempHandler03[id=" + id + "].invoke()";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
MessageContext msgContext2 = null; // this will be the restored one
// add the byte [] of data
_mc.setSelfManagedData(this.getClass(), Integer.toString(id), testData03);
log.debug(title + ": Setting self managed data using key [" +
Integer.toString(id) + "]");
msgContext2 = saveAndRestore(_mc, "TempHandler03_", desc);
boolean result = (msgContext2 != null);
assertTrue(result);
invokecallcount++;
log.debug(title + ": Completed");
return InvocationResponse.CONTINUE;
}
public void deserializeSelfManagedData(ByteArrayInputStream data, MessageContext _mc)
throws IOException {
boolean isOK = true;
deserializecallcount++;
String desc = "TempHandler03[id=" + id + "].deserializeSelfManagedData() count [" +
deserializecallcount + "]";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
int expected = testData03.length;
byte [] tmp = new byte [expected];
boolean keepGoing = true;
int index = 0;
while (keepGoing) {
int tmpdata = data.read();
if (tmpdata != -1) {
Integer value = new Integer(tmpdata);
tmp[index] = value.byteValue();
index++;
if (index > expected) {
isOK = false;
assertTrue(isOK);
}
} else {
keepGoing = false;
}
}
isOK = isEquals(tmp, testData03);
assertTrue(isOK);
_mc.setSelfManagedData(this.getClass(), Integer.toString(id), tmp);
}
public void restoreTransientData(MessageContext _mc) {
// not necessary to test
}
public ByteArrayOutputStream serializeSelfManagedData(MessageContext _mc)
throws IOException {
serializecallcount++;
String desc = "TempHandler03[id=" + id + "].serializeSelfManagedData() count [" +
serializecallcount + "]";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
byte [] tmp = (byte []) _mc.getSelfManagedData(this.getClass(), Integer.toString(id));
if (tmp == null) {
log.debug(title + ": No self managed data to serialize");
return null;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(tmp, 0, tmp.length);
int baos_size = baos.size();
baos.close();
log.debug(title + ": saved self managed data byte [] length [" + tmp.length + "]");
log.debug(title +
": saved self managed data byte array output stream length [" + baos_size +
"]");
return baos;
}
public int getDeserializecallcout() {
return deserializecallcount;
}
public int getSerializecallcount() {
return serializecallcount;
}
}
/*
* TempHandler04 sets binary data, saves it (via the serializeSelfManagedData method
* called by the MessageContext object when saved in this handler's invoke()),
*
*/
public class TempHandler04 extends AbstractHandler implements SelfManagedDataManager {
private int id = -2;
private int serializecallcount = 0;
private int deserializecallcount = 0;
public TempHandler04() {
id = -1;
}
public TempHandler04(int id) {
this.id = id;
}
public int getID() {
return this.id;
}
public String getName() {
return new String(Integer.toString(id));
}
public Object getTestDataFromMessageContext(MessageContext _mc) {
return _mc.getSelfManagedData(this.getClass(), Integer.toString(id));
}
/*
* (non-Javadoc)
* @see org.apache.axis2.engine.Handler#invoke(org.apache.axis2.context.MessageContext)
*
* This invoke() method will test several things:
* 1. verify that serializeSelfManagedData is actually called when saving the MessageContext object
* 2. verify that deserializeSelfManagedData is actually called when restoring the MessageContext object
* 3. verify that any SelfManagedData stored in the MessageContext is properly saved/restored (via serializeSelfManagedData/deserializeSelfManagedData)
*/
public InvocationResponse invoke(MessageContext _mc) throws AxisFault {
String desc = "TempHandler04[id=" + id + "].invoke()";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
MessageContext msgContext2 = null; // this will be the restored one
// add the byte [] of data
_mc.setSelfManagedData(this.getClass(), Integer.toString(id), testData04);
log.debug(title + ": Setting self managed data using key [" +
Integer.toString(id) + "]");
msgContext2 = saveAndRestore(_mc, "TempHandler04_", desc);
boolean result = (msgContext2 != null);
assertTrue(result);
invokecallcount++;
log.debug(title + ": Completed");
return InvocationResponse.CONTINUE;
}
public void deserializeSelfManagedData(ByteArrayInputStream data, MessageContext _mc)
throws IOException {
boolean isOK = true;
deserializecallcount++;
String desc = "TempHandler04[id=" + id + "].deserializeSelfManagedData() count [" +
deserializecallcount + "]";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
int expected = testData04.length;
long [] tmp = new long [expected];
ObjectInputStream ois = new ObjectInputStream(data);
boolean keepGoing = true;
int index = 0;
int sizeWritten = ois.readInt();
if (sizeWritten > 0) {
while (keepGoing) {
try {
long tmpdata = ois.readLong();
tmp[index] = tmpdata;
index++;
if (index > expected) {
isOK = false;
assertTrue(isOK);
}
}
catch (Exception exc) {
keepGoing = false;
}
}
isOK = isEquals(tmp, testData04);
assertTrue(isOK);
_mc.setSelfManagedData(this.getClass(), Integer.toString(id), tmp);
}
}
public void restoreTransientData(MessageContext _mc) {
// not necessary to test
}
public ByteArrayOutputStream serializeSelfManagedData(MessageContext _mc)
throws IOException {
serializecallcount++;
String desc = "TempHandler04[id=" + id + "].serializeSelfManagedData() count [" +
serializecallcount + "]";
String title = "MessageContextSelfManagedDataTest::" + desc;
log.debug(title);
long [] tmp = (long []) _mc.getSelfManagedData(this.getClass(), Integer.toString(id));
if (tmp == null) {
log.debug(title + ": No self managed data to serialize");
return null;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
int size = tmp.length;
oos.writeInt(size);
for (int i = 0; i < size; i++) {
oos.writeLong(tmp[i]);
}
oos.close();
int baos_size = baos.size();
baos.close();
log.debug(title + ": saved self managed data byte [] length [" + tmp.length + "]");
log.debug(title +
": saved self managed data byte array output stream length [" + baos_size +
"]");
return baos;
}
public int getDeserializecallcount() {
return deserializecallcount;
}
public int getSerializecallcount() {
return serializecallcount;
}
}
/*
* compares the two byte arrays to see if they are equal
*/
private boolean isEquals(byte [] b1, byte [] b2) {
int size1 = b1.length;
int size2 = b2.length;
if (size1 != size2) {
return false;
}
for (int i = 0; i < size1; i++) {
if (b1[i] != b2[i]) {
return false;
}
}
return true;
}
/*
* compares the two long arrays to see if they are equal
*/
private boolean isEquals(long [] L1, long [] L2) {
int size1 = L1.length;
int size2 = L2.length;
if (size1 != size2) {
return false;
}
for (int i = 0; i < size1; i++) {
if (L1[i] != L2[i]) {
return false;
}
}
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?