1 #!/bin/sh 2 3 # 4 # Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. 5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 # 7 # This code is free software; you can redistribute it and/or modify it 8 # under the terms of the GNU General Public License version 2 only, as 9 # published by the Free Software Foundation. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 # @test 27 # @bug 4991526 6514993 7197662 28 # @summary Unit test for Preferences jar providers 29 # 30 # @build PrefsSpi 31 # @run shell PrefsSpi.sh 32 # @author Martin Buchholz 33 34 # Command-line usage: sh PrefsSpi.sh /path/to/build 35 36 if [ -z "$TESTJAVA" ]; then 37 if [ $# -lt 1 ]; then exit 1; fi 38 TESTJAVA="$1"; shift 39 TESTSRC="`pwd`" 40 TESTCLASSES="`pwd`" 41 fi 42 if [ -z "$COMPILEJAVA" ]; then 43 COMPILEJAVA="${TESTJAVA}" 44 fi 45 46 java="$TESTJAVA/bin/java" 47 javac="$COMPILEJAVA/bin/javac" 48 jar="$COMPILEJAVA/bin/jar" 49 50 Die() { printf "%s\n" "$*"; exit 1; } 51 52 Sys() { 53 printf "%s\n" "$*"; "$@"; rc="$?"; 54 test "$rc" -eq 0 || Die "Command \"$*\" failed with exitValue $rc"; 55 } 56 57 cat > StubPreferences.java <<'EOF' 58 import java.util.prefs.*; 59 60 public class StubPreferences extends AbstractPreferences { 61 public StubPreferences() { super(null, ""); } 62 public String getSpi(String x) { return null; } 63 public void putSpi(String x, String y) { } 64 public void removeSpi(String x) { } 65 public AbstractPreferences childSpi(String x) { return null; } 66 public void removeNodeSpi() { } 67 public String[] keysSpi() { return null; } 68 public String[] childrenNamesSpi() { return null; } 69 public void syncSpi() { } 70 public void flushSpi() { } 71 } 72 EOF 73 74 cat > StubPreferencesFactory.java <<'EOF' 75 import java.util.prefs.*; 76 77 public class StubPreferencesFactory implements PreferencesFactory { 78 public Preferences userRoot() { return new StubPreferences(); } 79 public Preferences systemRoot() { return new StubPreferences(); } 80 } 81 EOF 82 83 Sys rm -rf jarDir extDir 84 Sys mkdir -p jarDir/META-INF/services extDir 85 echo "StubPreferencesFactory" \ 86 > "jarDir/META-INF/services/java.util.prefs.PreferencesFactory" 87 Sys "$javac" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d jarDir StubPreferencesFactory.java StubPreferences.java 88 89 (cd jarDir && "$jar" ${TESTTOOLVMOPTS} "cf" "../extDir/PrefsSpi.jar" ".") 90 91 case "`uname`" in Windows*|CYGWIN* ) CPS=';';; *) CPS=':';; esac 92 93 Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES${CPS}extDir/PrefsSpi.jar" \ 94 -Djava.util.prefs.PreferencesFactory=StubPreferencesFactory \ 95 -Djava.util.prefs.userRoot=. \ 96 PrefsSpi "StubPreferences" 97 Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES" \ 98 -Djava.util.prefs.userRoot=. \ 99 PrefsSpi "java.util.prefs.*" 100 Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES${CPS}extDir/PrefsSpi.jar" \ 101 -Djava.util.prefs.userRoot=. \ 102 PrefsSpi "StubPreferences" 103 Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES" "-Djava.ext.dirs=extDir" \ 104 -Djava.util.prefs.userRoot=. \ 105 PrefsSpi "StubPreferences" 106 107 rm -rf jarDir extDir