Skip to content

Commit

Permalink
Merge branch 'jruby-1_7'
Browse files Browse the repository at this point in the history
* jruby-1_7:
  more specs - as package_name actually works as is with Java proxy modules
  JavaPackageModuleTemplate should handle respond_to? :name as well
  allow object_id to work correctly for Java package modules
  facelift some JI specs a bit
  make sure package modules (at leat) respond_to? :name
  missing hashCode to go along equals in RespondToMissingMethod
  [build] no more torquebox repo
  add missing file

Conflicts:
	core/src/main/java/org/jruby/RubyModule.java
	core/src/main/java/org/jruby/java/util/BlankSlateWrapper.java
	lib/pom.rb
	lib/pom.xml
	maven/jruby-complete/pom.rb
	maven/jruby-complete/pom.xml
	maven/jruby-complete/src/templates/osgi_many_bundles_with_embedded_gems/gems-bundle/pom.xml
	maven/jruby-dist/pom.xml
	maven/jruby-jars/pom.xml
	maven/jruby/src/it/j2ee_jetty/pom.xml
	maven/jruby/src/it/j2ee_jetty_rack/pom.xml
	maven/jruby/src/it/j2ee_tomcat/pom.xml
	maven/jruby/src/it/j2ee_tomcat_rack/pom.xml
	maven/jruby/src/it/j2ee_wildfly/pom.xml
	maven/jruby/src/it/jetty/pom.xml
	maven/jruby/src/it/many_jars_with_embedded_gems/zip_gem/pom.xml
	maven/jruby/src/it/many_jars_with_embedded_gems_ng/gem1/pom.xml
	maven/jruby/src/it/many_jars_with_embedded_gems_ng/gem2/pom.xml
	maven/jruby/src/it/runnable/pom.xml
	maven/jruby/src/it/tomcat/pom.xml
	maven/jruby/src/templates/j2ee_wlp/pom.xml
	maven/jruby/src/templates/osgi_all_inclusive/pom.xml
	spec/java_integration/packages/access_spec.rb
	test/pom.rb
	test/pom.xml
kares committed Aug 12, 2015
2 parents 488cf2e + a35930a commit a14c8b8
Showing 10 changed files with 99 additions and 29 deletions.
15 changes: 11 additions & 4 deletions core/src/main/java/org/jruby/RubyModule.java
Original file line number Diff line number Diff line change
@@ -1703,14 +1703,21 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
return site.call(context, self, self, args, block);
}

@Override
public boolean equals(Object other) {
if (!(other instanceof RespondToMissingMethod)) return false;
if ( ! (other instanceof RespondToMissingMethod) ) return false;

RespondToMissingMethod rtmm = (RespondToMissingMethod)other;
RespondToMissingMethod that = (RespondToMissingMethod) other;

return this.site.methodName.equals(rtmm.site.methodName) &&
isImplementedBy(rtmm.getImplementationClass());
return this.site.methodName.equals(that.site.methodName) &&
isImplementedBy(that.getImplementationClass());
}

@Override
public int hashCode() {
return /* getImplementationClass().hashCode() + */ 7 * this.site.methodName.hashCode();
}

}

