You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/08/29 07:32:15 UTC
[1/2] tomee git commit: slurp http inputstream in the connection
factory to avoid to link the facade to an impl
Repository: tomee
Updated Branches:
refs/heads/master 231efb0db -> c1358ae73
slurp http inputstream in the connection factory to avoid to link the facade to an impl
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d4b41666
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d4b41666
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d4b41666
Branch: refs/heads/master
Commit: d4b41666b3cae33d1521ae904dbc11cec34fef52
Parents: 231efb0
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Mon Aug 29 08:50:39 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Mon Aug 29 08:50:39 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/openejb/client/Client.java | 19 --------
.../openejb/client/HttpConnectionFactory.java | 46 ++++++++++++++------
2 files changed, 32 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/d4b41666/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java b/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
index f8e591e..0fd3be6 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
@@ -404,25 +404,6 @@ public class Client {
}
}
- if (null != in) {
-
- // consume anything left in the buffer
- try {
- int read = 0;
- while (read > -1) {
- read = in.read();
- }
- } catch (Throwable e) {
- // ignore
- }
-
- try {
- in.close();
- } catch (final Throwable e) {
- //Ignore
- }
- }
-
if (null != conn) {
try {
conn.close();
http://git-wip-us.apache.org/repos/asf/tomee/blob/d4b41666/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
index 844cb7d..7344864 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
@@ -1,19 +1,18 @@
/**
- *
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.openejb.client;
@@ -29,7 +28,9 @@ import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
+import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ConcurrentMap;
/**
@@ -38,23 +39,32 @@ import java.util.concurrent.ConcurrentMap;
public class HttpConnectionFactory implements ConnectionFactory {
// this map only ensures JVM keep alive socket caching works properly
private final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap = new ConcurrentHashMap<>();
+ private final Queue<byte[]> drainBuffers = new ConcurrentLinkedQueue<>();
@Override
public Connection getConnection(final URI uri) throws IOException {
- return new HttpConnection(uri, socketFactoryMap);
+ byte[] buffer = drainBuffers.poll();
+ if (buffer == null) {
+ buffer = new byte[Integer.getInteger("openejb.client.http.drain-buffer.size", 64)];
+ }
+ try {
+ return new HttpConnection(uri, socketFactoryMap, buffer);
+ } finally { // auto adjusting buffer caching, queue avoids leaks (!= ThreadLocal)
+ drainBuffers.add(buffer);
+ }
}
public static class HttpConnection implements Connection {
- private final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap;
-
+ private final byte[] buffer;
private HttpURLConnection httpURLConnection;
private InputStream inputStream;
private OutputStream outputStream;
private final URI uri;
- public HttpConnection(final URI uri, final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap) throws IOException {
+ public HttpConnection(final URI uri, final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap,
+ final byte[] buffer) throws IOException {
this.uri = uri;
- this.socketFactoryMap = socketFactoryMap;
+ this.buffer = buffer;
final URL url = uri.toURL();
final Map<String, String> params;
@@ -125,6 +135,14 @@ public class HttpConnectionFactory implements ConnectionFactory {
public void close() throws IOException {
IOException exception = null;
if (inputStream != null) {
+ // consume anything left in the buffer
+ try {// use a buffer cause it is faster, check HttpInputStreamImpl
+ while (inputStream.read(buffer) > -1) {
+ // no-op
+ }
+ } catch (final Throwable e) {
+ // ignore
+ }
try {
inputStream.close();
} catch (final IOException e) {
[2/2] tomee git commit: fixing gradle configuration and propagating
it to the extension
Posted by rm...@apache.org.
fixing gradle configuration and propagating it to the extension
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c1358ae7
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c1358ae7
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c1358ae7
Branch: refs/heads/master
Commit: c1358ae7337bc8e076c1eeba0b821e73ddf3a027
Parents: d4b4166
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Mon Aug 29 09:31:30 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Mon Aug 29 09:31:30 2016 +0200
----------------------------------------------------------------------
.../gradle/embedded/TomEEEmbeddedExtension.java | 322 ++++++++++++++++++-
.../gradle/embedded/TomEEEmbeddedPlugin.java | 63 +++-
.../gradle/embedded/TomEEEmbeddedTask.java | 48 ++-
3 files changed, 401 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/c1358ae7/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
index d27609f..809667b 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
@@ -16,17 +16,55 @@
*/
package org.apache.tomee.gradle.embedded;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
public class TomEEEmbeddedExtension {
public static final String NAME = "tomee-embedded";
+ public static final String ALIAS = "tomeeembedded"; // easier in build.gradle cause no iphen
+ // specific to the extension
private boolean skipDefaultRepository = false;
private String tomeeVersion;
- public boolean isSkipDefaultRepository() {
+ // shared with the task
+ private Integer httpPort;
+ private Integer httpsPort;
+ private Integer ajpPort;
+ private Integer stopPort;
+ private String host;
+ private String keystoreFile;
+ private String keystorePass;
+ private String keystoreType;
+ private String clientAuth;
+ private String keyAlias;
+ private String sslProtocol;
+ private File serverXml;
+ private Boolean singleClassloader;
+ private Boolean ssl;
+ private Boolean withEjbRemote;
+ private Boolean quickSession;
+ private Boolean skipHttp;
+ private Collection<String> applicationScopes;
+ private Collection<String> classloaderFilteredPackages;
+ private Boolean webResourceCached;
+ private String context;
+ private Map<String, String> containerProperties;
+ private Boolean keepServerXmlAsThis;
+ private Map<String, String> users;
+ private Map<String, String> roles;
+ private Boolean forceJspDevelopment;
+ private String inlinedServerXml;
+ private String inlinedTomEEXml;
+ private File workDir;
+ private List<File> modules;
+ private File docBase;
+ private String dir;
+ private String conf;
+
+ public Boolean isSkipDefaultRepository() {
return skipDefaultRepository;
}
@@ -35,22 +73,274 @@ public class TomEEEmbeddedExtension {
}
public String getTomeeVersion() {
- if (tomeeVersion == null) {
- tomeeVersion = "7.0.0-M3";
- try {
- try (final InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/maven/org.apache.tomee.gradle/tomee-embedded/pom.properties")) {
- final Properties p = new Properties();
- p.load(is);
- tomeeVersion = p.getProperty("version", tomeeVersion);
- }
- } catch (IOException e) {
- // no-op
- }
- }
return tomeeVersion;
}
public void setTomeeVersion(final String tomeeVersion) {
this.tomeeVersion = tomeeVersion;
}
+
+ public Integer getHttpPort() {
+ return httpPort;
+ }
+
+ public void setHttpPort(final Integer httpPort) {
+ this.httpPort = httpPort;
+ }
+
+ public Integer getHttpsPort() {
+ return httpsPort;
+ }
+
+ public void setHttpsPort(final Integer httpsPort) {
+ this.httpsPort = httpsPort;
+ }
+
+ public Integer getAjpPort() {
+ return ajpPort;
+ }
+
+ public void setAjpPort(final Integer ajpPort) {
+ this.ajpPort = ajpPort;
+ }
+
+ public Integer getStopPort() {
+ return stopPort;
+ }
+
+ public void setStopPort(final Integer stopPort) {
+ this.stopPort = stopPort;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(final String host) {
+ this.host = host;
+ }
+
+ public String getKeystoreFile() {
+ return keystoreFile;
+ }
+
+ public void setKeystoreFile(final String keystoreFile) {
+ this.keystoreFile = keystoreFile;
+ }
+
+ public String getKeystorePass() {
+ return keystorePass;
+ }
+
+ public void setKeystorePass(final String keystorePass) {
+ this.keystorePass = keystorePass;
+ }
+
+ public String getKeystoreType() {
+ return keystoreType;
+ }
+
+ public void setKeystoreType(final String keystoreType) {
+ this.keystoreType = keystoreType;
+ }
+
+ public String getClientAuth() {
+ return clientAuth;
+ }
+
+ public void setClientAuth(final String clientAuth) {
+ this.clientAuth = clientAuth;
+ }
+
+ public String getKeyAlias() {
+ return keyAlias;
+ }
+
+ public void setKeyAlias(final String keyAlias) {
+ this.keyAlias = keyAlias;
+ }
+
+ public String getSslProtocol() {
+ return sslProtocol;
+ }
+
+ public void setSslProtocol(final String sslProtocol) {
+ this.sslProtocol = sslProtocol;
+ }
+
+ public File getServerXml() {
+ return serverXml;
+ }
+
+ public void setServerXml(final File serverXml) {
+ this.serverXml = serverXml;
+ }
+
+ public Boolean getSingleClassloader() {
+ return singleClassloader;
+ }
+
+ public void setSingleClassloader(final Boolean singleClassloader) {
+ this.singleClassloader = singleClassloader;
+ }
+
+ public Boolean getSsl() {
+ return ssl;
+ }
+
+ public void setSsl(final Boolean ssl) {
+ this.ssl = ssl;
+ }
+
+ public Boolean getWithEjbRemote() {
+ return withEjbRemote;
+ }
+
+ public void setWithEjbRemote(final Boolean withEjbRemote) {
+ this.withEjbRemote = withEjbRemote;
+ }
+
+ public Boolean getQuickSession() {
+ return quickSession;
+ }
+
+ public void setQuickSession(final Boolean quickSession) {
+ this.quickSession = quickSession;
+ }
+
+ public Boolean getSkipHttp() {
+ return skipHttp;
+ }
+
+ public void setSkipHttp(final Boolean skipHttp) {
+ this.skipHttp = skipHttp;
+ }
+
+ public Collection<String> getApplicationScopes() {
+ return applicationScopes;
+ }
+
+ public void setApplicationScopes(final Collection<String> applicationScopes) {
+ this.applicationScopes = applicationScopes;
+ }
+
+ public Collection<String> getClassloaderFilteredPackages() {
+ return classloaderFilteredPackages;
+ }
+
+ public void setClassloaderFilteredPackages(final Collection<String> classloaderFilteredPackages) {
+ this.classloaderFilteredPackages = classloaderFilteredPackages;
+ }
+
+ public Boolean getWebResourceCached() {
+ return webResourceCached;
+ }
+
+ public void setWebResourceCached(final Boolean webResourceCached) {
+ this.webResourceCached = webResourceCached;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(final String context) {
+ this.context = context;
+ }
+
+ public Map<String, String> getContainerProperties() {
+ return containerProperties;
+ }
+
+ public void setContainerProperties(final Map<String, String> containerProperties) {
+ this.containerProperties = containerProperties;
+ }
+
+ public Boolean getKeepServerXmlAsThis() {
+ return keepServerXmlAsThis;
+ }
+
+ public void setKeepServerXmlAsThis(final Boolean keepServerXmlAsThis) {
+ this.keepServerXmlAsThis = keepServerXmlAsThis;
+ }
+
+ public Map<String, String> getUsers() {
+ return users;
+ }
+
+ public void setUsers(final Map<String, String> users) {
+ this.users = users;
+ }
+
+ public Map<String, String> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(final Map<String, String> roles) {
+ this.roles = roles;
+ }
+
+ public Boolean getForceJspDevelopment() {
+ return forceJspDevelopment;
+ }
+
+ public void setForceJspDevelopment(final Boolean forceJspDevelopment) {
+ this.forceJspDevelopment = forceJspDevelopment;
+ }
+
+ public String getInlinedServerXml() {
+ return inlinedServerXml;
+ }
+
+ public void setInlinedServerXml(final String inlinedServerXml) {
+ this.inlinedServerXml = inlinedServerXml;
+ }
+
+ public String getInlinedTomEEXml() {
+ return inlinedTomEEXml;
+ }
+
+ public void setInlinedTomEEXml(final String inlinedTomEEXml) {
+ this.inlinedTomEEXml = inlinedTomEEXml;
+ }
+
+ public File getWorkDir() {
+ return workDir;
+ }
+
+ public void setWorkDir(final File workDir) {
+ this.workDir = workDir;
+ }
+
+ public List<File> getModules() {
+ return modules;
+ }
+
+ public void setModules(final List<File> modules) {
+ this.modules = modules;
+ }
+
+ public File getDocBase() {
+ return docBase;
+ }
+
+ public void setDocBase(final File docBase) {
+ this.docBase = docBase;
+ }
+
+ public String getDir() {
+ return dir;
+ }
+
+ public void setDir(final String dir) {
+ this.dir = dir;
+ }
+
+ public String getConf() {
+ return conf;
+ }
+
+ public void setConf(final String conf) {
+ this.conf = conf;
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/c1358ae7/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java
index 90d9d0d..671dfa1 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java
@@ -22,36 +22,82 @@ import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.DependencySet;
import org.gradle.api.artifacts.ResolvableDependencies;
+import org.gradle.api.artifacts.UnknownConfigurationException;
import org.gradle.api.artifacts.dsl.DependencyHandler;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.HashMap;
+import java.util.List;
+import java.util.Properties;
+
+import static java.util.Arrays.asList;
/**
- * Custom dependencies can be added using the scope "tomee-embedded".
+ * Custom dependencies can be added using the scope "tomee-embedded" or "tomeeembedded".
*/
public class TomEEEmbeddedPlugin implements Plugin<Project> {
@Override
public void apply(final Project project) {
- project.getExtensions().create(TomEEEmbeddedExtension.NAME, TomEEEmbeddedExtension.class);
+ final List<String> extensions = asList(TomEEEmbeddedExtension.NAME, TomEEEmbeddedExtension.ALIAS);
+ for (final String name : extensions) {
+ project.getExtensions().create(name, TomEEEmbeddedExtension.class);
+ }
project.afterEvaluate(new Action<Project>() {
@Override
public void execute(final Project actionProject) {
- final TomEEEmbeddedExtension extension = actionProject.getExtensions().findByType(TomEEEmbeddedExtension.class);
- if (!extension.isSkipDefaultRepository()) {
- actionProject.getRepositories().mavenCentral();
+ for (final String name : extensions) {
+ final TomEEEmbeddedExtension extension = TomEEEmbeddedExtension.class.cast(actionProject.getExtensions().findByName(name));
+ if (extension == null) {
+ return;
+ }
+ if (extension.isSkipDefaultRepository() != null && !extension.isSkipDefaultRepository()) {
+ actionProject.getRepositories().mavenCentral();
+ return;
+ }
}
+ actionProject.getRepositories().mavenCentral();
}
});
- final Configuration configuration = project.getConfigurations().maybeCreate(TomEEEmbeddedExtension.NAME);
+ String configName = TomEEEmbeddedExtension.ALIAS;
+ try {
+ project.getConfigurations().getByName(configName);
+ } catch (final UnknownConfigurationException uce) {
+ configName = TomEEEmbeddedExtension.NAME;
+ }
+
+ final Configuration configuration = project.getConfigurations().maybeCreate(configName);
configuration.getIncoming().beforeResolve(new Action<ResolvableDependencies>() {
@Override
public void execute(final ResolvableDependencies resolvableDependencies) {
+ String tomeeVersion = null;
+ for (final String name : extensions) {
+ final TomEEEmbeddedExtension extension = TomEEEmbeddedExtension.class.cast(project.getExtensions().findByName(name));
+ if (extension == null) {
+ return;
+ }
+ tomeeVersion = extension.getTomeeVersion();
+ if (tomeeVersion != null) {
+ break;
+ }
+ }
+ if (tomeeVersion == null) {
+ try {
+ try (final InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/maven/org.apache.tomee.gradle/tomee-embedded/pom.properties")) {
+ final Properties p = new Properties();
+ p.load(is);
+ tomeeVersion = p.getProperty("version");
+ }
+ } catch (final IOException e) {
+ tomeeVersion = "7.0.2"; // we should never be there
+ }
+ }
+
final DependencyHandler dependencyHandler = project.getDependencies();
final DependencySet dependencies = configuration.getDependencies();
- dependencies.add(dependencyHandler.create("org.apache.tomee:tomee-embedded:" +
- project.getExtensions().findByType(TomEEEmbeddedExtension.class).getTomeeVersion()));
+ dependencies.add(dependencyHandler.create("org.apache.tomee:tomee-embedded:" + tomeeVersion));
}
});
@@ -60,6 +106,5 @@ public class TomEEEmbeddedPlugin implements Plugin<Project> {
put("group", "Embedded Application Server");
put("description", "Start an embedded Apache TomEE server deploying application classpath");
}}, TomEEEmbeddedExtension.NAME);
- TomEEEmbeddedTask.class.cast(project.getTasks().findByName(TomEEEmbeddedExtension.NAME)).setClasspath(configuration);
}
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/c1358ae7/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
index bf06e0b..b3ce50d 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
@@ -21,6 +21,7 @@ import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.artifacts.UnknownConfigurationException;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.TaskAction;
@@ -206,10 +207,13 @@ public class TomEEEmbeddedTask extends DefaultTask {
private void fixConfig() {
final Project project = getProject();
- // final TomEEEmbeddedExtension extension = TomEEEmbeddedExtension.class.cast(project.findProject(TomEEEmbeddedExtension.NAME));
-
+ // defaults
if (classpath == null) {
- classpath = project.getConfigurations().getByName(TomEEEmbeddedExtension.NAME);
+ try {
+ classpath.add(project.getConfigurations().getByName(TomEEEmbeddedExtension.ALIAS).fileCollection());
+ } catch (final UnknownConfigurationException uce) {
+ classpath = project.getConfigurations().getByName(TomEEEmbeddedExtension.NAME);
+ }
}
if (docBase == null) {
@@ -227,6 +231,32 @@ public class TomEEEmbeddedTask extends DefaultTask {
modules = new ArrayList<>(singletonList(main));
}
}
+
+ // extension override
+ for (final String name : asList(TomEEEmbeddedExtension.NAME, TomEEEmbeddedExtension.ALIAS)) {
+ final TomEEEmbeddedExtension extension = TomEEEmbeddedExtension.class.cast(project.getExtensions().findByName(name));
+ if (extension != null) {
+ for (final Field f : TomEEEmbeddedTask.class.getDeclaredFields()) {
+ if (f.isAnnotationPresent(Input.class)) {
+ try {
+ final Field extField = TomEEEmbeddedExtension.class.getDeclaredField(f.getName());
+ if (!extField.isAccessible()) {
+ extField.setAccessible(true);
+ }
+ final Object val = extField.get(extension);
+ if (val != null) {
+ if (!f.isAccessible()) {
+ f.setAccessible(true);
+ }
+ f.set(this, val);
+ }
+ } catch (final IllegalAccessException | NoSuchFieldException e) {
+ getLogger().warn("No field " + f.getName() + " in " + extension, e);
+ }
+ }
+ }
+ }
+ }
}
private void doRun() {
@@ -344,14 +374,18 @@ public class TomEEEmbeddedTask extends DefaultTask {
private Object getConfig(final Class<?> configClass) throws Exception {
final Object config = configClass.newInstance();
- for (final Field field : getClass().getDeclaredFields()) {
+ for (final Field field : TomEEEmbeddedTask.class.getDeclaredFields()) {
try {
- final Field configField = Configuration.class.getDeclaredField(field.getName());
- field.setAccessible(true);
- configField.setAccessible(true);
+ final Field configField = configClass.getDeclaredField(field.getName());
+ if (!field.isAccessible()) {
+ field.setAccessible(true);
+ }
final Object value = field.get(this);
if (value != null) {
+ if (!configField.isAccessible()) {
+ configField.setAccessible(true);
+ }
configField.set(config, value);
getLogger().debug("using " + field.getName() + " = " + value);
}