Skip to content

Commit dca0447

Browse files
committed
Make the example work in Windows.
1 parent 0e3ab48 commit dca0447

File tree

7 files changed

+108
-48
lines changed

7 files changed

+108
-48
lines changed

examples/fbjava-example/README

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ Set FIREBIRD environment variable.
1919

2020
Set FBJAVA_ROOT environment variable.
2121

22-
Set ISC_USER and ISC_PASSWORD.
23-
2422
Go to this example's root directory.
2523

2624
Run mvn package
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
@echo off
2+
setlocal
3+
4+
set FB_BIN=%FIREBIRD%
5+
set FBJAVA_BIN=%FBJAVA_ROOT%\bin
6+
7+
set THIS_DIR=%~dp0
8+
9+
pushd %THIS_DIR%..
10+
set EXAMPLES_ROOT=%cd%
11+
popd
12+
13+
REM Configure some permissions necessary for our test.
14+
15+
%FB_BIN%\isql -q %FBJAVA_ROOT%\conf\java-security.fdb -i util\security.sql
16+
echo execute procedure setup_fbjava_example('%EXAMPLES_ROOT%', '\'); | %FB_BIN%\isql -q %FBJAVA_ROOT%\conf\java-security.fdb
17+
echo drop procedure setup_fbjava_example; | %FB_BIN%\isql -q %FBJAVA_ROOT%\conf\java-security.fdb
18+
19+
REM Create an empty database.
20+
echo create database '%EXAMPLES_ROOT%\db.fdb' default character set utf8; | %FB_BIN%\isql -q
21+
22+
REM Install the Java plugin.
23+
call %FBJAVA_BIN%\fbjava-deployer.bat --database embedded:%EXAMPLES_ROOT%\db.fdb ^
24+
--install-plugin
25+
26+
REM Store our JAR dependencies on the database.
27+
for %%i in (%EXAMPLES_ROOT%\target\dependency\*.jar) do (
28+
call %FBJAVA_BIN%\fbjava-deployer.bat --database embedded:%EXAMPLES_ROOT%\db.fdb ^
29+
--install-jar %%i %%~xni
30+
)
31+
32+
REM Store our JAR on the database.
33+
call %FBJAVA_BIN%\fbjava-deployer.bat --database embedded:%EXAMPLES_ROOT%\db.fdb ^
34+
--install-jar %EXAMPLES_ROOT%\target\fbjava-example-1.0.0-alpha-1.jar fbjava-example-1.0.0-alpha-1.jar
35+
36+
REM Create the metadata.
37+
%FB_BIN%\isql -q %EXAMPLES_ROOT%\db.fdb -i %THIS_DIR%\database.sql
38+
%FB_BIN%\isql -q %EXAMPLES_ROOT%\db.fdb -i %THIS_DIR%\code.sql

examples/fbjava-example/util/createdb.sh

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,67 +11,26 @@ EXAMPLES_ROOT=`readlink -f $EXAMPLES_ROOT`
1111

1212
# Configure some permissions necessary for our test.
1313

14-
$FB_BIN/isql -q $FBJAVA_ROOT/conf/java-security.fdb <<EOF
15-
set term !;
16-
17-
execute block
18-
as
19-
declare function esc(i varchar(512)) returns varchar(512)
20-
as
21-
begin
22-
return replace(i, '-', '&-');
23-
end
24-
25-
declare pergro_id type of column permission_group.id;
26-
begin
27-
update or insert into permission_group (id, name)
28-
values (next value for seq_permission_group, 'fbjava-example')
29-
matching (id)
30-
returning id into pergro_id;
31-
32-
-- Read permission in the directory.
33-
update or insert into permission (permission_group, class_name, arg1, arg2)
34-
values (:pergro_id, 'java.io.FilePermission', '$EXAMPLES_ROOT', 'read')
35-
matching (permission_group, class_name, arg1, arg2);
36-
37-
-- Write permission in the log file.
38-
update or insert into permission (permission_group, class_name, arg1, arg2)
39-
values (:pergro_id, 'java.io.FilePermission', '$EXAMPLES_ROOT/db.log', 'write')
40-
matching (permission_group, class_name, arg1, arg2);
41-
42-
-- Allow connections to localhost, to interact with the postgresql server.
43-
update or insert into permission (permission_group, class_name, arg1, arg2)
44-
values (:pergro_id, 'java.net.SocketPermission', 'localhost', 'connect')
45-
matching (permission_group, class_name, arg1, arg2);
46-
47-
update or insert into permission_group_grant
48-
(permission_group, database_pattern, grantee_type, grantee_pattern)
49-
values (:pergro_id, esc('$EXAMPLES_ROOT/db.fdb'), 'USER', '$ISC_USER')
50-
matching (permission_group);
51-
end!
52-
53-
commit!
54-
EOF
14+
$FB_BIN/isql -q $FBJAVA_ROOT/conf/java-security.fdb -i util/security.sql
15+
echo "execute procedure setup_fbjava_example('$EXAMPLES_ROOT', '/');" | $FB_BIN/isql -q $FBJAVA_ROOT/conf/java-security.fdb
16+
echo "drop procedure setup_fbjava_example;" | $FB_BIN/isql -q $FBJAVA_ROOT/conf/java-security.fdb
5517

5618
# Create an empty database.
5719
echo "create database '$EXAMPLES_ROOT/db.fdb' default character set utf8;" | $FB_BIN/isql -q
5820

5921
# Install the Java plugin.
6022
$FBJAVA_BIN/fbjava-deployer.sh --database embedded:$EXAMPLES_ROOT/db.fdb \
61-
--user $ISC_USER --password $ISC_PASSWORD \
6223
--install-plugin
6324

6425
# Store our JAR dependencies on the database.
6526
for line in `find $EXAMPLES_ROOT/target/dependency -name '*.jar' -print |xargs -0 echo`
6627
do
6728
$FBJAVA_BIN/fbjava-deployer.sh --database embedded:$EXAMPLES_ROOT/db.fdb \
68-
--user $ISC_USER --password $ISC_PASSWORD \
6929
--install-jar $line `basename $line`
7030
done
7131

7232
# Store our JAR on the database.
7333
$FBJAVA_BIN/fbjava-deployer.sh --database embedded:$EXAMPLES_ROOT/db.fdb \
74-
--user $ISC_USER --password $ISC_PASSWORD \
7534
--install-jar $EXAMPLES_ROOT/target/fbjava-example-1.0.0-alpha-1.jar fbjava-example-1.0.0-alpha-1.jar
7635

7736
# Create the metadata.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@echo off
2+
setlocal
3+
4+
set FB_BIN=%FIREBIRD%
5+
set FBJAVA_BIN=%FBJAVA_ROOT%\bin
6+
7+
set THIS_DIR=%~dp0
8+
9+
set EXAMPLES_ROOT=%THIS_DIR%..
10+
11+
REM Replace our JAR.
12+
call %FBJAVA_BIN%\fbjava-deployer.bat --database embedded:%EXAMPLES_ROOT%\db.fdb ^
13+
--replace-jar %EXAMPLES_ROOT%\target\fbjava-example-1.0.0-alpha-1.jar fbjava-example-1.0.0-alpha-1.jar

examples/fbjava-example/util/replace-jar.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ EXAMPLES_ROOT=`readlink -f $EXAMPLES_ROOT`
1111

1212
# Replace our JAR.
1313
$FBJAVA_BIN/fbjava-deployer.sh --database embedded:$EXAMPLES_ROOT/db.fdb \
14-
--user $ISC_USER --password $ISC_PASSWORD \
1514
--replace-jar $EXAMPLES_ROOT/target/fbjava-example-1.0.0-alpha-1.jar fbjava-example-1.0.0-alpha-1.jar
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
set term !;
2+
3+
create or alter procedure setup_fbjava_example (
4+
root varchar(512),
5+
separator char(1)
6+
)
7+
as
8+
declare function esc(i varchar(512)) returns varchar(512)
9+
as
10+
begin
11+
return replace(i, '-', '&-');
12+
end
13+
14+
declare pergro_id type of column permission_group.id;
15+
begin
16+
merge into permission_group
17+
using rdb$database
18+
on name = 'fbjava-example'
19+
when matched then
20+
update set name = name
21+
when not matched then
22+
insert (id, name) values (next value for seq_permission_group, 'fbjava-example')
23+
returning new.id into pergro_id;
24+
25+
-- Read permission in the directory.
26+
update or insert into permission (permission_group, class_name, arg1, arg2)
27+
values (:pergro_id, 'java.io.FilePermission', :root, 'read')
28+
matching (permission_group, class_name, arg1, arg2);
29+
30+
-- Write permission in the log file.
31+
update or insert into permission (permission_group, class_name, arg1, arg2)
32+
values (:pergro_id, 'java.io.FilePermission', :root || :separator || 'db.log', 'write')
33+
matching (permission_group, class_name, arg1, arg2);
34+
35+
-- Allow connections to localhost, to interact with the postgresql server.
36+
update or insert into permission (permission_group, class_name, arg1, arg2)
37+
values (:pergro_id, 'java.net.SocketPermission', 'localhost', 'connect')
38+
matching (permission_group, class_name, arg1, arg2);
39+
40+
update or insert into permission_group_grant
41+
(permission_group, database_pattern, grantee_type, grantee_pattern)
42+
values (:pergro_id, esc(:root || :separator || 'db.fdb'), 'USER', '%')
43+
matching (permission_group);
44+
end!
45+
46+
set term ;!

src/fbjava-impl/src/main/java/org/firebirdsql/fbjava/impl/DbPolicy.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
*/
5454
final class DbPolicy extends Policy
5555
{
56+
private static final boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows");
5657
private static int count;
5758
private static String securityDatabase;
5859
private static FBConnection securityDb;
@@ -90,7 +91,8 @@ static void databaseOpened() throws SQLException
9091
" on pg.id = pgg.permission_group\n" +
9192
" join permission p\n" +
9293
" on p.permission_group = pg.id\n" +
93-
" where cast(? as varchar(1024)) similar to pgg.database_pattern escape '&' and\n" +
94+
" where cast(? as varchar(1024)) similar to " + windowsUpper("pgg.database_pattern") +
95+
" escape '&' and\n" +
9496
" ((pgg.grantee_type = 'USER' and\n" +
9597
" cast(? as varchar(512)) similar to pgg.grantee_pattern escape '&') or\n" +
9698
" (pgg.grantee_type = 'ROLE' and\n" +
@@ -250,4 +252,9 @@ else if (arg1 != null)
250252
}
251253
}
252254
}
255+
256+
private static String windowsUpper(String s)
257+
{
258+
return IS_WINDOWS ? "upper(" + s + ")" : s;
259+
}
253260
}

0 commit comments

Comments
 (0)