public IRubyObject newMethod(IRubyObject receiver, final String methodName, boolean bound, Visibility visibility, boolean respondToMissing, boolean priv) {
11 changes: 6 additions & 5 deletions core/src/main/java/org/jruby/java/util/BlankSlateWrapper.java
Original file line number Diff line number Diff line change
@@ -27,23 +27,24 @@ public BlankSlateWrapper(Ruby runtime, RubyClass superClass, RubyModule delegate

@Override
protected DynamicMethod searchMethodCommon(String name) {
// this module is special and only searches itself; do not go to superclasses
// except for special methods
// this module is special and only searches itself;

// do not go to superclasses except for special methods :
if (name.equals("__constants__")) {
return superClass.searchMethodInner("constants");
}

if (name.equals("__methods__")) {
return superClass.searchMethodInner("methods");
}

if (KEEP.matcher(name).find()) {
return superClass.searchMethodInner(name);
}

return NullMethod.getInstance();
}

private static final Pattern KEEP = Pattern.compile("^(__|<|>|=)|^(class|initialize_copy|singleton_method_added|const_missing|inspect|method_missing|to_s)$|(\\?|!|=)$");
private static final Pattern KEEP = Pattern.compile(
"^(__|<|>|=)|" +
"^(class|initialize_copy|singleton_method_added|const_missing|method_missing|inspect|to_s|object_id)$|" +
"(\\?|!|=)$");
}
8 changes: 6 additions & 2 deletions core/src/main/ruby/jruby/java/java_package_module_template.rb
Original file line number Diff line number Diff line change
@@ -15,9 +15,13 @@ def method_missing(sym, *args)
end
private :method_missing

def name
name_pkg = JavaUtilities.get_proxy_or_package_under_package self, :name
name_pkg.nil? ? super : name_pkg
end

def package_name
# strip off trailing .
@package_name[0..-2]
@package_name[0..-2] # strip off trailing .
end
end
end
10 changes: 7 additions & 3 deletions maven/jruby-complete/pom.rb
Original file line number Diff line number Diff line change
@@ -9,8 +9,12 @@
inherit "org.jruby:jruby-artifacts:#{version}"
packaging 'bundle'

plugin_repository( :id => 'rubygems-releases',
:url => 'https://otto.takari.io/content/repositories/rubygems/maven/releases' )

properties( 'polyglot.dump.pom' => 'pom.xml',
'polyglot.dump.readonly' => true,
'jruby.home' => '${basedir}/../..',
'main.basedir' => '${project.parent.parent.basedir}',
'jruby.complete.home' => '${project.build.outputDirectory}/META-INF/jruby.home' )

@@ -32,7 +36,7 @@
:mainClass => 'org.jruby.Main'
}
},
:instructions => {
:instructions => {
'Export-Package' => 'org.jruby.*;version=${project.version}',
'Import-Package' => '!org.jruby.*, *;resolution:=optional',
'DynamicImport-Package' => 'javax.*',
@@ -50,7 +54,7 @@

plugin( :invoker )

# we have no sources and attach the sources and javadocs from jruby-core
# we have no sources and attach the sources and javadocs from jruby-core
# later in the build so IDE can use them
plugin( :source, 'skipSource' => 'true' )

@@ -107,7 +111,7 @@
end
end
end

profile :id => :jdk8 do
activation do
jdk '1.8'
2 changes: 1 addition & 1 deletion maven/jruby/src/it/jetty/Mavenfile
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ jar( 'org.jruby.rack:jruby-rack', '1.1.14',
# a gem to be used
gem 'flickraw', '0.9.7'

repository( :url => 'http://rubygems-proxy.torquebox.org/releases',
repository( :url => 'https://otto.takari.io/content/repositories/rubygems/maven/releases',
:id => 'rubygems-releases' )

jruby_plugin :gem, :includeRubygemsInTestResources => false, :includeRubygemsInResources => true, :includeLibDirectoryInResources => true, :jrubyVersion => '9.0.0.0' do
13 changes: 7 additions & 6 deletions spec/java_integration/packages/access_spec.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
require File.dirname(__FILE__) + "/../spec_helper"

# for DefaultPackageClass
$CLASSPATH << File.dirname(__FILE__) + "/../../../target/test-classes"

describe "A Java package" do
describe "java package" do
it 'is accessible directly when starting with java, javax, com, or org' do
# Using static methods here for simplicity; avoiding construction.
java.lang.should == JavaUtilities.get_package_module_dot_format("java.lang")
@@ -42,15 +39,19 @@
end

it "supports const_get" do
java.util.respond_to?(:const_get).should be true
java.util.const_get("Arrays").should respond_to "asList"
end

it "supports const_get with inherit argument" do
java.util.const_get("Arrays", false).should respond_to "asList"
java.util.const_get("Arrays", false).should respond_to :asList
end
end

describe "A class in the default package" do
# for DefaultPackageClass
$CLASSPATH << File.dirname(__FILE__) + "/../../../target/test-classes"

describe "class in default package" do
it "can be opened using Java::Foo syntax" do
Java::DefaultPackageClass.new.foo.should == "foo"
class Java::DefaultPackageClass
2 changes: 1 addition & 1 deletion spec/java_integration/packages/include_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require File.dirname(__FILE__) + "/../spec_helper"

describe "A jar with dependecies" do
describe "jar with dependecies" do
it "carries its error messages along to Ruby exception when one of its classes is imported" do
begin
module Fixtures
53 changes: 53 additions & 0 deletions spec/java_integration/packages/name_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
require File.dirname(__FILE__) + "/../spec_helper"

# for DefaultPackageClass
$CLASSPATH << File.dirname(__FILE__) + "/../../../target/test-classes"

describe "java package (and class)" do

it 'have name' do
expect( Java::JavaLang::Integer.name ).to eql 'Java::JavaLang::Integer'
#expect( Java::JavaLang.name ).to eql 'Java::JavaLang'
#expect( Java::Java.name ).to eql 'Java::Java'
#expect( Java::Javax.name ).to eql 'Java::Javax'
expect( Java.name ).to eql 'Java'
#expect( Java::java.util.name ).to eql 'Java::JavaUtil'
#expect( org.xml.name ).to eql 'Java:OrgXml'
#expect( org.xml.sax.name ).to eql 'Java:OrgXmlSax'
#expect( Java::Default.name ).to eql ''
# TODO avoid Default package in favor of Java :
#expect( Java::DefaultPackageClass.name ).to eql 'Java::DefaultPackageClass'
expect( Java::DefaultPackageClass.name ).to eql 'Java::Default::DefaultPackageClass'
end

it 'have package name' do
expect( Java::JavaLang::Integer.respond_to? :package_name ).to be false
expect( Java::JavaLang.respond_to? :package_name ).to be true
expect( Java::JavaLang.package_name ).to eql 'java.lang'
expect( Java::Java.package_name ).to eql 'java'
expect( Java::Javax.package_name ).to eql 'javax'
expect( Java::java.util.package_name ).to eql 'java.util'
expect( org.xml.package_name ).to eql 'org.xml'
expect( org.xml.sax.package_name ).to eql 'org.xml.sax'
# TODO avoid Default package in favor of Java :
#expect( Java.package_name ).to eql ''
expect( Java::Default.package_name ).to eql ''
end

it 'respond to name (GH-2468)' do
expect( java.lang.respond_to?(:name) ).to be true
expect( Java::JavaLang.respond_to?(:name) ).to be true

expect( Java::JavaLang::Integer.respond_to?(:name) ).to be true
expect( Java::Java.respond_to?(:name) ).to be true
expect( Java.respond_to?(:name) ).to be true
expect( org.xml.respond_to?(:name) ).to be true
expect( org.xml.sax.respond_to?(:name) ).to be true
expect( Java::Default.respond_to?(:name) ).to be true

if Object.const_defined?(:JavaPackageModuleTemplate) # should go-away in 9K
expect( JavaPackageModuleTemplate.respond_to?(:name) ).to be true
end
end

end
6 changes: 3 additions & 3 deletions spec/java_integration/rubygems/rubygems_spec.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

require File.dirname(__FILE__) + "/../spec_helper"

require 'rubygems'

describe "RubyGems extensions" do

before(:all) { require 'rubygems' }

before :each do
@path = Gem.path
Gem.clear_paths
8 changes: 4 additions & 4 deletions test/pom.rb
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ def truffle_spec_config(spec_type, generate_report)

project 'JRuby Integration Tests' do

model_version '4.0.0'
model_version '4.0.0'

inherit 'org.jruby:jruby-parent', version
id 'org.jruby:jruby-tests'
@@ -45,8 +45,8 @@ def truffle_spec_config(spec_type, generate_report)
releases 'false'
snapshots 'true'
end
plugin_repository( :url => 'http://rubygems-proxy.torquebox.org/releases',
:id => 'rubygems-releases' )
plugin_repository( :id => 'rubygems-releases',
:url => 'https://otto.takari.io/content/repositories/rubygems/maven/releases' )

properties( 'tesla.dump.pom' => 'pom.xml',
'tesla.dump.readonly' => true,
@@ -309,7 +309,7 @@ def truffle_spec_config(spec_type, generate_report)
:id => 'rake',
:phase => 'test',
:configuration => [ xml(
'<target>' +
'<target>' +
'<exec dir="${jruby.home}" executable="${jruby.home}/bin/jruby" failonerror="true">' +
'<arg value="-J-server" />' +
'<arg value="-X+T" />' +

0 comments on commit a14c8b8

Please sign in to comment.