openamf/src/java/org/openamf/util OpenAMFUtils.java,1.17,1.18
[email protected] Mon, 12 Jan 2004 23:07:21 -0800
| Newsgroups | gmane.comp.java.openamf.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/openamf/openamf/src/java/org/openamf/util
In directory sc8-pr-cvs1:/tmp/cvs-serv31014/src/java/org/openamf/util
Modified Files:
OpenAMFUtils.java
Log Message:
changed the implementation of decodeParameter.
This change is intended to address the loitering objects
that were previously reported on the openamf mailing list.
A user reported an OutOfMemoryError and it appears
that the decodeParameter implementation was
unintentionally causing objects to be strongly referenced
for an indefinite amount of time.
This fix should be reviewed by the CarbonFive ASTranslator team.
Index: OpenAMFUtils.java
===================================================================
RCS file: /cvsroot/openamf/openamf/src/java/org/openamf/util/OpenAMFUtils.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** OpenAMFUtils.java 8 Dec 2003 04:16:48 -0000 1.17
--- OpenAMFUtils.java 13 Jan 2004 07:07:19 -0000 1.18
***************
*** 14,20 ****
import org.apache.commons.logging.LogFactory;
! import com.carbonfive.flash.decoder.ActionScriptDecoder;
! import com.carbonfive.flash.decoder.CachingDecoder;
! import com.carbonfive.flash.decoder.DecoderFactory;
import flashgateway.io.ASObject;
--- 14,18 ----
import org.apache.commons.logging.LogFactory;
! import com.carbonfive.flash.ASTranslator;
import flashgateway.io.ASObject;
***************
*** 36,50 ****
Object parameter,
Class parameterType) {
log.debug(
"Decoding parameter: " + parameter + " to type: " + parameterType);
if (parameter == null) {
return null;
}
! if (parameterType.equals(java.sql.Date.class)
! && parameter instanceof java.util.Date) {
! java.util.Date date = (java.util.Date) parameter;
! java.sql.Date sqlDate = new java.sql.Date(date.getTime());
! return sqlDate;
! }
if (ASObject.class.isAssignableFrom(parameterType)
&& parameter instanceof ASObject) {
--- 34,45 ----
Object parameter,
Class parameterType) {
+
log.debug(
"Decoding parameter: " + parameter + " to type: " + parameterType);
+
if (parameter == null) {
return null;
}
!
if (ASObject.class.isAssignableFrom(parameterType)
&& parameter instanceof ASObject) {
***************
*** 54,59 ****
}
! boolean setType = false;
! DecoderFactory decoderFactory = DecoderFactory.getInstance();
if (parameter instanceof ASObject
&& ((ASObject) parameter).getType() == null) {
--- 49,53 ----
}
!
if (parameter instanceof ASObject
&& ((ASObject) parameter).getType() == null) {
***************
*** 62,87 ****
//don't set type
} else {
- setType = true;
((ASObject) parameter).setType(parameterType.getName());
}
}
! ActionScriptDecoder decoder =
! decoderFactory.getDecoder(parameter, parameterType);
! log.debug(
! "decoder: "
! + ((CachingDecoder) decoder)
! .getNextDecoder()
! .getClass()
! .getName());
! Object decodedObject = decoder.decodeObject(parameter, parameterType);
!
! if (!setType
! && decodedObject == null
! && parameter instanceof ASObject) {
! ((ASObject) parameter).setType(parameterType.getName());
! decodedObject = decoder.decodeObject(parameter, parameterType);
! }
log.debug("decodedObject: " + decodedObject);
return decodedObject;
}
--- 56,69 ----
//don't set type
} else {
((ASObject) parameter).setType(parameterType.getName());
}
}
! ASTranslator translator = new ASTranslator();
!
! Object decodedObject = translator.fromActionScript(parameter);
!
log.debug("decodedObject: " + decodedObject);
+
return decodedObject;
}
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html