From e25e3e88c119dca2680cf63ba043ad9f6f9939fa Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Wed, 20 Apr 2016 10:54:16 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portal/threadlocal-vars-cleaner@128180 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 26 +++ .project | 23 +++ .settings/org.eclipse.core.resources.prefs | 4 + .settings/org.eclipse.jdt.core.prefs | 5 + .settings/org.eclipse.m2e.core.prefs | 4 + distro/LICENSE | 1 + distro/README | 67 ++++++++ distro/changelog.xml | 5 + distro/descriptor.xml | 47 ++++++ distro/profile.xml | 25 +++ pom.xml | 152 ++++++++++++++++++ .../SmartGearsPortalExecutor.java | 54 +++++++ .../gcube/portal/threadlocalexec/AppTest.java | 38 +++++ target/maven-archiver/pom.properties | 5 + target/profile.xml | 25 +++ ...g.gcube.portal.threadlocalexec.AppTest.xml | 67 ++++++++ ...g.gcube.portal.threadlocalexec.AppTest.txt | 4 + ...hreadlocal-vars-cleaner-0.0.1-SNAPSHOT.jar | Bin 0 -> 4909 bytes ...tGearsPortalExecutor$WrappedRunnable.class | Bin 0 -> 2171 bytes .../SmartGearsPortalExecutor.class | Bin 0 -> 985 bytes 20 files changed, 552 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 distro/LICENSE create mode 100644 distro/README create mode 100644 distro/changelog.xml create mode 100644 distro/descriptor.xml create mode 100644 distro/profile.xml create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.java create mode 100644 src/test/java/org/gcube/portal/threadlocalexec/AppTest.java create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/profile.xml create mode 100644 target/surefire-reports/TEST-org.gcube.portal.threadlocalexec.AppTest.xml create mode 100644 target/surefire-reports/org.gcube.portal.threadlocalexec.AppTest.txt create mode 100644 target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT.jar create mode 100644 target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT/WEB-INF/classes/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor$WrappedRunnable.class create mode 100644 target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT/WEB-INF/classes/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.class diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..4214a97 --- /dev/null +++ b/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..4f26656 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + threadlocal-vars-cleaner + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ec4300d --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..2d9616a --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1 @@ +${gcube.license} \ No newline at end of file diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..35c99c0 --- /dev/null +++ b/distro/README @@ -0,0 +1,67 @@ +The gCube System - ${name} +-------------------------------------------------- + +${description} + + +${gcube.description} + +${gcube.funding} + + +Version +-------------------------------------------------- + +${version} (${buildDate}) + +Please see the file named "changelog.xml" in this directory for the release notes. + + +Authors +-------------------------------------------------- + +* Massimiliano Assante (massimiliano.assante-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy). + + + +Maintainers +----------- + +* Massimiliano Assante (massimiliano.assante-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy). + + +Download information +-------------------------------------------------- + +Source code is available from SVN: + ${scm.url} + +Binaries can be downloaded from the gCube website: + ${gcube.website} + + +Installation +-------------------------------------------------- + +Installation documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/ + + +Documentation +-------------------------------------------------- + +Documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/ + ${gcube.wikiRoot}/ + +Support +-------------------------------------------------- + +Bugs and support requests can be reported in the gCube issue tracking tool: + ${gcube.issueTracking} + + +Licensing +-------------------------------------------------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..1e8a8dc --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,5 @@ + + + First Release + + diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..1edba8b --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,47 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory} + / + true + + README + LICENSE + changelog.xml + profile.xml + + 755 + true + + + target/apidocs + /${artifactId}/doc/api + true + 755 + + + + + ${distroDirectory}/profile.xml + ./ + true + + + target/${build.finalName}.war + /${artifactId} + + + ${distroDirectory}/svnpath.txt + /${artifactId} + true + + + \ No newline at end of file diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..4dda0b9 --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,25 @@ + + + + Library + + ${description} + Portal + ${artifactId} + 1.0.0 + + + ${artifactId} + ${version} + + ${groupId} + ${artifactId} + ${version} + + + ${build.finalName}.war + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1635a19 --- /dev/null +++ b/pom.xml @@ -0,0 +1,152 @@ + + 4.0.0 + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.portal + threadlocal-vars-cleaner + 0.0.1-SNAPSHOT + jar + + threadlocal-vars-cleaner + http://maven.apache.org + This component clean the Smartgears ThreadLocal variables each time a new Thread is assigned to a request from tomcat thread pool + + 1.7 + 6.0.6 + ${project.basedir}/distro + ${project.build.directory}/${project.build.finalName} + distro + + UTF-8 + UTF-8 + + + + + http://svn.d4science.research-infrastructures.eu/gcube/trunk/portal/${project.artifactId} + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + + org.apache.tomcat + catalina + 6.0.29 + provided + + + org.gcube.common + authorization-client + provided + + + org.gcube.common + common-authorization + provided + + + org.slf4j + slf4j-api + provided + + + junit + junit + 3.8.1 + test + + + + threadlocal-vars-cleaner-${project.version} + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + compile + + exploded + + + + + ${webappDirectory} + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2 + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + + copy-profile + install + + copy-resources + + + target + + + ${distroDirectory} + true + + profile.xml + + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.java b/src/main/java/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.java new file mode 100644 index 0000000..6d63bf4 --- /dev/null +++ b/src/main/java/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.java @@ -0,0 +1,54 @@ +package org.gcube.portal.threadlocalexec; + +import org.apache.catalina.core.StandardThreadExecutor; +import org.gcube.common.authorization.library.provider.AuthorizationProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +/** + * + * @author Massimiliano Assante, CNR ISTI + * + */ +public class SmartGearsPortalExecutor extends StandardThreadExecutor { + private static final Logger _log = LoggerFactory.getLogger(SmartGearsPortalExecutor.class); + public SmartGearsPortalExecutor() { + } + +// @Override +// public void execute(Runnable command, long timeout, TimeUnit unit) { +// super.execute(new WrappedRunnable(command), timeout, unit); +// } + + @Override + public void execute(Runnable command) { + super.execute(new WrappedRunnable(command)); + } + + public static class WrappedRunnable implements Runnable{ + + private Runnable runnable; + + protected WrappedRunnable(Runnable runnable){ + this.runnable = runnable; + } + + public void run() { + try{ + this.runnable.run(); + _log.debug("execution finished on thread "+Thread.currentThread().getName() + " server.RStudioServiceImpl LOGtoRemove"); + System.out.println("execution finished on thread "+Thread.currentThread().getName()+ " server.RStudioServiceImpl LOGtoRemove"); + } finally { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); + AuthorizationProvider.instance.reset(); + _log.debug("done reset all the thread locals on thread "+Thread.currentThread().getName()+ " server.RStudioServiceImpl LOGtoRemove"); + System.out.println("done reset all the thread locals on thread "+Thread.currentThread().getName()+ " server.RStudioServiceImpl LOGtoRemove"); + } + } + + } + +} + diff --git a/src/test/java/org/gcube/portal/threadlocalexec/AppTest.java b/src/test/java/org/gcube/portal/threadlocalexec/AppTest.java new file mode 100644 index 0000000..dc8c0d9 --- /dev/null +++ b/src/test/java/org/gcube/portal/threadlocalexec/AppTest.java @@ -0,0 +1,38 @@ +package org.gcube.portal.threadlocalexec; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..b0eeb1b --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Apr 19 18:02:51 CEST 2016 +version=0.0.1-SNAPSHOT +groupId=org.gcube.portal +artifactId=threadlocal-vars-cleaner diff --git a/target/profile.xml b/target/profile.xml new file mode 100644 index 0000000..6396089 --- /dev/null +++ b/target/profile.xml @@ -0,0 +1,25 @@ + + + + Library + + This component clean the Smartgears ThreadLocal variables each time a new Thread is assigned to a request from tomcat thread pool + Portal + threadlocal-vars-cleaner + 1.0.0 + + + threadlocal-vars-cleaner + 0.0.1-SNAPSHOT + + org.gcube.portal + threadlocal-vars-cleaner + 0.0.1-SNAPSHOT + + + threadlocal-vars-cleaner-0.0.1-SNAPSHOT.war + + + + + diff --git a/target/surefire-reports/TEST-org.gcube.portal.threadlocalexec.AppTest.xml b/target/surefire-reports/TEST-org.gcube.portal.threadlocalexec.AppTest.xml new file mode 100644 index 0000000..c04c785 --- /dev/null +++ b/target/surefire-reports/TEST-org.gcube.portal.threadlocalexec.AppTest.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/surefire-reports/org.gcube.portal.threadlocalexec.AppTest.txt b/target/surefire-reports/org.gcube.portal.threadlocalexec.AppTest.txt new file mode 100644 index 0000000..ccb5e1e --- /dev/null +++ b/target/surefire-reports/org.gcube.portal.threadlocalexec.AppTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: org.gcube.portal.threadlocalexec.AppTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec diff --git a/target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT.jar b/target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..9fc65bb055159091974d160037206df0ed16b510 GIT binary patch literal 4909 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 FKLK4+UE%-$ literal 0 HcmV?d00001 diff --git a/target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT/WEB-INF/classes/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.class b/target/threadlocal-vars-cleaner-0.0.1-SNAPSHOT/WEB-INF/classes/org/gcube/portal/threadlocalexec/SmartGearsPortalExecutor.class new file mode 100644 index 0000000000000000000000000000000000000000..315490c259c3d6824e97154d83e15db21293c393 GIT binary patch literal 985 zcmbVK+iuf95IviuabjGOhSESnxuy^oiA5?eC>1YNiz-D3kt&EMv{^5XE60x3HiEz6 z@(=_PAHYW;W}QS-p}cgZ^?28F&di+SU%$Wq1h5C!LV@9FtbOjwY^3-!)~N`2I@U^f zVJtnK8p;f{eh{e_*<_^ji5P_{?~z0p z3LTj9;mQvZ~+16iWQDmz3+@XaV496Gt ztMgim=~Q`3MjLJ1G!wMUEVmt8M~m8!@nk~IF>Ia@aEUP<2`N>QbRJVi_Z&$X>_MDq zsg44p;r9Q2pGU?X2In}6l+F!Oq+xBPN!%faiuAuSw2V#kRzd|9ZStE=E=9Ad4fYN8 zSJXe#p@0TG%lW4ouH-j{g4|lb_9z