embulk 0.4.9 → 0.4.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/build.gradle +1 -1
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/PluginClassLoader.java +25 -13
- data/embulk-docs/plugins/index.html.erb +5 -4
- data/embulk-docs/plugins/plugins.css +9 -2
- data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst +1 -1
- data/embulk-docs/src/release.rst +1 -0
- data/embulk-docs/src/release/release-0.4.10.rst +17 -0
- data/lib/embulk/command/embulk_new_plugin.rb +1 -1
- data/lib/embulk/data/new/java/build.gradle.erb +1 -1
- data/lib/embulk/data/new/ruby/Rakefile +2 -0
- data/lib/embulk/data/new/ruby/gemspec.erb +1 -1
- data/lib/embulk/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1aea38d2d64e785a477bb3b7aa81a0801b78bbf9
|
4
|
+
data.tar.gz: b1c68158658a6c8274cb4375be5c03e6c58410e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38bed0a199023c3989997a48a466c70e8e6a778714951c0cbef215dbb351c4a6eced66722f41ed7dfb8984976f2d2c44352a955c7146d871de0c1c8e9e8d47d3
|
7
|
+
data.tar.gz: 68fa1091e21c306cc7ed12e87f68e387e3a98e4319b5806b2eaf09eb4991fe1a0bc09fd86490155a8be0fab2000c37c6781fdfcfd0c6072eac61913f79e09f82
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ The single-file package is the simplest way to try Embulk. You can download the
|
|
28
28
|
Following 4 commands install embulk to your home directory:
|
29
29
|
|
30
30
|
```
|
31
|
-
curl --create-dirs -o ~/.embulk/bin/embulk -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.
|
31
|
+
curl --create-dirs -o ~/.embulk/bin/embulk -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.10.jar
|
32
32
|
chmod +x ~/.embulk/bin/embulk
|
33
33
|
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
|
34
34
|
source ~/.bashrc
|
@@ -39,7 +39,7 @@ source ~/.bashrc
|
|
39
39
|
You can assume the jar file is a .bat file.
|
40
40
|
|
41
41
|
```
|
42
|
-
curl -o embulk.bat -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.
|
42
|
+
curl -o embulk.bat -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.10.jar
|
43
43
|
```
|
44
44
|
|
45
45
|
### Trying examples
|
data/build.gradle
CHANGED
@@ -156,7 +156,7 @@ class TaskSerDe
|
|
156
156
|
} else {
|
157
157
|
Object value = nestedObjectMapper.readValue(jp, new GenericTypeReference(field.getType()));
|
158
158
|
if (value == null) {
|
159
|
-
throw new JsonMappingException("Setting null to a
|
159
|
+
throw new JsonMappingException("Setting null to a task field is not allowed. Use Optional<T> (com.google.common.base.Optional) to represent null.");
|
160
160
|
}
|
161
161
|
objects.put(field.getName(), value);
|
162
162
|
unusedMappings.remove(key);
|
@@ -169,7 +169,7 @@ class TaskSerDe
|
|
169
169
|
if (field.getDefaultJsonString().isPresent()) {
|
170
170
|
Object value = nestedObjectMapper.readValue(field.getDefaultJsonString().get(), new GenericTypeReference(field.getType()));
|
171
171
|
if (value == null) {
|
172
|
-
throw new JsonMappingException("Setting null to a
|
172
|
+
throw new JsonMappingException("Setting null to a task field is not allowed. Use Optional<T> (com.google.common.base.Optional) to represent null.");
|
173
173
|
}
|
174
174
|
objects.put(field.getName(), value);
|
175
175
|
} else {
|
@@ -1,7 +1,9 @@
|
|
1
1
|
package org.embulk.spi;
|
2
2
|
|
3
|
+
import java.nio.file.Path;
|
3
4
|
import java.net.URL;
|
4
5
|
import java.net.URLClassLoader;
|
6
|
+
import java.net.MalformedURLException;
|
5
7
|
import java.util.List;
|
6
8
|
import com.google.common.collect.ImmutableList;
|
7
9
|
import org.jruby.Ruby;
|
@@ -9,14 +11,10 @@ import org.jruby.Ruby;
|
|
9
11
|
public class PluginClassLoader
|
10
12
|
extends URLClassLoader
|
11
13
|
{
|
12
|
-
private static final String[]
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"com.
|
16
|
-
"com.google.inject.",
|
17
|
-
"org.jruby.",
|
18
|
-
"javax.inject.",
|
19
|
-
"java.",
|
14
|
+
private static final String[] CHILD_FIRST_PACKAGES = new String[] {
|
15
|
+
"io.netty.",
|
16
|
+
"org.yaml.",
|
17
|
+
"com.ibm.icu.",
|
20
18
|
};
|
21
19
|
|
22
20
|
public PluginClassLoader(Ruby pluginJRubyRuntime, List<URL> urls)
|
@@ -29,6 +27,20 @@ public class PluginClassLoader
|
|
29
27
|
super(urls.toArray(new URL[urls.size()]), parent);
|
30
28
|
}
|
31
29
|
|
30
|
+
public void addPath(Path path)
|
31
|
+
{
|
32
|
+
try {
|
33
|
+
addUrl(path.toUri().toURL());
|
34
|
+
} catch (MalformedURLException ex) {
|
35
|
+
throw new IllegalArgumentException(ex);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
public void addUrl(URL url)
|
40
|
+
{
|
41
|
+
super.addURL(url);
|
42
|
+
}
|
43
|
+
|
32
44
|
@Override
|
33
45
|
protected Class<?> loadClass(String name, boolean resolve)
|
34
46
|
throws ClassNotFoundException
|
@@ -39,8 +51,8 @@ public class PluginClassLoader
|
|
39
51
|
return resolveClass(loadedClass, resolve);
|
40
52
|
}
|
41
53
|
|
42
|
-
boolean
|
43
|
-
if (
|
54
|
+
boolean childFirst = isInChildFirstPackage(name);
|
55
|
+
if (childFirst) {
|
44
56
|
try {
|
45
57
|
return resolveClass(findClass(name), resolve);
|
46
58
|
} catch (ClassNotFoundException ignored) {
|
@@ -52,7 +64,7 @@ public class PluginClassLoader
|
|
52
64
|
} catch (ClassNotFoundException ignored) {
|
53
65
|
}
|
54
66
|
|
55
|
-
if (
|
67
|
+
if (!childFirst) {
|
56
68
|
return resolveClass(findClass(name), resolve);
|
57
69
|
}
|
58
70
|
|
@@ -68,9 +80,9 @@ public class PluginClassLoader
|
|
68
80
|
return clazz;
|
69
81
|
}
|
70
82
|
|
71
|
-
private boolean
|
83
|
+
private boolean isInChildFirstPackage(String name)
|
72
84
|
{
|
73
|
-
for (String pkg :
|
85
|
+
for (String pkg : CHILD_FIRST_PACKAGES) {
|
74
86
|
if (name.startsWith(pkg)) {
|
75
87
|
return true;
|
76
88
|
}
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<body>
|
13
13
|
<div class="header"><h1 class="heading"><a href="../docs/index.html">
|
14
14
|
<span>Embulk plugins</span></a></h1>
|
15
|
-
<h2 class="heading"><span>Embulk by category</span></h2>
|
15
|
+
<h2 class="heading"><span>Embulk plugins by category</span></h2>
|
16
16
|
</div>
|
17
17
|
|
18
18
|
<div class="content">
|
@@ -45,10 +45,11 @@
|
|
45
45
|
<a class="gh-count" href="https://github.com/<%=e gem[:owner] %>/<%=e gem[:repo] %>/stargazers" target="_blank" style="display: block"><%=h gem[:stargazers_count] %></a>
|
46
46
|
</span>
|
47
47
|
</div>
|
48
|
-
|
49
|
-
<td style="width:
|
48
|
+
</td>
|
49
|
+
<td style="min-width:9em"><a href="<%=h gem[:url] %>"><%=h gem[:name] %></a><pre class="install">$ embulk gem install <%=h gem[:gem_name] %></pre></td>
|
50
|
+
<td style="min-width:13em"><%=h gem[:author] %>
|
50
51
|
<% if gem[:avatar_url] %>
|
51
|
-
<img src="<%=h gem[:avatar_url] %>" height=32 width=32></img
|
52
|
+
<img src="<%=h gem[:avatar_url] %>" height=32 width=32></img>
|
52
53
|
<% else %>
|
53
54
|
</td>
|
54
55
|
<% end %>
|
@@ -1,15 +1,22 @@
|
|
1
1
|
body {
|
2
2
|
max-width: 90em;
|
3
|
+
font-size: 105%;
|
3
4
|
}
|
4
5
|
.plugins {
|
5
6
|
border-collapse: collapse
|
6
7
|
}
|
7
8
|
.plugins th, td {
|
8
|
-
padding:
|
9
|
+
padding: 8px 20px;
|
9
10
|
border: 1px solid #eee;
|
10
11
|
vertical-align: middle;
|
11
12
|
}
|
12
|
-
.
|
13
|
+
.plugins pre.install {
|
14
|
+
font-size: 50%;
|
15
|
+
padding: 7px 0 2px 0;
|
16
|
+
margin: 0;
|
17
|
+
background: none;
|
18
|
+
border: none;
|
19
|
+
color: #999;
|
13
20
|
}
|
14
21
|
|
15
22
|
.github-btn-container {
|
@@ -56,7 +56,7 @@ You can find the latest embulk binary from the `releases <https://bintray.com/em
|
|
56
56
|
|
57
57
|
.. code-block:: console
|
58
58
|
|
59
|
-
$ sudo wget https://bintray.com/artifact/download/embulk/maven/embulk-0.4.
|
59
|
+
$ sudo wget https://bintray.com/artifact/download/embulk/maven/embulk-0.4.10.jar -O /usr/local/bin/embulk
|
60
60
|
$ sudo chmod +x /usr/local/bin/embulk
|
61
61
|
|
62
62
|
Step 2. Install Elasticsearch plugin
|
data/embulk-docs/src/release.rst
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
Release 0.4.10
|
2
|
+
==================================
|
3
|
+
|
4
|
+
Plugin API Changes
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Classloader of Java-based plugins search classes from the embulk's classloader by default. This solves mismatches of the same class loaded by 2 classloaders.
|
8
|
+
* Added ``spi.PluginClassLoader.addPath(Path)`` method so that Java-based plugins can load jar files dynamically.
|
9
|
+
|
10
|
+
General Changes
|
11
|
+
------------------
|
12
|
+
|
13
|
+
* Rakefile generated by plugin template generator has default task aliased to ``build`` task (@takei-yuya++)
|
14
|
+
|
15
|
+
Release Date
|
16
|
+
------------------
|
17
|
+
2015-02-26
|
@@ -45,7 +45,7 @@ module Embulk
|
|
45
45
|
%[Dumps records to #{display_name}.]
|
46
46
|
when :file_output
|
47
47
|
%[Stores files on #{display_name}.]
|
48
|
-
when :
|
48
|
+
when :formatter
|
49
49
|
%[Formats #{display_name} files for other file output plugins.]
|
50
50
|
when :encoder
|
51
51
|
%[Encodes files using #{display_name} for other file output plugins.]
|
@@ -43,7 +43,7 @@ Gem::Specification.new do |spec|
|
|
43
43
|
spec.description = %[<%= "#{description}".dump %>]
|
44
44
|
spec.email = [<%= email.dump %>]
|
45
45
|
spec.licenses = ["MIT"]
|
46
|
-
# TODO: spec.homepage = <%= "https://github.com/#{email[/([^@]*)/]}/#{project_name}".dump %>
|
46
|
+
# TODO set this: spec.homepage = <%= "https://github.com/#{email[/([^@]*)/]}/#{project_name}".dump %>
|
47
47
|
|
48
48
|
spec.files = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
|
49
49
|
spec.test_files = spec.files.grep(%r"^(test|spec)/")
|
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.description = <%= "#{description}".dump %>
|
8
8
|
spec.email = [<%= email.dump %>]
|
9
9
|
spec.licenses = ["MIT"]
|
10
|
-
# TODO: spec.homepage = "https://github.com/<%= email[/([^@]*)/] %>/<%= project_name %>"
|
10
|
+
# TODO set this: spec.homepage = "https://github.com/<%= email[/([^@]*)/] %>/<%= project_name %>"
|
11
11
|
|
12
12
|
spec.files = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
|
13
13
|
spec.test_files = spec.files.grep(%r{^(test|spec)/})
|
data/lib/embulk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -261,6 +261,7 @@ files:
|
|
261
261
|
- embulk-docs/src/release/release-0.3.2.rst
|
262
262
|
- embulk-docs/src/release/release-0.4.0.rst
|
263
263
|
- embulk-docs/src/release/release-0.4.1.rst
|
264
|
+
- embulk-docs/src/release/release-0.4.10.rst
|
264
265
|
- embulk-docs/src/release/release-0.4.2.rst
|
265
266
|
- embulk-docs/src/release/release-0.4.3.rst
|
266
267
|
- embulk-docs/src/release/release-0.4.4.rst
|
@@ -369,8 +370,8 @@ files:
|
|
369
370
|
- classpath/bval-jsr303-0.5.jar
|
370
371
|
- classpath/commons-beanutils-core-1.8.3.jar
|
371
372
|
- classpath/commons-lang3-3.1.jar
|
372
|
-
- classpath/embulk-core-0.4.
|
373
|
-
- classpath/embulk-standards-0.4.
|
373
|
+
- classpath/embulk-core-0.4.10.jar
|
374
|
+
- classpath/embulk-standards-0.4.10.jar
|
374
375
|
- classpath/guava-18.0.jar
|
375
376
|
- classpath/guice-3.0.jar
|
376
377
|
- classpath/guice-multibindings-3.0.jar
|