-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpopjrunBash
185 lines (153 loc) · 4.83 KB
/
popjrunBash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
#############################################################################################
# POP-Java Application Runner v1.0
# Author : Clement Valentin (clementval)
# Creation date : 07/19/2010
# Description : This script help the devlopper to launch a POP-Java application and to
# generate the object map
# -------------------------------------------------------------------------------------------
# IMPORTANT : Please, keep this log up to date
#
# Update log
# Date Author Description
# 07/19/2010 clementval First version of this script
# 07/27/2010 clementval Add object map generation support
# 11/01/2011 clementval Add JVM option support
#############################################################################################
################################################################
# Define variables and location
################################################################
ADD_CLASSPATH=
GENERATEMAP=
JAR_OBJMAPGEN=/JarFile/popjobjectmapgen.jar
JAR_POPJAVA=/JarFile/popjava.jar
JAR_JAVASSIST=/JarFile/javassist.jar
CLASS_OBJMAPGEN=POPJObjectMap
if [ -z $POPJAVA_LOCATION ]
then
POPJAVA_LOCATION=/usr/local/popj
fi
POPJAVA_JAR=$POPJAVA_LOCATION$JAR_POPJAVA:$POPJAVA_LOCATION$JAR_JAVASSIST
################################################################
# Define the function to print the program usage
################################################################
usage()
{
cat << EOF
POP-Java Application Runner v1.0
This program is used to run a POP-Java application or to generate object map
Usage: popjrun <options> <objectmap> <mainclass>
OPTIONS:
-h, --help Show this message
-v, --verbose Verbose mode
-k, --killall Kill all parallel object (zombie)
-c, --classpath <files> Include JAR or compiled Java class needed to run the application. Files must be separated by a semicolon ":"
OPTIONS FOR OBJECT MAP GENERATION:
-l, --listlong <parclass> Generate the object map for the given parclasses. Parclasses can be a .class, .jar, .obj or .module file. Parclasses must be separated by :
EOF
}
#####################################################
# Handle long options (--option)
#####################################################
OPTIONSLINE=
for i in $*
do
if [[ $i == --* ]]
then
if [ "$i" != "--help" ] && [ "$i" != "--classpath" ] && [ "$i" != "--listlong" ] && [ "$i" != "--killall" ]
then
echo "$i is not a valid option. Program aborted"
usage
exit
fi
i=$(echo "$i" | cut -c 2-3)
fi
OPTIONSLINE=$OPTIONSLINE" "$i
done
if [ "$OPTIONSLINE" == "" ]
then
usage
exit 1
fi
killpo(){
echo "Kill all POP-Java parallel object ..."
PO_PID=1
while [ "$PO_PID" != "" ]
do
PO_PID=$(ps aux | grep "popjava.broker.Broker" | grep -v grep | head -n 1 | awk -F" " '{print $2}')
if [ "$PO_PID" != "" ]
then
kill $PO_PID
else
PO_PID=""
fi
done
}
#####################################################
# Handle the options with getopts
#####################################################
while getopts “hvkc:l:a:” OPTION $OPTIONSLINE
do
case $OPTION in
h)
usage
exit 0
;;
c)
ADD_CLASSPATH=$OPTARG":"
;;
l)
GENERATEMAP=1
FILES=$OPTARG
;;
v)
VERBOSE=1
;;
k)
killpo
exit
;;
a)
APPEND="-append="
FILE=$OPTARG
;;
?)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
#####################################################
# Object map generation
#####################################################
if [ $GENERATEMAP ]
then
[ $VERBOSE ] && echo "java -cp $POPJAVA_LOCATION$JAR_OBJMAPGEN:$POPJAVA_LOCATION$JAR_POPJAVA:$POPJAVA_LOCATION$JAR_JAVASSIST $CLASS_OBJMAPGEN -cwd=$PWD $APPEND$FILE -file=$FILES"
java -cp $POPJAVA_LOCATION$JAR_OBJMAPGEN:$POPJAVA_LOCATION$JAR_POPJAVA:$POPJAVA_LOCATION$JAR_JAVASSIST $CLASS_OBJMAPGEN -cwd=$PWD $APPEND$FILE -file=$FILES
exit 0
fi
#####################################################
# Run the POP-Java application
#####################################################
OBJECTMAP=$1
shift
MAIN=$1
shift
OTHER=$@
if [ ${OBJECTMAP##*.} == "xml" ]
then
ARGUMENT=$OTHER
else
ARGUMENT=$MAIN" "$OTHER
MAIN=$OBJECTMAP
OBJECTMAP=
fi
if [ "$OBJECTMAP" == "" ]
then
[ $VERBOSE ] && echo "java -cp .:$ADD_CLASSPATH$POPJAVA_JAR $MAIN $ARGUMENT"
java -cp ".:$ADD_CLASSPATH$POPJAVA_JAR" $MAIN $ARGUMENT
else
[ $VERBOSE ] && echo "java -cp .:$ADD_CLASSPATH$POPJAVA_JAR $MAIN -codefile=$OBJECTMAP $ARGUMENT"
java -cp ".:$ADD_CLASSPATH$POPJAVA_JAR" $MAIN -codeconf=$OBJECTMAP $ARGUMENT
fi