Skip to content

Instantly share code, notes, and snippets.

@ohac
Created December 16, 2008 08:48
Show Gist options
  • Save ohac/36387 to your computer and use it in GitHub Desktop.
Save ohac/36387 to your computer and use it in GitHub Desktop.
jsonic-1.1/src/net/arnx/jsonic$ LANG= svn diff
Index: JSON.java
===================================================================
--- JSON.java (revision 787)
+++ JSON.java (working copy)
@@ -2074,10 +2074,18 @@
return sb.toString();
}
+ private boolean isScala(Class<?> c) {
+ for (Method m : c.getMethods()) {
+ if (m.getName() == "$tag") { return true; }
+ }
+ return false;
+ }
+
private Map<String, Member> getGetProperties(Class<?> c) {
Map<String, Member> props = new HashMap<String, Member>();
boolean access = tryAccess(c);
+ boolean scala = isScala(c);
for (Field f : c.getFields()) {
if (ignore(c, f)) continue;
@@ -2102,6 +2110,11 @@
&& m.getParameterTypes().length == 0
&& m.getReturnType().equals(boolean.class)) {
start = 2;
+ } else if (scala
+ && name.charAt(0) != '$'
+ && m.getParameterTypes().length == 0
+ && !m.getReturnType().equals(void.class)) {
+ start = 0;
} else {
continue;
}
@@ -2121,6 +2134,7 @@
Map<String, Member> props = new HashMap<String, Member>();
boolean access = tryAccess(c);
+ boolean scala = isScala(c);
for (Field f : c.getFields()) {
if (ignore(c, f)) continue;
@@ -2139,6 +2153,13 @@
&& m.getParameterTypes().length == 1
&& m.getReturnType().equals(void.class)) {
start = 3;
+ } else if (scala
+ && name.endsWith("_$eq")
+ && name.length() > 4
+ && m.getParameterTypes().length == 1
+ && m.getReturnType().equals(void.class)) {
+ name = name.substring(0, name.length() - 4);
+ start = 0;
} else {
continue;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment