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 36if [ -z "$TESTJAVA" ]; then 37 if [ $# -lt 1 ]; then exit 1; fi 38 TESTJAVA="$1"; shift 39 TESTSRC="`pwd`" 40 TESTCLASSES="`pwd`" 41fi 42if [ -z "$COMPILEJAVA" ]; then 43 COMPILEJAVA="${TESTJAVA}" 44fi 45 46 java="$TESTJAVA/bin/java" 47javac="$COMPILEJAVA/bin/javac" 48 jar="$COMPILEJAVA/bin/jar" 49 50Die() { printf "%s\n" "$*"; exit 1; } 51 52Sys() { 53 printf "%s\n" "$*"; "$@"; rc="$?"; 54 test "$rc" -eq 0 || Die "Command \"$*\" failed with exitValue $rc"; 55} 56 57cat > StubPreferences.java <<'EOF' 58import java.util.prefs.*; 59 60public 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} 72EOF 73 74cat > StubPreferencesFactory.java <<'EOF' 75import java.util.prefs.*; 76 77public class StubPreferencesFactory implements PreferencesFactory { 78 public Preferences userRoot() { return new StubPreferences(); } 79 public Preferences systemRoot() { return new StubPreferences(); } 80} 81EOF 82 83Sys rm -rf jarDir extDir 84Sys mkdir -p jarDir/META-INF/services extDir 85echo "StubPreferencesFactory" \ 86 > "jarDir/META-INF/services/java.util.prefs.PreferencesFactory" 87Sys "$javac" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d jarDir StubPreferencesFactory.java StubPreferences.java 88 89(cd jarDir && "$jar" ${TESTTOOLVMOPTS} "cf" "../extDir/PrefsSpi.jar" ".") 90 91case "`uname`" in Windows*|CYGWIN* ) CPS=';';; *) CPS=':';; esac 92 93Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES${CPS}extDir/PrefsSpi.jar" \ 94 -Djava.util.prefs.PreferencesFactory=StubPreferencesFactory \ 95 -Djava.util.prefs.userRoot=. \ 96 PrefsSpi "StubPreferences" 97Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES" \ 98 -Djava.util.prefs.userRoot=. \ 99 PrefsSpi "java.util.prefs.*" 100Sys "$java" ${TESTVMOPTS} "-cp" "$TESTCLASSES${CPS}extDir/PrefsSpi.jar" \ 101 -Djava.util.prefs.userRoot=. \ 102 PrefsSpi "StubPreferences" 103 104rm -rf jarDir extDir 105