1 ##############################################################################
2 # Copyright (c) 2016 SNLab. All rights reserved.
4 # This program and the accompanying materials are made available under the
5 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 # and is available at http://www.eclipse.org/legal/epl-v10.html
7 ##############################################################################
26 PROVIDER=$(grep -rnl src/main/java -e '^\W*public void onSessionInitiated.*$')
27 PROVIDER_CLASS=$(echo $PROVIDER | sed 's_src/main/java/__;s/.java//;s_/_._g')
28 PROVIDER_NAME=$(basename $PROVIDER | sed 's/.java//')
29 PACKAGE=$(dirname $PROVIDER | sed 's_src/main/java/__;s_/_._g')
31 #----------------------
33 DB_FLAG=$(grep 'DataBroker' $PROVIDER)
34 RPC_FLAG=$(grep 'RpcRegistration' $PROVIDER)
35 ROUTED_RPC_FLAG=$(grep 'RoutedRpcRegistration' $PROVIDER)
36 RPC_CONSUME_LIST=$(grep 'getRpcService' $PROVIDER | \
37 sed 's/^\W*\([a-zA-Z_]\+\) *=.*getRpcService( *\([a-zA-Z]\+\)\.class *).*$/\1,\2/')
39 #----------------------
41 rm -rf src/main/config src/main/yang
42 for mf in $(find src/main -name '*Module.java'); do
44 recursive_remove $(dirname $mf)
47 for mf in $(find src/main -name '*ModuleFactory.java'); do
49 recursive_remove $(dirname $mf)
52 for mf in $(find src/test -name '*ModuleTest.java'); do
54 recursive_remove $(dirname $mf)
57 for mf in $(find src/test -name '*ModuleFactoryTest.java'); do
59 recursive_remove $(dirname $mf)
62 #----------------------
64 BLUEPRINT_DIR=src/main/resources/org/opendaylight/blueprint
65 mkdir -p $BLUEPRINT_DIR
66 echo '<?xml version="1.0" encoding="UTF-8"?>
67 <!-- vi: set et smarttab sw=4 tabstop=4: -->
69 Copyright © 2016 SNLab and others. All rights reserved.
71 This program and the accompanying materials are made available under the
72 terms of the Eclipse Public License v1.0 which accompanies this distribution,
73 and is available at http://www.eclipse.org/legal/epl-v10.html
75 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
76 xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
77 odl:use-default-for-reference-types="true">' > $BLUEPRINT_DIR/impl-blueprint.xml
80 if [[ $DB_FLAGS ]]; then
81 echo ' <reference id="dataBroker"
82 interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
83 odl:type="default" />' >> $BLUEPRINT_DIR/impl-blueprint.xml
89 ## insert routedRpcRegistry
93 for rpc in $RPC_CONSUME_LIST; do
94 SERV_NAME=$(echo $rpc | sed 's/^.*,//')
95 SERV_CLASS=$(grep "^import .*\.$SERV_NAME;" $PROVIDER | sed 's/^import \(.*\);$/\1/')
96 if [[ ! $SERV_CLASS ]]; then
97 SERV_CLASS="$PACKAGE.$SERV_NAME"
99 SERV_ID=$(echo ${SERV_NAME:0:1} | tr '[:upper:]' '[:lower:]')${SERV_NAME:1}
100 echo " <odl:rpc-service id='$SERV_ID'
101 interface='$SERV_CLASS' />" >> $BLUEPRINT_DIR/impl-blueprint.xml
105 echo ' <bean id="provider"
106 class="'$PROVIDER_CLASS'"
107 init-method="init" destroy-method="close">' >> $BLUEPRINT_DIR/impl-blueprint.xml
108 if [[ $DB_FLAGS ]]; then
109 echo ' <property name="dataBroker" ref="dataBroker" />' >> $BLUEPRINT_DIR/impl-blueprint.xml
111 for rpc in $RPC_CONSUME_LIST; do
112 SERV_VAL=$(echo $rpc | sed 's/,.*$//')
113 SERV_NAME=$(echo $rpc | sed 's/^.*,//')
114 SERV_ID=$(echo ${SERV_NAME:0:1} | tr '[:upper:]' '[:lower:]')${SERV_NAME:1}
115 echo " <property name='$SERV_VAL' ref='$SERV_ID' />" >> $BLUEPRINT_DIR/impl-blueprint.xml
118 </blueprint>' >> $BLUEPRINT_DIR/impl-blueprint.xml
120 #----------------------
121 # refactor init class
123 s/^import .*ProviderContext;\n$//
124 s/^import .*BindingAwareProvider;\n$//
127 s/^\W*@Override\n *public void onSessionInitiated.*/ public void init() {/
128 s/^\W*@Override\n\( *public void close().*\)/\1/
130 s/ BindingAwareProvider,\?//
131 s/ AutoCloseable,\?//
135 ## refactor dataBroke
136 if [[ $DB_FLAG ]]; then
137 ### refactor dataBroker variable name
138 DB_VAL=$(grep '^\W*private .* DataBroker' $PROVIDER | \
139 sed 's/^\W*private.* DataBroker *\([a-zA-Z_]\+\).*$/\1/')
142 /^package/a\\\n\nimport org.opendaylight.controller.md.sal.binding.api.DataBroker;
143 /private static final Logger/a\\\n private DataBroker dataBroker = null;
144 /public void init()/i\ public void setDataBroker(DataBroker dataBroker) {\n this.dataBroker = dataBroker;\n }\n
145 s/$DB_VAL/dataBroker/g
149 ## refactor rpcService
150 sed -i 's/^\W*\([a-zA-Z_]\+\) *=.*getRpcService.*$//' $PROVIDER
151 for rpc in $RPC_CONSUME_LIST; do
152 SERV_VAL=$(echo $rpc | sed 's/,.*$//')
153 SERV_NAME=$(echo $rpc | sed 's/^.*,//')
154 SERV_SET_VAL=set$(echo ${SERV_VAL:0:1} | tr '[:lower:]' '[:upper:]')${SERV_VAL:1}
156 /public void init()/i\ public void $SERV_SET_VAL(final $SERV_NAME $SERV_VAL) {\n this.$SERV_VAL = $SERV_VAL;\n }\n
164 echo "Usage: $0 [option]"
167 echo " all migrate all subprojects"
168 echo " <dir> only migrate subprojects in <dir>"
169 echo " help display help information"
179 # Migrate all subproject
183 for suffix in alto-{core,basic,extensions}; do
184 for f in $(find $PROJECT_ROOT -name pom.xml); do
185 if [ $(basename $(dirname $f)) = impl ]; then
186 migrate_blueprint $(dirname $f)
195 # Migrate a specific directory
196 for f in $(find $1 -name pom.xml); do
197 if [ $(basename $(dirname $f)) = impl ]; then
198 migrate_blueprint $(dirname $f)