Juan Hernandez has uploaded a new change for review.

Change subject: restapi: Use context classloader from YAML
......................................................................

restapi: Use context classloader from YAML

The YAML library that we use to build load the RSDL metadata assumes
that it can load classes using from its own class loader, and this is
incorrect, specially now the the library is loaded from a JBoss module.
The correct way to load classes is to use the context class loader, so
it will work regardless of where in the application the classes are
located.

Change-Id: Ie86d591a0ce71b9984fa9c76ee42de67dce2ae4e
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
M backend/manager/modules/restapi/webapp/pom.xml
A backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF
3 files changed, 13 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/12390/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
index 70b5129..148e417 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
@@ -59,6 +59,8 @@
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
 import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.Constructor;
+import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
 
 public class RsdlBuilder {
 
@@ -95,7 +97,8 @@
         try {
              InputStream stream = FileUtils.get(RESOURCES_PACKAGE, 
PARAMS_METADATA);
              if (stream != null) {
-                 Object result = new Yaml().load(stream);
+                 Constructor constructor = new 
CustomClassLoaderConstructor(Thread.currentThread().getContextClassLoader());
+                 Object result = new Yaml(constructor).load(stream);
                  for (Action action : ((MetaData)result).getActions()) {
                      parametersMetaData.put(action.getName(), action);
                  }
diff --git a/backend/manager/modules/restapi/webapp/pom.xml 
b/backend/manager/modules/restapi/webapp/pom.xml
index 108e52b..384ce2b 100644
--- a/backend/manager/modules/restapi/webapp/pom.xml
+++ b/backend/manager/modules/restapi/webapp/pom.xml
@@ -34,6 +34,13 @@
         <artifactId>maven-war-plugin</artifactId>
         <configuration>
 
+          <!-- Add a the manifest that contains the required
+               dependencies for JBoss modules: -->
+          <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
+            
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
+          </archive>
+
           <!-- Don't include any of the external dependencies, as they are
                already included as references in the manifest (note that the
                web.xml file is included regardless of this configuration): -->
diff --git 
a/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF
 
b/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..24d1ddb
--- /dev/null
+++ 
b/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Dependencies: org.yaml.snakeyaml


--
To view, visit http://gerrit.ovirt.org/12390
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie86d591a0ce71b9984fa9c76ee42de67dce2ae4e
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to