Skip to content

Commit

Permalink
Merge branch 'jruby-1_7'
Browse files Browse the repository at this point in the history
* jruby-1_7:
  spec how non-public inner classes currently behave on the Ruby constant level (#933)
  delegate java_send with 1-3 args.length to overloaded versions - less array mangling
  [find-bugs] do no ask for getMethodsForWrite() twice esp. since its synchronized
  [find-bugs] avoid potentially creating the same File instance twice
  [find-bugs] avoid unnecessary calling getRuntime() and getCurrentContext() twice
  [find-bugs] use local map instead of calling the same method again in ScriptingContainer
  [find-bugs] avoid calling same method twice - keep module.getClass(Type) locally
  [find-bugs] avoid string concatenation while using a StringBuilder + guess size
  [find-bugs] avoid using a ternary operator to cast a boolean to true/false
  [find-bugs] inefficient string buffering - avoid passing concatenating string to builder
  [find-bugs] inner private classes can be made static
  [find-bugs] equalsIgnoreCase with "" (empty string) passed
  [find-bugs] avoid some String instances of length == 1 in favor of chars
  [find-bugs] use System.arraycopy instead of manual array-copy (of stack-traces)
  [find-bugs] (private) inner classes that can be mate static
  Fix java_implements for multiple interfaces
  Remove redundant test-jruby-jars (complete tests same stuff).
  Fix jruby versions in antlib/extra.xml.
  [build] use yecht-1.1-SNAPSHOT
  Update to jnr-ffi-2.0.4-SNAPSHOT for #3258.

Conflicts:
	.travis.yml
	antlib/extra.xml
	core/pom.xml
	core/src/main/java/org/jruby/Ruby.java
	core/src/main/java/org/jruby/RubyClassPathVariable.java
	core/src/main/java/org/jruby/RubyDir.java
	core/src/main/java/org/jruby/RubyModule.java
	core/src/main/java/org/jruby/RubyProc.java
	core/src/main/java/org/jruby/java/proxies/JavaProxy.java
	core/src/main/java/org/jruby/javasupport/JavaSupport.java
	core/src/main/java/org/jruby/runtime/ThreadContext.java
	lib/ruby/shared/jruby/compiler/java_class.rb
	spec/java_integration/jrubyc/java/implements_spec.rb
	spec/java_integration/types/retrieval_spec.rb
kares committed Sep 16, 2015
2 parents df012fa + df07868 commit 27e46d8
Showing 4 changed files with 33 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lib/ruby/stdlib/jruby/compiler/java_class.rb
Original file line number Diff line number Diff line change
@@ -374,7 +374,7 @@ def add_interface(ifc)

def interface_string
if @interfaces.size > 0
"implements " + @interfaces.join('.')
"implements " + @interfaces.join(', ')
else
""
end
12 changes: 12 additions & 0 deletions spec/java_integration/fixtures/InnerClasses.java
Original file line number Diff line number Diff line change
@@ -45,4 +45,16 @@ public static class lowerInnerClass5 {
public interface CapsInnerInterface5 {}
public interface lowerInnerInterface5 {}
}

protected static interface ProtectedInner {
public static String VALUE = ProtectedInner.class.getName();
}

static class PackageInner {
protected static String VALUE = PackageInner.class.getName();
}

private static class PrivateInner {
static String VALUE = PrivateInner.class.getName();
}
}
24 changes: 18 additions & 6 deletions spec/java_integration/types/retrieval_spec.rb
Original file line number Diff line number Diff line change
@@ -61,12 +61,12 @@
it "should define constants for constantable classes" do
expect(InnerClasses.constants).to have_strings_or_symbols 'CapsInnerClass'
expect(InnerClasses::CapsInnerClass.value).to eq(1)

expect(InnerClasses::CapsInnerClass.constants).to have_strings_or_symbols "CapsInnerClass2"
expect(InnerClasses::CapsInnerClass::CapsInnerClass2.value).to eq(1)

expect(InnerClasses::CapsInnerClass.constants).to have_strings_or_symbols "CapsInnerInterface2"

expect(InnerClasses::CapsInnerClass.constants).not_to have_strings_or_symbols 'lowerInnerClass2'
expect(InnerClasses::CapsInnerClass.constants).not_to have_strings_or_symbols 'lowerInnerInterface2'

@@ -94,7 +94,7 @@

expect(InnerClasses.lowerInnerClass.methods).to have_strings_or_symbols 'lowerInnerInterface3'
expect(InnerClasses.lowerInnerClass.methods).to have_strings_or_symbols 'lowerInnerClass3'

expect(InnerClasses.lowerInnerClass::lowerInnerClass3.value).to eq(1)
expect(InnerClasses.lowerInnerClass.lowerInnerClass3.value).to eq(1)

@@ -105,14 +105,26 @@
expect(InnerClasses.lowerInnerInterface.constants).to have_strings_or_symbols 'CapsInnerInterface5'

expect(InnerClasses.lowerInnerInterface::CapsInnerClass5.value).to eq(1)

expect(InnerClasses.lowerInnerInterface.methods).to have_strings_or_symbols 'lowerInnerInterface5'
expect(InnerClasses.lowerInnerInterface.methods).to have_strings_or_symbols 'lowerInnerClass5'

expect(InnerClasses.lowerInnerInterface::lowerInnerClass5.value).to eq(1)
expect(InnerClasses.lowerInnerInterface.lowerInnerClass5.value).to eq(1)
end

it "defines constant for public inner classes" do
expect( java.awt.font.TextLayout.constants.map(&:to_sym) ).to include :CaretPolicy
java.awt.font.TextLayout::CaretPolicy
end

it "does not define constants for non-public inner classes" do
constants = InnerClasses.constants.map(&:to_sym)
expect( constants ).to_not include :PackageInner
expect( constants ).to_not include :ProtectedInner
expect( constants ).to_not include :PrivateInner
end

it "raises error importing lower-case names" do
expect do
java_import InnerClasses::lowerInnerClass
4 changes: 2 additions & 2 deletions spec/jrubyc/java/implements_spec.rb
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ def generate(script)
cls.interfaces[0].should == "Runnable"

java = cls.to_s
java.should match /public class Foo implements Runnable/
java.should match /^public class Foo extends RubyObject implements Runnable/

cls = generate("class Foo; java_implements 'Runnable', 'Serializable'; end").classes[0]

@@ -26,7 +26,7 @@ def generate(script)
cls.interfaces[1].should == "Serializable"

java = cls.to_s
java.should match /public class Foo implements Runnable, Serializable/
java.should match /^public class Foo extends RubyObject implements Runnable, Serializable/
end
end
end

0 comments on commit 27e46d8

Please sign in to comment.