From 7477f5045d9f4682c59e1b4fe869d3b081c62b2a Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Wed, 17 Feb 2016 14:00:39 -0800 Subject: [PATCH 1/3] Add 'default' modifier for methods --- .../src/main/java/com/sun/codemodel/JMod.java | 1 + .../main/java/com/sun/codemodel/JMods.java | 7 +++++- .../codemodel/tests/DefaultMethodTest.java | 22 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 codemodel/src/test/java/com/sun/codemodel/tests/DefaultMethodTest.java diff --git a/codemodel/src/main/java/com/sun/codemodel/JMod.java b/codemodel/src/main/java/com/sun/codemodel/JMod.java index 300d41e..b1cd8aa 100644 --- a/codemodel/src/main/java/com/sun/codemodel/JMod.java +++ b/codemodel/src/main/java/com/sun/codemodel/JMod.java @@ -56,4 +56,5 @@ public final class JMod { public final static int SYNCHRONIZED = 0x080; public final static int TRANSIENT = 0x100; public final static int VOLATILE = 0x200; + public final static int DEFAULT = 0x400; } diff --git a/codemodel/src/main/java/com/sun/codemodel/JMods.java b/codemodel/src/main/java/com/sun/codemodel/JMods.java index b1e9064..cdcd8d3 100644 --- a/codemodel/src/main/java/com/sun/codemodel/JMods.java +++ b/codemodel/src/main/java/com/sun/codemodel/JMods.java @@ -55,7 +55,7 @@ public class JMods implements JGenerable { | JMod.STATIC | JMod.FINAL | JMod.TRANSIENT | JMod.VOLATILE); private static int METHOD = (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED | JMod.FINAL - | JMod.ABSTRACT | JMod.STATIC | JMod.NATIVE | JMod.SYNCHRONIZED); + | JMod.ABSTRACT | JMod.STATIC | JMod.NATIVE | JMod.SYNCHRONIZED | JMod.DEFAULT); private static int CLASS = (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED | JMod.STATIC | JMod.FINAL | JMod.ABSTRACT); private static int INTERFACE = JMod.PUBLIC; @@ -145,6 +145,10 @@ public void setFinal(boolean newValue) { setFlag(JMod.FINAL, newValue); } + public void setDefault(boolean newValue) { + setFlag(JMod.DEFAULT, newValue); + } + private void setFlag(int bit, boolean newValue) { mods = (mods & ~bit) | (newValue ? bit : 0); } @@ -160,6 +164,7 @@ public void generate(JFormatter f) { if ((mods & JMod.SYNCHRONIZED) != 0) f.p("synchronized"); if ((mods & JMod.TRANSIENT) != 0) f.p("transient"); if ((mods & JMod.VOLATILE) != 0) f.p("volatile"); + if ((mods & JMod.DEFAULT) != 0) f.p("default"); } @Override diff --git a/codemodel/src/test/java/com/sun/codemodel/tests/DefaultMethodTest.java b/codemodel/src/test/java/com/sun/codemodel/tests/DefaultMethodTest.java new file mode 100644 index 0000000..3dddb8e --- /dev/null +++ b/codemodel/src/test/java/com/sun/codemodel/tests/DefaultMethodTest.java @@ -0,0 +1,22 @@ +package com.sun.codemodel.tests; + +import org.junit.Test; + +import com.sun.codemodel.ClassType; +import com.sun.codemodel.JCodeModel; +import com.sun.codemodel.JDefinedClass; +import com.sun.codemodel.JMod; +import com.sun.codemodel.writer.SingleStreamCodeWriter; + +public class DefaultMethodTest { + + @Test + public void defaultMethodOnAnInterface() throws Exception { + JCodeModel cm = new JCodeModel(); + JDefinedClass cls = cm._class(JMod.PUBLIC, "TestInterface", ClassType.INTERFACE); + + cls.method(JMod.DEFAULT, cm.VOID, "defaultFoo"); + + cm.build(new SingleStreamCodeWriter(System.out)); + } +} From eecb509cee044950d11e0725fffc5c9bf25f53d8 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Wed, 17 Feb 2016 14:02:50 -0800 Subject: [PATCH 2/3] Update JMod.java Whitespace. --- codemodel/src/main/java/com/sun/codemodel/JMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codemodel/src/main/java/com/sun/codemodel/JMod.java b/codemodel/src/main/java/com/sun/codemodel/JMod.java index b1cd8aa..cd3615a 100644 --- a/codemodel/src/main/java/com/sun/codemodel/JMod.java +++ b/codemodel/src/main/java/com/sun/codemodel/JMod.java @@ -56,5 +56,5 @@ public final class JMod { public final static int SYNCHRONIZED = 0x080; public final static int TRANSIENT = 0x100; public final static int VOLATILE = 0x200; - public final static int DEFAULT = 0x400; + public final static int DEFAULT = 0x400; } From ed20048b494dd9630fc71d77b2c929f0f89ae9b3 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Wed, 17 Feb 2016 14:03:21 -0800 Subject: [PATCH 3/3] Update JMods.java whitespace --- codemodel/src/main/java/com/sun/codemodel/JMods.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codemodel/src/main/java/com/sun/codemodel/JMods.java b/codemodel/src/main/java/com/sun/codemodel/JMods.java index cdcd8d3..5e337c4 100644 --- a/codemodel/src/main/java/com/sun/codemodel/JMods.java +++ b/codemodel/src/main/java/com/sun/codemodel/JMods.java @@ -164,7 +164,7 @@ public void generate(JFormatter f) { if ((mods & JMod.SYNCHRONIZED) != 0) f.p("synchronized"); if ((mods & JMod.TRANSIENT) != 0) f.p("transient"); if ((mods & JMod.VOLATILE) != 0) f.p("volatile"); - if ((mods & JMod.DEFAULT) != 0) f.p("default"); + if ((mods & JMod.DEFAULT) != 0) f.p("default"); } @Override