Skip to content

Commit 8704d33

Browse files
author
jossonsmith
committed
Add Simple RPC support:
1. Add Clazz#registerSerializableFields 2. Add Base64 encoder and decoder in Encoding.js
1 parent 68c2472 commit 8704d33

File tree

3 files changed

+90
-2
lines changed

3 files changed

+90
-2
lines changed

sources/net.sf.j2s.java.core/src/java/lang/ClassExt.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,25 @@ Clazz.prepareFields = function (clazz, fieldsFun) {
371371
clazz.con$truct.index = 0;
372372
};
373373

374+
/*
375+
* Serialize those public or protected fields in class
376+
* net.sf.j2s.ajax.SimpleSerializable.
377+
*/
378+
/* protected */
379+
Clazz.registerSerializableFields = function (clazz) {
380+
var args = arguments;
381+
var length = args.length;
382+
if (clazz.declared$Fields == null) {
383+
clazz.declared$Fields = new Array ();
384+
}
385+
if (length > 0 && length % 2 == 1) {
386+
var fs = clazz.declared$Fields;
387+
for (var i = 1; i <= (length - 1) / 2; i++) {
388+
fs[fs.length] = { name : args[i + i - 1], type : args[i + i] };
389+
}
390+
}
391+
};
392+
374393
/*
375394
* Get the caller method for those methods that are wrapped by
376395
* Clazz.searchAndExecuteMethod.
@@ -676,7 +695,7 @@ Thread.currentThread = Thread.prototype.currentThread = function () {
676695
};
677696

678697
// Compress the common public API method in shorter name
679-
$_L=Clazz.load;$_W=Clazz.declareAnonymous;$_T=Clazz.declareType;$_J=Clazz.declarePackage;$_C=Clazz.decorateAsClass;$_Z=Clazz.instantialize;$_I=Clazz.declareInterface;$_D=Clazz.isClassDefined;$_H=Clazz.pu$h;$_P=Clazz.p0p;$_B=Clazz.prepareCallback;$_N=Clazz.innerTypeInstance;$_K=Clazz.makeConstructor;$_U=Clazz.superCall;$_R=Clazz.superConstructor;$_M=Clazz.defineMethod;$_V=Clazz.overrideMethod;$_S=Clazz.defineStatics;$_E=Clazz.defineEnumConstant;$_F=Clazz.cloneFinals;$_Y=Clazz.prepareFields;$_A=Clazz.newArray;$_O=Clazz.instanceOf;$_G=Clazz.inheritArgs;$_X=Clazz.checkPrivateMethod;$_Q=Clazz.makeFunction;
698+
$_L=Clazz.load;$_W=Clazz.declareAnonymous;$_T=Clazz.declareType;$_J=Clazz.declarePackage;$_C=Clazz.decorateAsClass;$_Z=Clazz.instantialize;$_I=Clazz.declareInterface;$_D=Clazz.isClassDefined;$_H=Clazz.pu$h;$_P=Clazz.p0p;$_B=Clazz.prepareCallback;$_N=Clazz.innerTypeInstance;$_K=Clazz.makeConstructor;$_U=Clazz.superCall;$_R=Clazz.superConstructor;$_M=Clazz.defineMethod;$_V=Clazz.overrideMethod;$_S=Clazz.defineStatics;$_E=Clazz.defineEnumConstant;$_F=Clazz.cloneFinals;$_Y=Clazz.prepareFields;$_A=Clazz.newArray;$_O=Clazz.instanceOf;$_G=Clazz.inheritArgs;$_X=Clazz.checkPrivateMethod;$_Q=Clazz.makeFunction;$_s=Clazz.registerSerializableFields;
680699

681700

682701
var reflect = Clazz.declarePackage ("java.lang.reflect");

sources/net.sf.j2s.java.core/src/java/lang/Encoding.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,72 @@ Encoding.convert2UTF8 = function (str) {
7979
}
8080
return arrs.join ('');
8181
};
82+
Encoding.base64Chars = new Array(
83+
'A','B','C','D','E','F','G','H',
84+
'I','J','K','L','M','N','O','P',
85+
'Q','R','S','T','U','V','W','X',
86+
'Y','Z','a','b','c','d','e','f',
87+
'g','h','i','j','k','l','m','n',
88+
'o','p','q','r','s','t','u','v',
89+
'w','x','y','z','0','1','2','3',
90+
'4','5','6','7','8','9','+','/'
91+
);
92+
Encoding.encodeBase64 = function (str) {
93+
if (str == null || str.length == 0) return str;
94+
var b64 = Encoding.base64Chars;
95+
var length = str.length;
96+
var index = 0;
97+
var buf = [];
98+
var c0, c1, c2;
99+
var c = 0;
100+
while (index < length && c++ < 60000) {
101+
c0 = str.charCodeAt (index++);
102+
buf[buf.length] = b64[c0 >> 2];
103+
if (index < length) {
104+
c1 = str.charCodeAt (index++);
105+
buf[buf.length] = b64[((c0 << 4 ) & 0x30) | (c1 >> 4)];
106+
if (index < length){
107+
c2 = str.charCodeAt (index++);
108+
buf[buf.length] = b64[((c1 << 2) & 0x3c) | (c1 >> 6)];
109+
buf[buf.length] = b64[c2 & 0x3F];
110+
} else {
111+
buf[buf.length] = b64[((c1 << 2) & 0x3c)];
112+
buf[buf.length] = '=';
113+
}
114+
} else {
115+
buf[buf.length] = b64[(c0 << 4) & 0x30];
116+
buf[buf.length] = '=';
117+
buf[buf.length] = '=';
118+
}
119+
}
120+
return buf.join ('');
121+
};
122+
Encoding.decodeBase64 = function (str) {
123+
if (str == null || str.length == 0) return str;
124+
var b64 = Encoding.base64Chars;
125+
var xb64 = Encoding.xBase64Chars;
126+
if (Encoding.xBase64Chars == null) {
127+
xb64 = new Object();
128+
for (var i = 0; i < b64.length; i++){
129+
xb64[b64[i]] = i;
130+
}
131+
Encoding.xBase64Chars = xb64;
132+
}
133+
var length = str.length;
134+
var index = 0;
135+
var buf = [];
136+
var c0, c1, c2, c3;
137+
var c = 0;
138+
while (index < length && c++ < 60000) {
139+
c0 = xb64[str.charAt (index++)];
140+
c1 = xb64[str.charAt (index++)];
141+
c2 = xb64[str.charAt (index++)];
142+
c3 = xb64[str.charAt (index++)];
143+
if (c2 == null) c2 = 0;
144+
if (c3 == null) c3 = 0;
145+
buf[buf.length] = String.fromCharCode(((c0 << 2) & 0xff) | c1 >> 4);
146+
buf[buf.length] = String.fromCharCode(((c1 << 4) & 0xff) | c2 >> 2);
147+
buf[buf.length] = String.fromCharCode(((c2 << 6) & 0xff) | c3);
148+
}
149+
return buf.join ('');
150+
};

sources/net.sf.j2s.java.core/src/java/package.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(function () {
22
ClazzLoader.registerPackages ("java", [
3-
"io", "lang", "lang.reflect", "util", "net"]);
3+
"io", "lang", "lang.reflect", "util", "net", "text"]);
44

55
window["reflect"] = java.lang.reflect;
66

0 commit comments

Comments
 (0)