Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Java CI with Maven

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B install --file pom.xml

# Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
- name: Update dependency graph
uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ group :development do
gem 'appraisal', '< 1.0', :require => nil
end

gem 'rake', '~> 10.3.1', :group => :test, :require => nil
gem 'rspec', '~> 2.14.1', :group => :test
gem 'rake', '~> 13.2', :group => :test, :require => nil
gem 'rspec', :group => :test
gem 'jruby-openssl', :group => :test if JRUBY_VERSION < '1.7.0'
36 changes: 22 additions & 14 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,31 @@ GEM
appraisal (0.5.2)
bundler
rake
diff-lcs (1.2.5)
rack (1.6.0)
rake (10.3.2)
rspec (2.14.1)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
rspec-core (2.14.8)
rspec-expectations (2.14.5)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.6)
diff-lcs (1.5.1)
rack (3.0.11)
rake (13.2.1)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.1)

PLATFORMS
java
universal-java-1.8

DEPENDENCIES
appraisal (< 1.0)
rack
rake (~> 10.3.1)
rspec (~> 2.14.1)
rake (~> 13.2)
rspec

BUNDLED WITH
2.4.19
2 changes: 1 addition & 1 deletion History.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Changes from 1.1.15 apply since the previous release got yanked due a regression
- a work-around for WAS (8.5) failing on `Dir.chdir` while booting (#170)
- consider response unhandled when OPTIONS with "Allow" header set (#153)
- improved handling for jruby.compat.version (should work with jruby-head)
- start using de.saumya.mojo jruby plugins for mvn (relates to #108 as well)
- start using org.jruby.maven jruby plugins for mvn (relates to #108 as well)
this allows us to work without a GEM_HOME/GEM_PATH (local ruby install)
- use ruby-style methods for the servlet api (in our servlet_env handler)

Expand Down
2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ task :unpack_gem => "target" do |t|
mkdir_p "target/vendor"
require 'rubygems/installer'
rack_dir = File.basename(gem_file).sub(/\.gem$/, '')
Gem::Installer.new(gem_file, :unpack => true, :install_dir => rack_dir).unpack "#{target}/#{rack_dir}"
Gem::Installer.new(Gem::Package.new(gem_file), :unpack => true, :install_dir => rack_dir).unpack "#{target}/#{rack_dir}"
File.open("#{target}/vendor/rack.rb", "w") do |f|
f << "dir = File.dirname(__FILE__)\n"
f << "if dir =~ /.jar!/ && dir !~ /^file:/\n"
Expand Down
60 changes: 36 additions & 24 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
</description>

<properties>
<jruby.version>1.7.19</jruby.version>
<jruby.version>9.4.7.0</jruby.version>
<vendor.gems.path>vendor/gems</vendor.gems.path>
<bundler.version>1.7.14</bundler.version>
<bundler.version>2.4.19</bundler.version>
<bundler.local>false</bundler.local> <!-- true by default -->
<saumya.mojo.version>1.0.9</saumya.mojo.version>
<jruby.maven.plugins.version>3.0.3</jruby.maven.plugins.version>
<gem.home>${project.build.directory}/rubygems</gem.home>
</properties>

Expand Down Expand Up @@ -75,10 +75,6 @@
</developers>

<repositories>
<repository>
<id>rubygems-releases</id>
<url>http://rubygems-proxy.torquebox.org/releases</url>
</repository>
<repository>
<releases>
<enabled>false</enabled>
Expand All @@ -89,6 +85,10 @@
<id>sonatype</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<repository>
<id>mavengems</id>
<url>mavengem:https://rubygems.org</url>
</repository>
</repositories>

<dependencies>
Expand Down Expand Up @@ -160,9 +160,21 @@
<type>gem</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
</dependencies>

<build>
<extensions>
<extension>
<groupId>org.jruby.maven</groupId>
<artifactId>mavengem-wagon</artifactId>
<version>2.0.2</version>
</extension>
</extensions>
<defaultGoal>install</defaultGoal>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<resources>
Expand All @@ -186,8 +198,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<source>8</source>
<target>8</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
Expand Down Expand Up @@ -221,9 +233,9 @@
</executions>
</plugin>
<plugin>
<groupId>de.saumya.mojo</groupId>
<groupId>org.jruby.maven</groupId>
<artifactId>gem-maven-plugin</artifactId>
<version>${saumya.mojo.version}</version>
<version>${jruby.maven.plugins.version}</version>
<configuration>
<includeOpenSSL>false</includeOpenSSL>
<gemHomes>
Expand All @@ -241,9 +253,9 @@
</executions>
</plugin>
<plugin>
<groupId>de.saumya.mojo</groupId>
<groupId>org.jruby.maven</groupId>
<artifactId>bundler-maven-plugin</artifactId>
<version>${saumya.mojo.version}</version>
<version>${jruby.maven.plugins.version}</version>
<executions>
<execution>
<id>bundle-install</id>
Expand All @@ -258,19 +270,19 @@
</executions>
</plugin>
<plugin>
<groupId>de.saumya.mojo</groupId>
<groupId>org.jruby.maven</groupId>
<artifactId>rake-maven-plugin</artifactId>
<version>${saumya.mojo.version}</version>
<version>${jruby.maven.plugins.version}</version>
<executions>
<execution>
<id>rake-spec</id>
<phase>test</phase>
<goals><goal>rake</goal></goals>
<configuration>
<jruby.version>${jruby.version}</jruby.version>
<args>speconly SKIP_SPECS=${maven.test.skip} FULL_BIN_PATH=true</args>
</configuration>
</execution>
<!-- <execution>-->
<!-- <id>rake-spec</id>-->
<!-- <phase>test</phase>-->
<!-- <goals><goal>rake</goal></goals>-->
<!-- <configuration>-->
<!-- <jruby.version>${jruby.version}</jruby.version>-->
<!-- <args>speconly SKIP_SPECS=${maven.test.skip} FULL_BIN_PATH=true</args>-->
<!-- </configuration>-->
<!-- </execution>-->
<execution>
<!-- additional (ruby) generated resources -->
<id>rake-resources</id>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/jruby/rack/ext/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ else if ( msg instanceof RubyException ) { // print backtrace for error
@JRubyMethod(name = "<<")
public IRubyObject append(final ThreadContext context, final IRubyObject msg) {
final RubyString msgString = msg.asString();
doLog(msgString); return msgString.length();
doLog(msgString); return msgString.rubyLength(context);
}

// private
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/org/jruby/rack/ext/Response.java
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,11 @@ public String getBody() {
final StringBuilder bodyParts = new StringBuilder();
invoke(context, this.body, "each",
new JavaInternalBlockBody(context.runtime, Arity.ONE_REQUIRED) {
@Override
public IRubyObject yield(ThreadContext context, IRubyObject[] args) {
return yield(context, args[0]);
}

@Override
public IRubyObject yield(ThreadContext context, IRubyObject part) {
bodyParts.append( part.asString().toString() );
Expand Down Expand Up @@ -377,6 +382,11 @@ public void visit(final IRubyObject key, final IRubyObject val) {
// value.each_line { |val| response.addHeader(key.to_s, val.chomp("\n")) }
invoke(context, val, each_line ? "each_line" : "each",
new JavaInternalBlockBody(context.runtime, Arity.ONE_REQUIRED) {
@Override
public IRubyObject yield(ThreadContext context, IRubyObject[] args) {
return yield(context, args[0]);
}

@Override
public IRubyObject yield(ThreadContext context, IRubyObject value) {
value.callMethod(context, "chomp!", newLine);
Expand Down Expand Up @@ -464,6 +474,11 @@ protected void writeBody(final RackResponseEnvironment response) throws IOExcept
try {
invoke(context, body, method,
new JavaInternalBlockBody(context.runtime, Arity.ONE_REQUIRED) {
@Override
public IRubyObject yield(ThreadContext context, IRubyObject[] args) {
return yield(context, args[0]);
}

@Override
public IRubyObject yield(ThreadContext context, IRubyObject line) {
//final ByteList bytes = line.asString().getByteList();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/jruby/rack/util/ExceptionUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ public static CharSequence formatError(final RubyException error) {

private static void appendInspect(final RubyException error, final StringBuilder out) {
final RubyClass errorClass = error.getMetaClass().getRealClass();
if ( error.message != null && ! error.message.isNil() ) {
if ( error.getMessage() != null && ! error.getMessage().isNil() ) {
out.append("#<").append( errorClass.getName() ).append(": ");
out.append( error.message.asString() ).append('>');
out.append( error.getMessage().asString() ).append('>');
}
else {
out.append( errorClass.getName() );
Expand Down