Skip to content

Commit c35ba7b

Browse files
Add ACL Contacts XML sample
Closes gh-32
1 parent 4ccd5ce commit c35ba7b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3810
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
plugins {
2+
id "java"
3+
id "war"
4+
id "nebula.integtest" version "7.0.9"
5+
id "org.gretty" version "3.0.3"
6+
}
7+
8+
apply from: "gradle/gretty.gradle"
9+
10+
repositories {
11+
jcenter()
12+
maven { url "https://repo.spring.io/snapshot" }
13+
}
14+
15+
dependencies {
16+
implementation platform("org.springframework.security:spring-security-bom:5.6.0-SNAPSHOT")
17+
implementation platform("org.springframework:spring-framework-bom:5.3.9")
18+
implementation platform("org.junit:junit-bom:5.7.0")
19+
20+
implementation "org.springframework.security:spring-security-config"
21+
implementation "org.springframework.security:spring-security-web"
22+
implementation "org.springframework.security:spring-security-acl"
23+
implementation "org.springframework.security:spring-security-taglibs"
24+
implementation 'org.springframework:spring-web'
25+
implementation "org.springframework:spring-webmvc"
26+
implementation 'org.springframework:spring-aop'
27+
implementation 'org.springframework:spring-beans'
28+
implementation 'org.springframework:spring-context'
29+
implementation 'org.springframework:spring-jdbc'
30+
implementation 'org.springframework:spring-tx'
31+
implementation 'org.slf4j:slf4j-api:1.7.30'
32+
implementation 'org.slf4j:slf4j-simple:1.7.30'
33+
implementation 'javax.servlet:jstl:1.2'
34+
35+
runtime 'net.sf.ehcache:ehcache:2.10.5'
36+
runtime 'org.hsqldb:hsqldb:2.5.0'
37+
runtime 'org.springframework:spring-context-support'
38+
39+
providedCompile 'javax.servlet:javax.servlet-api:4.0.0'
40+
41+
testImplementation "org.springframework:spring-test"
42+
testImplementation "org.springframework.security:spring-security-test"
43+
testImplementation("org.junit.jupiter:junit-jupiter-api")
44+
testImplementation "org.assertj:assertj-core:3.18.0"
45+
46+
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
47+
48+
integTestImplementation "org.seleniumhq.selenium:htmlunit-driver:2.44.0"
49+
}
50+
51+
tasks.withType(Test).configureEach {
52+
useJUnitPlatform()
53+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Properties file with server URL settings for remote access.
2+
# Applied by PropertyPlaceholderConfigurer from "clientContext.xml".
3+
#
4+
5+
serverName=localhost
6+
httpPort=8080
7+
contextPath=/spring-security-sample-contacts-filter
8+
rmiPort=1099
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "https://www.springframework.org/dtd/spring-beans.dtd">
3+
4+
<!--
5+
- Contacts web application
6+
- Client application context
7+
-->
8+
9+
<beans>
10+
11+
<!-- Resolves ${...} placeholders from client.properties -->
12+
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
13+
<property name="location"><value>client.properties</value></property>
14+
</bean>
15+
16+
<!-- Proxy for the RMI-exported ContactManager -->
17+
<!-- COMMENTED OUT BY DEFAULT TO AVOID CONFLICTS WITH APPLICATION SERVERS
18+
<bean id="rmiProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
19+
<property name="serviceInterface">
20+
<value>sample.contact.ContactManager</value>
21+
</property>
22+
<property name="serviceUrl">
23+
<value>rmi://${serverName}:${rmiPort}/contactManager</value>
24+
</property>
25+
<property name="remoteInvocationFactory">
26+
<ref bean="remoteInvocationFactory"/>
27+
</property>
28+
</bean>
29+
30+
<bean id="remoteInvocationFactory" class="org.springframework.security.ui.rmi.ContextPropagatingRemoteInvocationFactory"/>
31+
-->
32+
33+
<!-- Proxy for the HTTP-invoker-exported ContactManager -->
34+
<!-- Spring's HTTP invoker uses Java serialization via HTTP -->
35+
<bean id="httpInvokerProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
36+
<property name="serviceInterface">
37+
<value>sample.contact.ContactManager</value>
38+
</property>
39+
<property name="serviceUrl">
40+
<value>http://${serverName}:${httpPort}${contextPath}/remoting/ContactManager-httpinvoker</value>
41+
</property>
42+
<property name="httpInvokerRequestExecutor">
43+
<ref bean="httpInvokerRequestExecutor"/>
44+
</property>
45+
</bean>
46+
47+
<!-- Automatically propagates ContextHolder-managed Authentication principal
48+
and credentials to a HTTP invoker BASIC authentication header -->
49+
<bean id="httpInvokerRequestExecutor" class="org.springframework.security.core.context.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor"/>
50+
51+
<!-- Proxy for the Hessian-exported ContactManager
52+
<bean id="hessianProxy" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
53+
<property name="serviceInterface">
54+
<value>sample.contact.ContactManager</value>
55+
</property>
56+
<property name="serviceUrl">
57+
<value>http://${serverName}:${httpPort}${contextPath}/remoting/ContactManager-hessian</value>
58+
</property>
59+
</bean>
60+
-->
61+
62+
<!-- Proxy for the Burlap-exported ContactManager
63+
<bean id="burlapProxy" class="org.springframework.remoting.caucho.BurlapProxyFactoryBean">
64+
<property name="serviceInterface">
65+
<value>sample.contact.ContactManager</value>
66+
</property>
67+
<property name="serviceUrl">
68+
<value>http://${serverName}:${httpPort}${contextPath}/remoting/ContactManager-burlap</value>
69+
</property>
70+
</bean>
71+
-->
72+
73+
</beans>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
version=5.6.0-SNAPSHOT
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
gretty {
2+
servletContainer = "tomcat9"
3+
contextPath = "/"
4+
fileLogEnabled = false
5+
integrationTestTask = 'integrationTest'
6+
}
7+
8+
Task prepareAppServerForIntegrationTests = project.tasks.create('prepareAppServerForIntegrationTests') {
9+
group = 'Verification'
10+
description = 'Prepares the app server for integration tests'
11+
doFirst {
12+
project.gretty {
13+
httpPort = -1
14+
}
15+
}
16+
}
17+
18+
project.tasks.matching { it.name == "appBeforeIntegrationTest" }.all { task ->
19+
task.dependsOn prepareAppServerForIntegrationTests
20+
}
21+
22+
project.tasks.matching { it.name == "integrationTest" }.all {
23+
task -> task.doFirst {
24+
def gretty = project.gretty
25+
String host = project.gretty.host ?: 'localhost'
26+
boolean isHttps = gretty.httpsEnabled
27+
Integer httpPort = integrationTest.systemProperties['gretty.httpPort']
28+
Integer httpsPort = integrationTest.systemProperties['gretty.httpsPort']
29+
int port = isHttps ? httpsPort : httpPort
30+
String contextPath = project.gretty.contextPath
31+
String httpBaseUrl = "http://${host}:${httpPort}${contextPath}"
32+
String httpsBaseUrl = "https://${host}:${httpsPort}${contextPath}"
33+
String baseUrl = isHttps ? httpsBaseUrl : httpBaseUrl
34+
integrationTest.systemProperty 'app.port', port
35+
integrationTest.systemProperty 'app.httpPort', httpPort
36+
integrationTest.systemProperty 'app.httpsPort', httpsPort
37+
integrationTest.systemProperty 'app.baseURI', baseUrl
38+
integrationTest.systemProperty 'app.httpBaseURI', httpBaseUrl
39+
integrationTest.systemProperty 'app.httpsBaseURI', httpsBaseUrl
40+
}
41+
}
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists

servlet/xml/java/contacts/gradlew

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
#!/usr/bin/env sh
2+
3+
#
4+
# Copyright 2015 the original author or authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
19+
##############################################################################
20+
##
21+
## Gradle start up script for UN*X
22+
##
23+
##############################################################################
24+
25+
# Attempt to set APP_HOME
26+
# Resolve links: $0 may be a link
27+
PRG="$0"
28+
# Need this for relative symlinks.
29+
while [ -h "$PRG" ] ; do
30+
ls=`ls -ld "$PRG"`
31+
link=`expr "$ls" : '.*-> \(.*\)$'`
32+
if expr "$link" : '/.*' > /dev/null; then
33+
PRG="$link"
34+
else
35+
PRG=`dirname "$PRG"`"/$link"
36+
fi
37+
done
38+
SAVED="`pwd`"
39+
cd "`dirname \"$PRG\"`/" >/dev/null
40+
APP_HOME="`pwd -P`"
41+
cd "$SAVED" >/dev/null
42+
43+
APP_NAME="Gradle"
44+
APP_BASE_NAME=`basename "$0"`
45+
46+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48+
49+
# Use the maximum available, or set MAX_FD != -1 to use that value.
50+
MAX_FD="maximum"
51+
52+
warn () {
53+
echo "$*"
54+
}
55+
56+
die () {
57+
echo
58+
echo "$*"
59+
echo
60+
exit 1
61+
}
62+
63+
# OS specific support (must be 'true' or 'false').
64+
cygwin=false
65+
msys=false
66+
darwin=false
67+
nonstop=false
68+
case "`uname`" in
69+
CYGWIN* )
70+
cygwin=true
71+
;;
72+
Darwin* )
73+
darwin=true
74+
;;
75+
MINGW* )
76+
msys=true
77+
;;
78+
NONSTOP* )
79+
nonstop=true
80+
;;
81+
esac
82+
83+
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84+
85+
86+
# Determine the Java command to use to start the JVM.
87+
if [ -n "$JAVA_HOME" ] ; then
88+
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89+
# IBM's JDK on AIX uses strange locations for the executables
90+
JAVACMD="$JAVA_HOME/jre/sh/java"
91+
else
92+
JAVACMD="$JAVA_HOME/bin/java"
93+
fi
94+
if [ ! -x "$JAVACMD" ] ; then
95+
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96+
97+
Please set the JAVA_HOME variable in your environment to match the
98+
location of your Java installation."
99+
fi
100+
else
101+
JAVACMD="java"
102+
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103+
104+
Please set the JAVA_HOME variable in your environment to match the
105+
location of your Java installation."
106+
fi
107+
108+
# Increase the maximum file descriptors if we can.
109+
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110+
MAX_FD_LIMIT=`ulimit -H -n`
111+
if [ $? -eq 0 ] ; then
112+
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113+
MAX_FD="$MAX_FD_LIMIT"
114+
fi
115+
ulimit -n $MAX_FD
116+
if [ $? -ne 0 ] ; then
117+
warn "Could not set maximum file descriptor limit: $MAX_FD"
118+
fi
119+
else
120+
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121+
fi
122+
fi
123+
124+
# For Darwin, add options to specify how the application appears in the dock
125+
if $darwin; then
126+
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127+
fi
128+
129+
# For Cygwin or MSYS, switch paths to Windows format before running java
130+
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131+
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132+
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133+
134+
JAVACMD=`cygpath --unix "$JAVACMD"`
135+
136+
# We build the pattern for arguments to be converted via cygpath
137+
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138+
SEP=""
139+
for dir in $ROOTDIRSRAW ; do
140+
ROOTDIRS="$ROOTDIRS$SEP$dir"
141+
SEP="|"
142+
done
143+
OURCYGPATTERN="(^($ROOTDIRS))"
144+
# Add a user-defined pattern to the cygpath arguments
145+
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146+
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147+
fi
148+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
149+
i=0
150+
for arg in "$@" ; do
151+
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152+
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153+
154+
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155+
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156+
else
157+
eval `echo args$i`="\"$arg\""
158+
fi
159+
i=`expr $i + 1`
160+
done
161+
case $i in
162+
0) set -- ;;
163+
1) set -- "$args0" ;;
164+
2) set -- "$args0" "$args1" ;;
165+
3) set -- "$args0" "$args1" "$args2" ;;
166+
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167+
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168+
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169+
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170+
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171+
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172+
esac
173+
fi
174+
175+
# Escape application args
176+
save () {
177+
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178+
echo " "
179+
}
180+
APP_ARGS=`save "$@"`
181+
182+
# Collect all arguments for the java command, following the shell quoting and substitution rules
183+
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184+
185+
exec "$JAVACMD" "$@"

0 commit comments

Comments
 (0)