Thomas Vachuska
Committed by Gerrit Code Review

Removing need for boilerplate app.xml; Instead defining onos.app.name and onos.a…

…pp.origin (optional) is sufficient to trigger generation of boilerplate app.xml and features.xml files.

Change-Id: Ied8f3f8bf8774fae85e11c79a733b34dd5868949
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<app name="org.onosproject.bgprouter" origin="ON.Lab" version="${feature.version}" 17 +<app name="org.onosproject.bgprouter" origin="ON.Lab" version="${short.version}"
18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" 18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 features="${project.artifactId}"> 19 features="${project.artifactId}">
20 <description>${project.description}</description> 20 <description>${project.description}</description>
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> 17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${short.version}">
18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> 18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 - <feature name="${project.artifactId}" version="${feature.version}" 19 + <feature name="${project.artifactId}" version="${project.version}"
20 description="${project.description}"> 20 description="${project.description}">
21 <feature>onos-api</feature> 21 <feature>onos-api</feature>
22 <bundle>mvn:${project.groupId}/onos-app-routing-api/${project.version}</bundle> 22 <bundle>mvn:${project.groupId}/onos-app-routing-api/${project.version}</bundle>
......
...@@ -39,6 +39,12 @@ ...@@ -39,6 +39,12 @@
39 39
40 <dependency> 40 <dependency>
41 <groupId>org.onosproject</groupId> 41 <groupId>org.onosproject</groupId>
42 + <artifactId>onos-app-routing</artifactId>
43 + <version>${project.version}</version>
44 + </dependency>
45 +
46 + <dependency>
47 + <groupId>org.onosproject</groupId>
42 <artifactId>onlab-misc</artifactId> 48 <artifactId>onlab-misc</artifactId>
43 </dependency> 49 </dependency>
44 50
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.config" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,19 +31,23 @@ ...@@ -31,19 +31,23 @@
31 31
32 <description>Network configuration application</description> 32 <description>Network configuration application</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.config</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 - <dependency> 39 + <dependency>
36 - <groupId>com.fasterxml.jackson.core</groupId> 40 + <groupId>com.fasterxml.jackson.core</groupId>
37 - <artifactId>jackson-databind</artifactId> 41 + <artifactId>jackson-databind</artifactId>
38 - </dependency> 42 + </dependency>
39 - <dependency> 43 + <dependency>
40 - <groupId>com.fasterxml.jackson.core</groupId> 44 + <groupId>com.fasterxml.jackson.core</groupId>
41 - <artifactId>jackson-annotations</artifactId> 45 + <artifactId>jackson-annotations</artifactId>
42 - </dependency> 46 + </dependency>
43 - <dependency> 47 + <dependency>
44 - <groupId>org.onosproject</groupId> 48 + <groupId>org.onosproject</groupId>
45 - <artifactId>onlab-misc</artifactId> 49 + <artifactId>onlab-misc</artifactId>
46 - </dependency> 50 + </dependency>
47 - </dependencies> 51 + </dependencies>
48 52
49 </project> 53 </project>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.fwd" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Reactive forwarding application using flow subsystem</description> 32 <description>Reactive forwarding application using flow subsystem</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.fwd</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.osgi</groupId> 40 <groupId>org.osgi</groupId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.metrics" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Performance metrics collection</description> 32 <description>Performance metrics collection</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.metrics</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.onosproject</groupId> 40 <groupId>org.onosproject</groupId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.mobility" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Host mobility application</description> 32 <description>Host mobility application</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.mobility</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>com.google.guava</groupId> 40 <groupId>com.google.guava</groupId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.optical" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,8 +31,11 @@ ...@@ -31,8 +31,11 @@
31 31
32 <description>Packet/Optical use-case application</description> 32 <description>Packet/Optical use-case application</description>
33 33
34 - <dependencies> 34 + <properties>
35 + <onos.app.name>org.onosproject.optical</onos.app.name>
36 + </properties>
35 37
38 + <dependencies>
36 <dependency> 39 <dependency>
37 <groupId>org.onosproject</groupId> 40 <groupId>org.onosproject</groupId>
38 <artifactId>onos-cli</artifactId> 41 <artifactId>onos-cli</artifactId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.proxyarp" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Proxy ARP/NDP application</description> 32 <description>Proxy ARP/NDP application</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.proxyarp</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.osgi</groupId> 40 <groupId>org.osgi</groupId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.routing" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...\ No newline at end of file ...\ No newline at end of file
...@@ -19,10 +19,6 @@ ...@@ -19,10 +19,6 @@
19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 19 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 21
22 - <artifactId>onos-app-reactive-routing</artifactId>
23 - <packaging>bundle</packaging>
24 - <description>SDN-IP reactive routing application</description>
25 -
26 <parent> 22 <parent>
27 <groupId>org.onosproject</groupId> 23 <groupId>org.onosproject</groupId>
28 <artifactId>onos-apps</artifactId> 24 <artifactId>onos-apps</artifactId>
...@@ -30,6 +26,15 @@ ...@@ -30,6 +26,15 @@
30 <relativePath>../pom.xml</relativePath> 26 <relativePath>../pom.xml</relativePath>
31 </parent> 27 </parent>
32 28
29 + <artifactId>onos-app-reactive-routing</artifactId>
30 + <packaging>bundle</packaging>
31 +
32 + <description>SDN-IP reactive routing application</description>
33 +
34 + <properties>
35 + <onos.app.name>org.onosproject.routing</onos.app.name>
36 + </properties>
37 +
33 <dependencies> 38 <dependencies>
34 <dependency> 39 <dependency>
35 <groupId>org.onosproject</groupId> 40 <groupId>org.onosproject</groupId>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<app name="org.onosproject.sdnip" origin="ON.Lab" version="${feature.version}" 17 +<app name="org.onosproject.sdnip" origin="ON.Lab" version="${short.version}"
18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" 18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 features="${project.artifactId}"> 19 features="${project.artifactId}">
20 <description>${project.description}</description> 20 <description>${project.description}</description>
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> 17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${short.version}">
18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> 18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 - <feature name="onos-app-sdnip" version="${feature.version}" 19 + <feature name="onos-app-sdnip" version="${project.version}"
20 description="${project.description}"> 20 description="${project.description}">
21 <feature>onos-api</feature> 21 <feature>onos-api</feature>
22 <feature>onos-app-proxyarp</feature> 22 <feature>onos-app-proxyarp</feature>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.segmentrouting" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
23 -
...@@ -30,4 +30,8 @@ ...@@ -30,4 +30,8 @@
30 30
31 <description>Segment routing application</description> 31 <description>Segment routing application</description>
32 32
33 + <properties>
34 + <onos.app.name>org.onosproject.segmentrouting</onos.app.name>
35 + </properties>
36 +
33 </project> 37 </project>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.demo" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
23 -
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
32 <description>Flow throughput test application</description> 32 <description>Flow throughput test application</description>
33 33
34 <properties> 34 <properties>
35 + <onos.app.name>org.onosproject.demo</onos.app.name>
35 <web.context>/onos/demo</web.context> 36 <web.context>/onos/demo</web.context>
36 </properties> 37 </properties>
37 38
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.election" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -32,8 +32,11 @@ ...@@ -32,8 +32,11 @@
32 32
33 <description>Master election test application</description> 33 <description>Master election test application</description>
34 34
35 - <dependencies> 35 + <properties>
36 + <onos.app.name>org.onosproject.election</onos.app.name>
37 + </properties>
36 38
39 + <dependencies>
37 <dependency> 40 <dependency>
38 <groupId>org.onosproject</groupId> 41 <groupId>org.onosproject</groupId>
39 <artifactId>onos-api</artifactId> 42 <artifactId>onos-api</artifactId>
......
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Intent performance test application</description> 32 <description>Intent performance test application</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.intentperf</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.onosproject</groupId> 40 <groupId>org.onosproject</groupId>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.drivers" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -32,6 +32,10 @@ ...@@ -32,6 +32,10 @@
32 32
33 <description>Builtin device drivers</description> 33 <description>Builtin device drivers</description>
34 34
35 + <properties>
36 + <onos.app.name>org.onosproject.drivers</onos.app.name>
37 + </properties>
38 +
35 <dependencies> 39 <dependencies>
36 <dependency> 40 <dependency>
37 <groupId>org.osgi</groupId> 41 <groupId>org.osgi</groupId>
...@@ -44,12 +48,6 @@ ...@@ -44,12 +48,6 @@
44 </dependency> 48 </dependency>
45 49
46 <dependency> 50 <dependency>
47 - <groupId>org.onosproject</groupId>
48 - <artifactId>onos-core-serializers</artifactId>
49 - <version>1.2.0-SNAPSHOT</version>
50 - </dependency>
51 -
52 - <dependency>
53 <groupId>org.easymock</groupId> 51 <groupId>org.easymock</groupId>
54 <artifactId>easymock</artifactId> 52 <artifactId>easymock</artifactId>
55 <scope>test</scope> 53 <scope>test</scope>
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!--
3 - ~ Copyright 2015 Open Networking Laboratory
4 - ~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at
8 - ~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~
11 - ~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and
15 - ~ limitations under the License.
16 - -->
17 -<app name="org.onosproject.null" origin="ON.Lab" version="${feature.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}">
20 - <description>${project.description}</description>
21 - <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 -</app>
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
31 31
32 <description>Null southbound providers application</description> 32 <description>Null southbound providers application</description>
33 33
34 + <properties>
35 + <onos.app.name>org.onosproject.null</onos.app.name>
36 + </properties>
37 +
34 <dependencies> 38 <dependencies>
35 <dependency> 39 <dependency>
36 <groupId>org.osgi</groupId> 40 <groupId>org.osgi</groupId>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<app name="org.onosproject.openflow" origin="ON.Lab" version="${feature.version}" 17 +<app name="org.onosproject.openflow" origin="ON.Lab" version="${short.version}"
18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" 18 featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 features="${project.artifactId}"> 19 features="${project.artifactId}">
20 <description>${project.description}</description> 20 <description>${project.description}</description>
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> 17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> 18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 - <feature name="${project.artifactId}" version="${feature.version}" 19 + <feature name="${project.artifactId}" version="${project.version}"
20 description="${project.description}"> 20 description="${project.description}">
21 <feature>onos-api</feature> 21 <feature>onos-api</feature>
22 <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> 22 <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
15 */ 15 */
16 package org.onosproject.maven; 16 package org.onosproject.maven;
17 17
18 -import com.google.common.io.ByteStreams; 18 +import com.google.common.collect.ImmutableList;
19 import org.apache.commons.configuration.ConfigurationException; 19 import org.apache.commons.configuration.ConfigurationException;
20 import org.apache.commons.configuration.XMLConfiguration; 20 import org.apache.commons.configuration.XMLConfiguration;
21 import org.apache.maven.artifact.repository.ArtifactRepository; 21 import org.apache.maven.artifact.repository.ArtifactRepository;
...@@ -39,6 +39,7 @@ import java.util.stream.Collectors; ...@@ -39,6 +39,7 @@ import java.util.stream.Collectors;
39 import java.util.zip.ZipEntry; 39 import java.util.zip.ZipEntry;
40 import java.util.zip.ZipOutputStream; 40 import java.util.zip.ZipOutputStream;
41 41
42 +import static com.google.common.io.ByteStreams.toByteArray;
42 import static org.codehaus.plexus.util.FileUtils.*; 43 import static org.codehaus.plexus.util.FileUtils.*;
43 44
44 /** 45 /**
...@@ -51,7 +52,6 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -51,7 +52,6 @@ public class OnosAppMojo extends AbstractMojo {
51 private static final String NAME = "[@name]"; 52 private static final String NAME = "[@name]";
52 private static final String VERSION = "[@version]"; 53 private static final String VERSION = "[@version]";
53 private static final String FEATURES_REPO = "[@featuresRepo]"; 54 private static final String FEATURES_REPO = "[@featuresRepo]";
54 - private static final String DESCRIPTION = "description";
55 private static final String ARTIFACT = "artifact"; 55 private static final String ARTIFACT = "artifact";
56 56
57 private static final String APP_XML = "app.xml"; 57 private static final String APP_XML = "app.xml";
...@@ -60,16 +60,31 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -60,16 +60,31 @@ public class OnosAppMojo extends AbstractMojo {
60 private static final String MVN_URL = "mvn:"; 60 private static final String MVN_URL = "mvn:";
61 private static final String M2_PREFIX = "m2"; 61 private static final String M2_PREFIX = "m2";
62 62
63 + private static final String ONOS_APP_NAME = "onos.app.name";
64 + private static final String ONOS_APP_ORIGIN = "onos.app.origin";
65 +
63 private static final String SNAPSHOT = "-SNAPSHOT"; 66 private static final String SNAPSHOT = "-SNAPSHOT";
67 +
64 private static final String JAR = "jar"; 68 private static final String JAR = "jar";
65 private static final String XML = "xml"; 69 private static final String XML = "xml";
66 private static final String APP_ZIP = "oar"; 70 private static final String APP_ZIP = "oar";
67 private static final String PACKAGE_DIR = "oar"; 71 private static final String PACKAGE_DIR = "oar";
68 72
73 + private static final String DEFAULT_ORIGIN = "ON.Lab";
74 + private static final String DEFAULT_VERSION = "${short.version}";
75 +
76 + private static final String DEFAULT_FEATURES_REPO =
77 + "mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features";
78 + private static final String DEFAULT_ARTIFACT =
79 + "mvn:${project.groupId}/${project.artifactId}/${project.version}";
80 +
69 private static final int BUFFER_ZIZE = 8192; 81 private static final int BUFFER_ZIZE = 8192;
70 82
71 - private String name, version; 83 + private String name;
72 - private String description, featuresRepo; 84 + private String origin;
85 + private String version = DEFAULT_VERSION;
86 + private String shortVersion;
87 + private String featuresRepo = DEFAULT_FEATURES_REPO;
73 private List<String> artifacts; 88 private List<String> artifacts;
74 89
75 /** 90 /**
...@@ -127,27 +142,37 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -127,27 +142,37 @@ public class OnosAppMojo extends AbstractMojo {
127 private File m2Directory; 142 private File m2Directory;
128 protected File stageDirectory; 143 protected File stageDirectory;
129 protected String projectPath; 144 protected String projectPath;
130 - protected String featureVersion;
131 145
132 @Override 146 @Override
133 public void execute() throws MojoExecutionException { 147 public void execute() throws MojoExecutionException {
134 File appFile = new File(baseDir, APP_XML); 148 File appFile = new File(baseDir, APP_XML);
135 File featuresFile = new File(baseDir, FEATURES_XML); 149 File featuresFile = new File(baseDir, FEATURES_XML);
136 150
137 - if (!appFile.exists()) { 151 + name = (String) project.getProperties().get(ONOS_APP_NAME);
152 +
153 + // If neither the app.xml file exists, nor the onos.app.name property
154 + // is defined, there is nothing for this Mojo to do, so bail.
155 + if (!appFile.exists() && name == null) {
138 return; 156 return;
139 } 157 }
140 158
141 m2Directory = new File(localRepository.getBasedir()); 159 m2Directory = new File(localRepository.getBasedir());
142 stageDirectory = new File(dstDirectory, PACKAGE_DIR); 160 stageDirectory = new File(dstDirectory, PACKAGE_DIR);
143 - featureVersion = projectVersion.replace(SNAPSHOT, ""); 161 + shortVersion = projectVersion.replace(SNAPSHOT, "");
144 projectPath = M2_PREFIX + "/" + artifactDir(projectGroupId, projectArtifactId, projectVersion); 162 projectPath = M2_PREFIX + "/" + artifactDir(projectGroupId, projectArtifactId, projectVersion);
145 163
146 - loadAppFile(appFile); 164 + origin = (String) project.getProperties().get(ONOS_APP_ORIGIN);
165 + origin = origin != null ? origin : DEFAULT_ORIGIN;
166 +
167 + if (appFile.exists()) {
168 + loadAppFile(appFile);
169 + } else {
170 + artifacts = ImmutableList.of(eval(DEFAULT_ARTIFACT));
171 + }
147 172
148 // If there are any artifacts, stage the 173 // If there are any artifacts, stage the
149 if (!artifacts.isEmpty()) { 174 if (!artifacts.isEmpty()) {
150 - getLog().info("Building ONOS application package for " + name + " (v" + version + ")"); 175 + getLog().info("Building ONOS application package for " + name + " (v" + eval(version) + ")");
151 artifacts.forEach(a -> getLog().debug("Including artifact: " + a)); 176 artifacts.forEach(a -> getLog().debug("Including artifact: " + a));
152 177
153 if (stageDirectory.exists() || stageDirectory.mkdirs()) { 178 if (stageDirectory.exists() || stageDirectory.mkdirs()) {
...@@ -173,8 +198,6 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -173,8 +198,6 @@ public class OnosAppMojo extends AbstractMojo {
173 198
174 name = xml.getString(NAME); 199 name = xml.getString(NAME);
175 version = eval(xml.getString(VERSION)); 200 version = eval(xml.getString(VERSION));
176 - description = xml.getString(DESCRIPTION)
177 - .replaceAll("\\$\\{project.description\\}", projectDescription);
178 featuresRepo = eval(xml.getString(FEATURES_REPO)); 201 featuresRepo = eval(xml.getString(FEATURES_REPO));
179 202
180 artifacts = xml.configurationsAt(ARTIFACT).stream() 203 artifacts = xml.configurationsAt(ARTIFACT).stream()
...@@ -195,8 +218,15 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -195,8 +218,15 @@ public class OnosAppMojo extends AbstractMojo {
195 try { 218 try {
196 File file = new File(stageDirectory, APP_XML); 219 File file = new File(stageDirectory, APP_XML);
197 forceMkdir(stageDirectory); 220 forceMkdir(stageDirectory);
198 - String s = eval(fileRead(appFile)); 221 + String contents;
199 - fileWrite(file.getAbsolutePath(), s); 222 +
223 + if (appFile.exists()) {
224 + contents = fileRead(appFile);
225 + } else {
226 + byte[] bytes = toByteArray(getClass().getResourceAsStream(APP_XML));
227 + contents = new String(bytes);
228 + }
229 + fileWrite(file.getAbsolutePath(), eval(contents));
200 } catch (IOException e) { 230 } catch (IOException e) {
201 throw new MojoExecutionException("Unable to process app.xml", e); 231 throw new MojoExecutionException("Unable to process app.xml", e);
202 } 232 }
...@@ -226,7 +256,7 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -226,7 +256,7 @@ public class OnosAppMojo extends AbstractMojo {
226 artifactFile(projectArtifactId, projectVersion, XML, "features"); 256 artifactFile(projectArtifactId, projectVersion, XML, "features");
227 File dstDir = new File(stageDirectory, projectPath); 257 File dstDir = new File(stageDirectory, projectPath);
228 forceMkdir(dstDir); 258 forceMkdir(dstDir);
229 - String s = eval(new String(ByteStreams.toByteArray(stream))); 259 + String s = eval(new String(toByteArray(stream)));
230 fileWrite(new File(dstDir, featuresArtifact).getAbsolutePath(), s); 260 fileWrite(new File(dstDir, featuresArtifact).getAbsolutePath(), s);
231 } 261 }
232 262
...@@ -310,11 +340,13 @@ public class OnosAppMojo extends AbstractMojo { ...@@ -310,11 +340,13 @@ public class OnosAppMojo extends AbstractMojo {
310 // Returns the given string with project variable substitutions. 340 // Returns the given string with project variable substitutions.
311 private String eval(String string) { 341 private String eval(String string) {
312 return string == null ? null : 342 return string == null ? null :
313 - string.replaceAll("\\$\\{project.groupId\\}", projectGroupId) 343 + string.replaceAll("\\$\\{onos.app.name\\}", name)
344 + .replaceAll("\\$\\{onos.app.origin\\}", origin)
345 + .replaceAll("\\$\\{project.groupId\\}", projectGroupId)
314 .replaceAll("\\$\\{project.artifactId\\}", projectArtifactId) 346 .replaceAll("\\$\\{project.artifactId\\}", projectArtifactId)
315 .replaceAll("\\$\\{project.version\\}", projectVersion) 347 .replaceAll("\\$\\{project.version\\}", projectVersion)
316 - .replaceAll("\\$\\{project.description\\}", description) 348 + .replaceAll("\\$\\{short.version\\}", shortVersion)
317 - .replaceAll("\\$\\{feature.version\\}", featureVersion); 349 + .replaceAll("\\$\\{project.description\\}", projectDescription);
318 } 350 }
319 351
320 // Recursively archives the specified directory into a given ZIP stream. 352 // Recursively archives the specified directory into a given ZIP stream.
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<app name="org.onosproject.intentperf" origin="ON.Lab" version="${feature.version}" 17 +<app name="${onos.app.name}" origin="${onos.app.origin}" version="${short.version}"
18 - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" 18 + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
19 - features="${project.artifactId}"> 19 + features="${project.artifactId}">
20 <description>${project.description}</description> 20 <description>${project.description}</description>
21 <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> 21 <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
22 </app> 22 </app>
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
14 ~ See the License for the specific language governing permissions and 14 ~ See the License for the specific language governing permissions and
15 ~ limitations under the License. 15 ~ limitations under the License.
16 --> 16 -->
17 -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> 17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${short.version}">
18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> 18 <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 - <feature name="${project.artifactId}" version="${feature.version}" 19 + <feature name="${project.artifactId}" version="${project.version}"
20 description="${project.description}"> 20 description="${project.description}">
21 <feature>onos-api</feature> 21 <feature>onos-api</feature>
22 <bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle> 22 <bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
......