Ori Liel has uploaded a new change for review.
Change subject: restapi: Add ability to extract rsdl.xml from jar
......................................................................
restapi: Add ability to extract rsdl.xml from jar
A previous patch moved RSDL generation to build time.
This patch adds a class with a main() method which
copies rsdl.xml, rsdl_gluster.xml to the desired directory.
The idea behind this, is that sdk generation will be
done completely automatically by maven goals. To copy
the files mentioned above (to a directory named, for
example, '/service') - add the following configuration
to pom.xml of any project that depends on
restapi-definition:
<profile>
<id>build-rsdl</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>org.ovirt.engine.api.rsdl.RsdlIOManager</mainClass>
<arguments>
<argument>/service</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Change-Id: I11834dac081e17c702c614ae923575a3debba6eb
Signed-off-by: Ori Liel <[email protected]>
---
M backend/manager/modules/pom.xml
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlIOManager.java
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
4 files changed, 46 insertions(+), 11 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/24385/1
diff --git a/backend/manager/modules/pom.xml b/backend/manager/modules/pom.xml
index 51ea485..476d645 100644
--- a/backend/manager/modules/pom.xml
+++ b/backend/manager/modules/pom.xml
@@ -45,7 +45,7 @@
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
- <excludes>**/RsdlManager.java</excludes>
+ <excludes>**/RsdlManager.java,**/RsdlIOManager.java</excludes>
</configuration>
</plugin>
</plugins>
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlIOManager.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlIOManager.java
new file mode 100644
index 0000000..31ab843
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlIOManager.java
@@ -0,0 +1,38 @@
+package org.ovirt.engine.api.rsdl;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Writer;
+
+public class RsdlIOManager {
+
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
+ public static final String RSDL_FILE_NAME = "/rsdl.xml";
+ public static final String GLUSTER_RSDL_FILE_NAME = "/rsdl_gluster.xml";
+
+ public static void main(String[] args) throws IOException {
+ System.out.println("Copying rsdl.xml, rsdl_gluster.xml to: " +
args[0]);
+ copyRsdl(args[0]);
+ }
+
+ public static void copyRsdl(String outputDirectory) throws IOException {
+ copy(loadAsStream(RSDL_FILE_NAME), new FileWriter(new
File(outputDirectory + RSDL_FILE_NAME)));
+ copy(loadAsStream(GLUSTER_RSDL_FILE_NAME), new FileWriter(new
File(outputDirectory + GLUSTER_RSDL_FILE_NAME)));
+ }
+
+ public static InputStream loadAsStream(String fileName) {
+ return RsdlIOManager.class.getResourceAsStream(fileName);
+ }
+
+ public static void copy(InputStream input, Writer output) throws
IOException {
+ InputStreamReader in = new InputStreamReader(input);
+ char[] buffer = new char[DEFAULT_BUFFER_SIZE];
+ int n = 0;
+ while (-1 != (n = in.read(buffer))) {
+ output.write(buffer, 0, n);
+ }
+ }
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
index c2342b1..76c2336 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
@@ -29,8 +29,6 @@
private static final String GENERAL_METADATA_DESCRIPTION = "These options
are valid for entire application.";
private static final String METADATA_FILE_NAME = "/rsdl_metadata.yaml";
- private static final String RSDL_FILE_NAME = "/rsdl.xml";
- private static final String GLUSTER_RSDL_FILE_NAME = "/rsdl_gluster.xml";
public static void main(String[] args) throws ClassNotFoundException,
IOException {
System.out.println("Generating RSDL files...");
@@ -52,12 +50,12 @@
serializeRsdl(rsdl, outputFileName);
}
- public RSDL loadRsdl(ApplicationMode applicationMode) throws IOException {
- InputStream stream =
- applicationMode == ApplicationMode.GlusterOnly ?
-
this.getClass().getResourceAsStream(GLUSTER_RSDL_FILE_NAME) :
- this.getClass().getResourceAsStream(RSDL_FILE_NAME);
- return JAXB.unmarshal(stream, RSDL.class);
+ public static RSDL loadRsdl(ApplicationMode applicationMode) throws
IOException {
+ String fileName =
+ applicationMode == ApplicationMode.AllModes ?
RsdlIOManager.RSDL_FILE_NAME
+ : RsdlIOManager.GLUSTER_RSDL_FILE_NAME;
+ InputStream rsdlAsStrem = RsdlIOManager.loadAsStream(fileName);
+ return JAXB.unmarshal(rsdlAsStrem, RSDL.class);
}
private static void serializeRsdl(RSDL rsdl, String rsdlLocation) {
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
index 4641b07..ea6e903 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java
@@ -273,8 +273,7 @@
public synchronized RSDL getRSDL() throws ClassNotFoundException,
IOException {
if (rsdl == null) {
- RsdlManager rsdlManager = new RsdlManager();
- rsdl =
rsdlManager.loadRsdl(getCurrent().get(ApplicationMode.class));
+ rsdl =
RsdlManager.loadRsdl(getCurrent().get(ApplicationMode.class));
}
return rsdl;
}
--
To view, visit http://gerrit.ovirt.org/24385
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I11834dac081e17c702c614ae923575a3debba6eb
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ori Liel <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches