You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2014/02/08 16:51:45 UTC
svn commit: r1566034 - in /tomee/tomee/trunk/tomee/tomee-webaccess: ./
src/main/groovy/org/apache/tomee/webaccess/data/dto/
src/main/groovy/org/apache/tomee/webaccess/rest/
src/main/groovy/org/apache/tomee/webaccess/service/
src/main/webapp/WEB-INF/ sr...
Author: tveronezi
Date: Sat Feb 8 15:51:44 2014
New Revision: 1566034
URL: http://svn.apache.org/r1566034
Log:
https://issues.apache.org/jira/browse/TOMEE-1116
https://issues.apache.org/jira/browse/TOMEE-1117
https://issues.apache.org/jira/browse/TOMEE-1118
Added:
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/data/dto/AuthenticationResultDto.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Authentication.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/Utilities.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/LogTest.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/SessionTest.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/arquillian.xml
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/context.xml
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/log/
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/login.config
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/loginScript.js
Removed:
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/WebServices.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/WsServiceImpl.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/test/javascript/
Modified:
tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/ApplicationConfig.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/KeepAlive.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Log.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Scripting.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Session.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/LogServiceImpl.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ScriptingServiceImpl.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/SessionServiceImpl.groovy
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/WEB-INF/web.xml
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less
tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml Sat Feb 8 15:51:44 2014
@@ -31,8 +31,100 @@
<javaee.api>6.0-5</javaee.api>
<junit.version>4.10</junit.version>
</properties>
+ <profiles>
+ <profile>
+ <id>tomee</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ </profile>
+ </profiles>
+ <repositories>
+ <repository>
+ <id>sonatype.oss.releases</id>
+ <url>https://oss.sonatype.org/content/repositories/releases</url>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>sonatype.oss.releases</id>
+ <url>https://oss.sonatype.org/content/repositories/releases</url>
+ </pluginRepository>
+ </pluginRepositories>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.shrinkwrap.resolver</groupId>
+ <artifactId>shrinkwrap-resolver-bom</artifactId>
+ <version>2.0.1</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-bom</artifactId>
+ <version>1.1.2.Final</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<dependencies>
<dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-embedded</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-cxf-rs</artifactId>
+ <version>${openejb.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>arquillian-tomee-embedded</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat7-websocket</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-webservices</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>ziplock</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.0.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.3.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.openejb.staticweb</groupId>
<artifactId>static-tomee-backbone</artifactId>
<version>${project.version}</version>
@@ -92,12 +184,6 @@
<version>1.7</version>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>${openejb.version}</version>
@@ -124,6 +210,17 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.16</version>
+ <configuration>
+ <systemPropertyVariables>
+ <arquillian.tomee.path>${project.basedir}/target/arquillian-tomee</arquillian.tomee.path>
+ <java.security.auth.login.config>${project.basedir}/target/arquillian-tomee/conf/login.config</java.security.auth.login.config>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ <plugin>
<groupId>com.googlecode.jslint4java</groupId>
<artifactId>jslint4java-maven-plugin</artifactId>
<version>2.0.5</version>
@@ -176,6 +273,30 @@
<tomeeClassifier>jaxrs</tomeeClassifier>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>codenarc-maven-plugin</artifactId>
+ <version>0.18-1</version>
+ <configuration>
+ <sourceDirectory>${project.basedir}/src/main/groovy</sourceDirectory>
+ <groovyVersion>2.0.0</groovyVersion>
+ <codeNarcVersion>0.20</codeNarcVersion>
+ <maxPriority1Violations>0</maxPriority1Violations>
+ <maxPriority2Violations>0</maxPriority2Violations>
+ <maxPriority3Violations>0</maxPriority3Violations>
+ <rulesetfiles>
+ rulesets/basic.xml,rulesets/exceptions.xml,rulesets/imports.xml,rulesets/unnecessary.xml,rulesets/convention.xml
+ </rulesetfiles>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>codenarc</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
\ No newline at end of file
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/data/dto/AuthenticationResultDto.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/data/dto/AuthenticationResultDto.groovy?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/data/dto/AuthenticationResultDto.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/data/dto/AuthenticationResultDto.groovy Sat Feb 8 15:51:44 2014
@@ -0,0 +1,38 @@
+/**
+ *
+ * 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.
+ */
+package org.apache.tomee.webaccess.data.dto
+
+import javax.xml.bind.annotation.XmlAccessType
+import javax.xml.bind.annotation.XmlAccessorType
+import javax.xml.bind.annotation.XmlElement
+import javax.xml.bind.annotation.XmlRootElement
+
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlRootElement
+class AuthenticationResultDto {
+
+ @XmlElement
+ Boolean success
+
+ @XmlElement
+ String info
+
+ @XmlElement
+ String sessionId
+
+}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/ApplicationConfig.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/ApplicationConfig.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/ApplicationConfig.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/ApplicationConfig.groovy Sat Feb 8 15:51:44 2014
@@ -21,11 +21,11 @@ package org.apache.tomee.webaccess.rest
import javax.ws.rs.ApplicationPath
import javax.ws.rs.core.Application
-@ApplicationPath("/rest")
+@ApplicationPath('/rest')
class ApplicationConfig extends Application {
Set<Class<?>> getClasses() {
- [KeepAlive, Log, Scripting, WebServices, Session]
+ [KeepAlive, Log, Scripting, Session, Authentication]
}
}
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Authentication.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Authentication.groovy?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Authentication.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Authentication.groovy Sat Feb 8 15:51:44 2014
@@ -0,0 +1,54 @@
+/**
+ *
+ * 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.
+ */
+
+package org.apache.tomee.webaccess.rest
+
+import org.apache.tomee.webaccess.data.dto.AuthenticationResultDto
+
+import javax.servlet.ServletException
+import javax.servlet.http.HttpServletRequest
+import javax.ws.rs.FormParam
+import javax.ws.rs.POST
+import javax.ws.rs.Path
+import javax.ws.rs.Produces
+import javax.ws.rs.core.Context
+
+@Path('/authentication')
+class Authentication {
+
+ @POST
+ @Produces('application/json')
+ AuthenticationResultDto postUser(
+ @FormParam('user') String user,
+ @FormParam('password') String password, @Context HttpServletRequest request) {
+ def dto = new AuthenticationResultDto(
+ sessionId: request.session.id,
+ success: true
+ )
+ try {
+ request.login(user, password)
+ request.session.setAttribute('authenticated', Boolean.TRUE)
+ } catch (ServletException ignore) {
+ dto.success = false
+ dto.info = 'bad.username.or.password'
+ request.session.setAttribute('authenticated', Boolean.FALSE)
+ }
+ dto
+ }
+
+}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/KeepAlive.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/KeepAlive.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/KeepAlive.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/KeepAlive.groovy Sat Feb 8 15:51:44 2014
@@ -20,13 +20,14 @@ package org.apache.tomee.webaccess.rest
import javax.ws.rs.GET
import javax.ws.rs.Path
+import javax.ws.rs.core.Response
-@Path("/keep-alive")
+@Path('/keep-alive')
class KeepAlive {
@GET
- void ping() {
- // no-op
+ Response ping() {
+ Response.ok().build()
}
}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Log.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Log.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Log.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Log.groovy Sat Feb 8 15:51:44 2014
@@ -25,22 +25,22 @@ import org.apache.tomee.webaccess.servic
import javax.ejb.EJB
import javax.ws.rs.*
-@Path("/log")
+@Path('/log')
class Log {
@EJB
private LogServiceImpl service
@GET
- @Path("/list-files")
- @Produces("application/json")
+ @Path('/list-files')
+ @Produces('application/json')
ListFilesResultDto execute(@FormParam('engine') String engine, @FormParam('script') String script) {
service.listFiles()
}
@GET
- @Path("/load/{fileName}")
- @Produces("application/json")
+ @Path('/load/{fileName}')
+ @Produces('application/json')
LogFileResultDto load(@PathParam('fileName') String fileName) {
service.load(fileName)
}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Scripting.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Scripting.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Scripting.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Scripting.groovy Sat Feb 8 15:51:44 2014
@@ -27,14 +27,14 @@ import javax.ws.rs.POST
import javax.ws.rs.Path
import javax.ws.rs.Produces
-@Path("/scripting")
+@Path('/scripting')
class Scripting {
@EJB
private ScriptingServiceImpl service
@POST
- @Produces("application/json")
+ @Produces('application/json')
ScriptingResultDto execute(@FormParam('engine') String engine, @FormParam('script') String script) {
service.execute(engine, script)
}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Session.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Session.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Session.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/rest/Session.groovy Sat Feb 8 15:51:44 2014
@@ -24,20 +24,20 @@ import org.apache.tomee.webaccess.servic
import javax.ejb.EJB
import javax.ws.rs.*
-@Path("/session")
+@Path('/session')
class Session {
@EJB
private SessionServiceImpl service
@DELETE
- @Path("/expire/{context}/{sessionId}")
- void expireSession(@PathParam("context") String context, @PathParam("sessionId") String sessionId) {
+ @Path('/expire/{context}/{sessionId}')
+ void expireSession(@PathParam('context') String context, @PathParam('sessionId') String sessionId) {
service.expireSession(context, sessionId)
}
@GET
- @Produces("application/json")
+ @Produces('application/json')
List<SessionResultDto> list() {
service.listSessions()
}
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/LogServiceImpl.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/LogServiceImpl.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/LogServiceImpl.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/LogServiceImpl.groovy Sat Feb 8 15:51:44 2014
@@ -31,27 +31,23 @@ import javax.ejb.TransactionAttributeTyp
@RolesAllowed('tomee-admin')
class LogServiceImpl {
- static ListFilesResultDto listFiles() {
- def logFolder = new File(System.getProperty("catalina.base"), "logs")
+ ListFilesResultDto listFiles() {
+ def logFolder = new File(System.getProperty('catalina.base'), 'logs')
def files = logFolder.listFiles()
def names = new TreeSet<String>()
- files.each {
- if (it.length() > 0) {
- names << it.name
- }
- }
+ names.addAll(files.findAll({ it.length() > 0 })*.name)
new ListFilesResultDto(
files: names
)
}
- static LogFileResultDto load(String fileName) {
- def logFolder = new File(System.getProperty("catalina.base"), "logs")
+ LogFileResultDto load(String fileName) {
+ def logFolder = new File(System.getProperty('catalina.base'), 'logs')
def file = new File(logFolder, fileName)
def text
try {
text = file.text
- } catch (FileNotFoundException e) {
+ } catch (FileNotFoundException ignore) {
text = "'$fileName' not found."
}
new LogFileResultDto(
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ScriptingServiceImpl.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ScriptingServiceImpl.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ScriptingServiceImpl.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ScriptingServiceImpl.groovy Sat Feb 8 15:51:44 2014
@@ -32,7 +32,7 @@ import javax.script.SimpleScriptContext
@RolesAllowed('tomee-admin')
class ScriptingServiceImpl {
- static ScriptingResultDto execute(String engine, String script) {
+ ScriptingResultDto execute(String engine, String script) {
ScriptingResultDto result = new ScriptingResultDto(
output: ''
)
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/SessionServiceImpl.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/SessionServiceImpl.groovy?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/SessionServiceImpl.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/SessionServiceImpl.groovy Sat Feb 8 15:51:44 2014
@@ -33,36 +33,46 @@ import java.lang.management.ManagementFa
@RolesAllowed('tomee-admin')
class SessionServiceImpl {
- static void expireSession(String context, String sessionId) {
- def server = ManagementFactory.getPlatformMBeanServer()
+ void expireSession(String context, String sessionId) {
+ def server = ManagementFactory.platformMBeanServer
def name = "Catalina:type=Manager,context=/$context,host=localhost" as String
try {
def contextBean = server.getObjectInstance(new ObjectName(name))
- server.invoke(contextBean.objectName, 'expireSession', [sessionId] as Object[], [String.class.name] as String[])
+ server.invoke(contextBean.objectName, 'expireSession', [sessionId] as Object[], ['java.lang.String'] as String[])
} catch (InstanceNotFoundException ignore) {
// no-op
}
}
- static List<SessionResultDto> listSessions() {
- def server = ManagementFactory.getPlatformMBeanServer()
- def localhostBean = server.getObjectInstance(new ObjectName('Catalina:type=Host,host=localhost'))
+ List<SessionResultDto> listSessions() {
+ def server = ManagementFactory.platformMBeanServer
+ def localhostBean
+ def prefix = 'Catalina'
+ try {
+ localhostBean = server.getObjectInstance(new ObjectName("${prefix}:type=Host,host=localhost"))
+ } catch (InstanceNotFoundException ignore) {
+ prefix = 'Tomcat'
+ localhostBean = server.getObjectInstance(new ObjectName("${prefix}:type=Host,host=localhost"))
+ }
def children = server.getAttribute(localhostBean.objectName, 'children')
def baseNames = children.collect { ObjectName objectName ->
server.getAttribute(objectName, 'baseName')
}
def result = []
baseNames.each { baseName ->
- def name = "Catalina:type=Manager,context=/$baseName,host=localhost" as String
+ def name = "${prefix}:type=Manager,context=/$baseName,host=localhost" as String
try {
def contextBean = server.getObjectInstance(new ObjectName(name))
def maxInactiveInterval = server.getAttribute(contextBean.objectName, 'maxInactiveInterval') as Long
-
def getValue = { String operationName, String sessionId ->
- server.invoke(contextBean.objectName, operationName, [sessionId] as Object[], [String.class.name] as String[])
+ try {
+ server.invoke(contextBean.objectName, operationName, [sessionId] as Object[], ['java.lang.String'] as String[])
+ } catch (IllegalStateException ignore) {
+ // Session invalidated. Just ignore it.
+ }
}
-
- server.invoke(contextBean.objectName, 'listSessionIds', null, null).split(' ').each { String sessionId ->
+ String listSessionIds = server.invoke(contextBean.objectName, 'listSessionIds', null, null)
+ listSessionIds.split(' ').each { String sessionId ->
if (sessionId != '') {
def accessedTs = getValue('getLastAccessedTimestamp', sessionId) as Long
def expirationTs = maxInactiveInterval * 1000 + accessedTs
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/WEB-INF/web.xml?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/WEB-INF/web.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/WEB-INF/web.xml Sat Feb 8 15:51:44 2014
@@ -46,6 +46,12 @@
<security-constraint>
<web-resource-collection>
+ <web-resource-name>Authentication Rest</web-resource-name>
+ <url-pattern>/rest/authentication</url-pattern>
+ </web-resource-collection>
+ </security-constraint>
+ <security-constraint>
+ <web-resource-collection>
<web-resource-name>Secure Content</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less Sat Feb 8 15:51:44 2014
@@ -45,6 +45,18 @@ body {
right: @offset;
margin-bottom: 0;
overflow: auto;
+
+ > div {
+ margin: 0;
+
+ > div.panel-body {
+ margin: 5px;
+ }
+ }
+
+ table {
+ margin: 0;
+ }
}
.ux-logfile-output {
Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars?rev=1566034&r1=1566033&r2=1566034&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars Sat Feb 8 15:51:44 2014
@@ -1,27 +1,34 @@
-<table class="table table-striped">
- <thead>
- <tr>
- <th>{{i18n "session.id"}}</th>
- <th>{{i18n "session.context"}}</th>
- <th>{{i18n "session.creation.date"}}</th>
- <th>{{i18n "session.last.access"}}</th>
- <th>{{i18n "session.expiration.date"}}</th>
- </tr>
- </thead>
- <tbody>
- {{#each sessions}}
- <tr>
- <td>{{this.sessionId}}</td>
- <td>{{this.context}}</td>
- <td>{{timeStampToDate this.creationTs}}</td>
- <td>{{timeStampToDate this.lastAccessTs}}</td>
- <td>{{timeStampToDate this.expirationTs}}
- <a class="ux-expire-btn" href="expire">
+<div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">{{i18n "sessions"}}</h3>
+ </div>
+ <div class="panel-body">
+ <table class="table table-striped table-bordered">
+ <thead>
+ <tr>
+ <th>{{i18n "session.id"}}</th>
+ <th>{{i18n "session.context"}}</th>
+ <th>{{i18n "session.creation.date"}}</th>
+ <th>{{i18n "session.last.access"}}</th>
+ <th>{{i18n "session.expiration.date"}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each sessions}}
+ <tr>
+ <td>{{this.sessionId}}</td>
+ <td>{{this.context}}</td>
+ <td>{{timeStampToDate this.creationTs}}</td>
+ <td>{{timeStampToDate this.lastAccessTs}}</td>
+ <td>{{timeStampToDate this.expirationTs}}
+ <a class="ux-expire-btn" href="expire">
<span data-session-id="{{this.sessionId}}" data-context-id="{{this.context}}"
class="glyphicon glyphicon-trash"></span>
- </a>
- </td>
- </tr>
- {{/each}}
- </tbody>
-</table>
+ </a>
+ </td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ </div>
+</div>
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/Utilities.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/Utilities.groovy?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/Utilities.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/helpers/Utilities.groovy Sat Feb 8 15:51:44 2014
@@ -0,0 +1,70 @@
+/**
+ *
+ * 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.
+ */
+
+package org.apache.tomee.webaccess.test.helpers
+
+import org.apache.commons.io.FileUtils
+import org.apache.http.Consts
+import org.apache.http.NameValuePair
+import org.apache.http.client.entity.UrlEncodedFormEntity
+import org.apache.http.client.methods.CloseableHttpResponse
+import org.apache.http.client.methods.HttpPost
+import org.apache.http.impl.client.CloseableHttpClient
+import org.apache.http.impl.client.HttpClients
+import org.apache.http.message.BasicNameValuePair
+import org.apache.http.util.EntityUtils
+
+class Utilities {
+
+ static void copyFile(String from, String to) {
+ FileUtils.copyInputStreamToFile(
+ Thread.currentThread().contextClassLoader.getResourceAsStream(from),
+ new File("${System.getProperty("arquillian.tomee.path")}/${to}")
+ )
+ }
+
+ static String getBody(CloseableHttpResponse response) {
+ String body = null
+ try {
+ def entity = response.getEntity()
+ body = EntityUtils.toString(entity)
+ EntityUtils.consume(entity)
+ } finally {
+ response.close()
+ }
+ body
+ }
+
+ static String post(URL deploymentURL, CloseableHttpClient client, String path, NameValuePair... postParams) {
+ def post = new HttpPost("${deploymentURL.toURI()}${path}")
+ post.entity = new UrlEncodedFormEntity(new ArrayList<NameValuePair>(Arrays.asList(postParams)), Consts.UTF_8)
+ getBody(client.execute(post))
+ }
+
+ static def withClient(URL deploymentURL, callback) {
+ def client = HttpClients.custom().build()
+ post(deploymentURL, client, 'rest/authentication',
+ new BasicNameValuePair('user', 'admin'),
+ new BasicNameValuePair('password', 'admin')
+ )
+ callback(client)
+ client.close()
+ }
+
+
+}
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/LogTest.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/LogTest.groovy?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/LogTest.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/LogTest.groovy Sat Feb 8 15:51:44 2014
@@ -0,0 +1,69 @@
+/**
+ *
+ * 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.
+ */
+
+package org.apache.tomee.webaccess.test
+
+import org.apache.http.client.methods.HttpGet
+import org.apache.http.impl.client.CloseableHttpClient
+import org.apache.tomee.webaccess.rest.ApplicationConfig
+import org.apache.tomee.webaccess.rest.Authentication
+import org.apache.tomee.webaccess.rest.Log
+import org.apache.tomee.webaccess.service.LogServiceImpl
+import org.apache.tomee.webaccess.test.helpers.Utilities
+import org.jboss.arquillian.container.test.api.Deployment
+import org.jboss.arquillian.junit.Arquillian
+import org.jboss.arquillian.test.api.ArquillianResource
+import org.jboss.shrinkwrap.api.ShrinkWrap
+import org.jboss.shrinkwrap.api.spec.WebArchive
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(Arquillian.class)
+class LogTest {
+
+ @ArquillianResource
+ URL deploymentURL
+
+ @Deployment
+ static WebArchive createDeployment() {
+ Utilities.copyFile('test/loginScript.js', 'conf/loginScript.js')
+ Utilities.copyFile('test/login.config', 'conf/login.config')
+ Utilities.copyFile('test/log/catalina.2014-02-07.log', 'logs/catalina.2014-02-07.log')
+ Utilities.copyFile('test/log/localhost_access_log.2014-02-07.txt', 'logs/localhost_access_log.2014-02-07.txt')
+ ShrinkWrap.create(WebArchive.class, 'webaccess.war').addClasses(
+ Log,
+ ApplicationConfig,
+ Authentication,
+ Log,
+ LogServiceImpl,
+ LogTest
+ ).addAsWebResource(new File('src/test/resources/test/context.xml'), 'META-INF/context.xml')
+ }
+
+ @Test
+ void test() throws Exception {
+ Utilities.withClient(deploymentURL, { CloseableHttpClient client ->
+ Assert.assertEquals('{"listFilesResultDto":{"files":["catalina.2014-02-07.log","localhost_access_log.2014-02-07.txt"]}}',
+ Utilities.getBody(client.execute(new HttpGet("${deploymentURL.toURI()}rest/log/list-files")))
+ )
+ client.execute(new HttpGet("${deploymentURL.toURI()}rest/keep-alive"))
+ })
+ }
+
+}
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/SessionTest.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/SessionTest.groovy?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/SessionTest.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/groovy/org/apache/tomee/webaccess/test/units/SessionTest.groovy Sat Feb 8 15:51:44 2014
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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.
+ */
+
+package org.apache.tomee.webaccess.test
+
+import org.apache.http.client.methods.HttpGet
+import org.apache.http.impl.client.CloseableHttpClient
+import org.apache.tomee.webaccess.rest.ApplicationConfig
+import org.apache.tomee.webaccess.rest.Authentication
+import org.apache.tomee.webaccess.rest.Session
+import org.apache.tomee.webaccess.service.SessionServiceImpl
+import org.apache.tomee.webaccess.test.helpers.Utilities
+import org.jboss.arquillian.container.test.api.Deployment
+import org.jboss.arquillian.junit.Arquillian
+import org.jboss.arquillian.test.api.ArquillianResource
+import org.jboss.shrinkwrap.api.ShrinkWrap
+import org.jboss.shrinkwrap.api.spec.WebArchive
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(Arquillian.class)
+class SessionTest {
+
+ @ArquillianResource
+ URL deploymentURL
+
+ @Deployment
+ static WebArchive createDeployment() {
+ Utilities.copyFile('test/loginScript.js', 'conf/loginScript.js')
+ Utilities.copyFile('test/login.config', 'conf/login.config')
+ ShrinkWrap.create(WebArchive.class, 'webaccess.war').addClasses(
+ ApplicationConfig,
+ Authentication,
+ Session,
+ SessionServiceImpl,
+ SessionTest
+ ).addAsWebResource(new File('src/test/resources/test/context.xml'), 'META-INF/context.xml')
+ }
+
+ @Test
+ void test() throws Exception {
+ Utilities.withClient(deploymentURL, { CloseableHttpClient client ->
+ def content = Utilities.getBody(client.execute(new HttpGet("${deploymentURL.toURI()}rest/session")))
+ Assert.assertEquals(1, (content =~ /context/).count)
+ })
+ Utilities.withClient(deploymentURL, { CloseableHttpClient client ->
+ def content = Utilities.getBody(client.execute(new HttpGet("${deploymentURL.toURI()}rest/session")))
+ Assert.assertEquals(2, (content =~ /context/).count)
+ })
+ }
+
+}
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/arquillian.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/arquillian.xml?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/arquillian.xml (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/arquillian.xml Sat Feb 8 15:51:44 2014
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+-->
+<arquillian>
+ <container qualifier="tomee" default="true">
+ <configuration>
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+ <property name="dir">target/arquillian-tomee</property>
+ </configuration>
+ </container>
+</arquillian>
\ No newline at end of file
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/context.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/context.xml?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/context.xml (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/context.xml Sat Feb 8 15:51:44 2014
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+-->
+<Context antiJARLocking="true" path="/webaccess">
+ <Realm className="org.apache.catalina.realm.JAASRealm" appName="ScriptLogin"
+ userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal"
+ roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal">
+ </Realm>
+</Context>
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/login.config
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/login.config?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/login.config (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/login.config Sat Feb 8 15:51:44 2014
@@ -0,0 +1,5 @@
+ScriptLogin {
+ org.apache.openejb.core.security.jaas.ScriptLoginModule required
+ engineName="js"
+ scriptURI="loginScript.js";
+};
Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/loginScript.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/loginScript.js?rev=1566034&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/loginScript.js (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/test/resources/test/loginScript.js Sat Feb 8 15:51:44 2014
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+var result = new java.util.ArrayList();
+result.add('tomee-admin');
+result;
\ No newline at end of file