Bump mdsal to 4.0.1 23/81823/8
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 30 Apr 2019 10:55:09 +0000 (12:55 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 14 May 2019 16:32:29 +0000 (18:32 +0200)
Upgrade mdsal to 4.0.1 and remove most references to Javassist
and its associated streamer implementation.

Change-Id: Ia9dc2c886217f1c353db6523b654e993ed9a397a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
30 files changed:
benchmark/api/pom.xml
benchmark/dsbenchmark/pom.xml
benchmark/ntfbenchmark/pom.xml
benchmark/rpcbenchmark/pom.xml
features/benchmark/odl-benchmark-api/pom.xml
features/mdsal/odl-clustering-test-app/pom.xml
features/mdsal/odl-controller-binding-api/pom.xml
features/mdsal/odl-controller-dom-api/pom.xml
features/mdsal/odl-controller-mdsal-common/pom.xml
features/mdsal/odl-controller-model-topology/pom.xml
features/mdsal/odl-mdsal-broker-local/pom.xml
features/mdsal/odl-mdsal-broker/pom.xml
features/mdsal/odl-mdsal-distributed-datastore/pom.xml
features/mdsal/odl-mdsal-distributed-datastore/src/main/feature/feature.xml
features/mdsal/odl-mdsal-model-inventory/pom.xml
features/mdsal/odl-message-bus-collector/pom.xml
features/mdsal/odl-toaster/pom.xml
karaf/pom.xml
opendaylight/blueprint/pom.xml
opendaylight/config/pom.xml
opendaylight/md-sal/parent/pom.xml
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingBrokerWiring.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/impl/BindingNormalizedCodecTest.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/AbstractDataBrokerTestCustomizer.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingBrokerTestFactory.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java
opendaylight/md-sal/sal-binding-dom-it/pom.xml
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContextIntrospectorFactory.java
opendaylight/model/model-inventory/pom.xml
opendaylight/model/model-topology/pom.xml

index 6784395..1531bb5 100644 (file)
@@ -10,7 +10,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index 949fe5d..a476bc1 100644 (file)
@@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index ae7f68f..a60a123 100644 (file)
@@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index 73b022b..a71c0cc 100644 (file)
@@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index f45a435..d9b4584 100644 (file)
@@ -27,7 +27,7 @@
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>odl-mdsal-binding-base</artifactId>
-            <version>4.0.0</version>
+            <version>4.0.1</version>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
index 9ab9176..613c96d 100644 (file)
@@ -26,7 +26,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
index d6f4647..b0f68d3 100644 (file)
@@ -29,7 +29,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 2f5b95d..73325fd 100644 (file)
@@ -29,7 +29,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 45fa286..0429514 100644 (file)
@@ -28,7 +28,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index a01e5dd..74061d5 100644 (file)
@@ -27,7 +27,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 5a67be4..f2974eb 100644 (file)
@@ -44,7 +44,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index a61bf0b..665023d 100644 (file)
@@ -29,7 +29,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 435f68a..33796a9 100644 (file)
@@ -36,7 +36,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 8da6637..3fb7d3f 100644 (file)
@@ -12,6 +12,7 @@
         <feature version="[3,4)">odl-yangtools-codec</feature>
         <feature version="[4,5)">odl-mdsal-eos-dom</feature>
         <feature version="[4,5)">odl-mdsal-dom-broker</feature>
+        <feature version="[4.0.1,5)">odl-mdsal-binding-dom-adapter</feature>
         <configfile finalname="configuration/initial/akka.conf">
             mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/akkaconf
         </configfile>
index bf2b0a2..b41a876 100644 (file)
@@ -28,7 +28,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index aaeb7f1..454f775 100644 (file)
@@ -37,7 +37,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>4.0.0</version>
+                <version>4.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 1404018..171409a 100644 (file)
@@ -27,7 +27,7 @@
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>odl-mdsal-binding-runtime</artifactId>
-            <version>4.0.0</version>
+            <version>4.0.1</version>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
index b84a047..ca528e5 100644 (file)
@@ -55,7 +55,7 @@
     <dependency>
       <groupId>org.opendaylight.mdsal</groupId>
       <artifactId>features-mdsal</artifactId>
-      <version>4.0.0</version>
+      <version>4.0.1</version>
       <classifier>features</classifier>
       <type>xml</type>
       <scope>runtime</scope>
index b839337..3d00d77 100644 (file)
@@ -27,7 +27,7 @@
       <dependency>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>mdsal-artifacts</artifactId>
-        <version>4.0.0</version>
+        <version>4.0.1</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
index e7794a2..e45a19d 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index 71d28dd..0192189 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>4.0.0</version>
+    <version>4.0.1</version>
     <relativePath/>
   </parent>
 
index 782a018..916077d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
-import javassist.ClassPool;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
@@ -24,10 +23,8 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
 import org.opendaylight.controller.md.sal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
@@ -44,8 +41,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
  */
 public class BindingBrokerWiring implements AutoCloseable {
 
-    private static final JavassistUtils JAVASSIST = JavassistUtils.forClassPool(ClassPool.getDefault());
-
     private final BindingToNormalizedNodeCodec bindingToNormalizedNodeCodec;
     private final ListenerRegistration<SchemaContextListener> mappingCodecListenerReg;
     private final RpcProviderRegistry rpcProviderRegistry;
@@ -64,8 +59,7 @@ public class BindingBrokerWiring implements AutoCloseable {
             DOMNotificationSubscriptionListenerRegistry domNotificationListenerRegistry, DOMDataBroker domDataBroker,
             DOMDataBroker domPingPongDataBroker) {
         // Runtime binding/normalized mapping service
-        BindingNormalizedNodeCodecRegistry codecRegistry
-            = new BindingNormalizedNodeCodecRegistry(StreamWriterGenerator.create(JAVASSIST));
+        BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry();
         bindingToNormalizedNodeCodec = new BindingToNormalizedNodeCodec(classLoadingStrategy, codecRegistry, true);
 
         // Register the BindingToNormalizedNodeCodec with the SchemaService as a SchemaContextListener
index a72eba5..85d3621 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.controller.md.sal.binding.impl;
 
 import static org.junit.Assert.assertEquals;
@@ -25,14 +24,10 @@ import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
-import javassist.ClassPool;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.test.AbstractSchemaAwareTest;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerGenerator;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeLeafOnlyAugment;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService;
@@ -72,9 +67,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
     @Override
     protected void setupWithSchema(final SchemaContext schemaContext) {
         this.context = schemaContext;
-        final DataObjectSerializerGenerator streamWriter = StreamWriterGenerator
-                .create(JavassistUtils.forClassPool(ClassPool.getDefault()));
-        final BindingNormalizedNodeCodecRegistry registry = new BindingNormalizedNodeCodecRegistry(streamWriter);
+        final BindingNormalizedNodeCodecRegistry registry = new BindingNormalizedNodeCodecRegistry();
         this.codec = new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
                 registry, true);
     }
index 722bbd2..2830510 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.controller.md.sal.binding.test;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
-import javassist.ClassPool;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
 import org.opendaylight.controller.md.sal.binding.api.NotificationService;
@@ -25,11 +24,8 @@ import org.opendaylight.controller.md.sal.dom.broker.impl.SerializedDOMDataBroke
 import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore;
 import org.opendaylight.controller.sal.binding.test.util.MockSchemaService;
 import org.opendaylight.controller.sal.core.spi.data.DOMStore;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerGenerator;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -50,9 +46,7 @@ public abstract class AbstractDataBrokerTestCustomizer {
 
     public AbstractDataBrokerTestCustomizer() {
         this.schemaService = new MockSchemaService();
-        final ClassPool pool = ClassPool.getDefault();
-        final DataObjectSerializerGenerator generator = StreamWriterGenerator.create(JavassistUtils.forClassPool(pool));
-        final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(generator);
+        final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry();
         final GeneratedClassLoadingStrategy loading = GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy();
         this.bindingToNormalized = new BindingToNormalizedNodeCodec(loading, codecRegistry);
         this.schemaService.registerSchemaContextListener(this.bindingToNormalized);
index 16c065b..145a59a 100644 (file)
@@ -39,13 +39,13 @@ public class BindingBrokerTestFactory {
         this.executor = executor;
     }
 
-
     public BindingTestContext getTestContext() {
         Preconditions.checkState(executor != null, "Executor is not set.");
         ListeningExecutorService listenableExecutor = MoreExecutors.listeningDecorator(executor);
-        return new BindingTestContext(listenableExecutor, getClassPool(),startWithParsedSchema);
+        return new BindingTestContext(listenableExecutor, startWithParsedSchema);
     }
 
+    @Deprecated
     public ClassPool getClassPool() {
         if (classPool == null) {
             return CLASS_POOL;
@@ -54,6 +54,7 @@ public class BindingBrokerTestFactory {
         return classPool;
     }
 
+    @Deprecated
     public void setClassPool(final ClassPool classPool) {
         this.classPool = classPool;
     }
index 8f4794e..5227f30 100644 (file)
@@ -44,12 +44,9 @@ import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker;
 import org.opendaylight.controller.sal.core.spi.data.DOMStore;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerGenerator;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -64,7 +61,6 @@ public class BindingTestContext implements AutoCloseable {
 
 
     private final ListeningExecutorService executor;
-    private final ClassPool classPool;
 
     private final boolean startWithSchema;
 
@@ -102,13 +98,18 @@ public class BindingTestContext implements AutoCloseable {
         return this.codec;
     }
 
-    protected BindingTestContext(final ListeningExecutorService executor, final ClassPool classPool,
-            final boolean startWithSchema) {
+
+    protected BindingTestContext(final ListeningExecutorService executor, final boolean startWithSchema) {
         this.executor = executor;
-        this.classPool = classPool;
         this.startWithSchema = startWithSchema;
     }
 
+    @Deprecated
+    protected BindingTestContext(final ListeningExecutorService executor, final ClassPool classPool,
+            final boolean startWithSchema) {
+        this(executor, startWithSchema);
+    }
+
     public void startDomDataBroker() {
     }
 
@@ -160,11 +161,7 @@ public class BindingTestContext implements AutoCloseable {
     }
 
     public void startBindingToDomMappingService() {
-        checkState(this.classPool != null, "ClassPool needs to be present");
-
-        final DataObjectSerializerGenerator generator = StreamWriterGenerator.create(
-                JavassistUtils.forClassPool(this.classPool));
-        final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(generator);
+        final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry();
         final GeneratedClassLoadingStrategy loading = GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy();
         this.codec = new BindingToNormalizedNodeCodec(loading,  codecRegistry);
         this.mockSchemaService.registerSchemaContextListener(this.codec);
index 9ef18c4..115dd1e 100644 (file)
@@ -25,7 +25,7 @@
       <dependency>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>mdsal-artifacts</artifactId>
-        <version>4.0.0</version>
+        <version>4.0.1</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
index 1b7c028..8d6f481 100644 (file)
@@ -8,13 +8,10 @@
 package org.opendaylight.controller.cluster.datastore;
 
 import com.google.common.annotations.VisibleForTesting;
-import javassist.ClassPool;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
-import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
 import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
-import org.opendaylight.mdsal.binding.generator.util.JavassistUtils;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 
@@ -45,9 +42,7 @@ public class DatastoreContextIntrospectorFactory {
 
     private BindingNormalizedNodeSerializer newBindingSerializer() {
         BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(
-                StreamWriterGenerator.create(JavassistUtils.forClassPool(ClassPool.getDefault())));
-        codecRegistry.onBindingRuntimeContextUpdated(BindingRuntimeContext.create(classLoadingStrategy,
-                schemaService.getGlobalContext()));
+                BindingRuntimeContext.create(classLoadingStrategy, schemaService.getGlobalContext()));
         return codecRegistry;
     }
 }
index 680a9bf..6f5d305 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>4.0.0</version>
+        <version>4.0.1</version>
         <relativePath/>
     </parent>
 
index e7548a6..4d2d6ca 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>4.0.0</version>
+        <version>4.0.1</version>
         <relativePath/>
     </parent>