Juan Hernandez has uploaded a new change for review. Change subject: codegen: Don't require the SDK ......................................................................
codegen: Don't require the SDK Currently the code generator uses some utility classes and some entity classes from the SDK. This introduces a chicken-egg situation, and it makes difficult to regenerate the SDK from scratch. This patch copies the required utility methods from the SDK to the generator, and creates the entity classes from the XML schema before compiling the generator. This removes the dependency on the SDK. Change-Id: I32815467bdd91124daa71c0de377809baa0be718 Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com> --- M ovirt-engine-sdk-java-codegen/pom.xml M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/common/IDocCodegen.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/documentation/DocsGen.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/RsdlCodegen.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/AbstractOverloadableTemplate.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/DeleteMethodTemplate.java A ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/ArrayUtils.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/FormatUtils.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/StringUtils.java M ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/UrlUtils.java 12 files changed, 121 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk-java refs/changes/90/23690/1 diff --git a/ovirt-engine-sdk-java-codegen/pom.xml b/ovirt-engine-sdk-java-codegen/pom.xml index 21deba9..36e5e46 100644 --- a/ovirt-engine-sdk-java-codegen/pom.xml +++ b/ovirt-engine-sdk-java-codegen/pom.xml @@ -38,12 +38,6 @@ <dependencies> <dependency> - <groupId>org.ovirt.engine.sdk</groupId> - <artifactId>ovirt-engine-sdk-java</artifactId> - <version>1.0.0.18-1</version> - </dependency> - - <dependency> <groupId>com.sun.xsom</groupId> <artifactId>xsom</artifactId> <version>20110809</version> @@ -79,6 +73,24 @@ </configuration> </plugin> + <plugin> + <groupId>org.jvnet.jaxb2.maven2</groupId> + <artifactId>maven-jaxb22-plugin</artifactId> + <version>0.8.1</version> + <executions> + <execution> + <id>generate-entities</id> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + <configuration> + <generatePackage>org.ovirt.engine.sdk.entities</generatePackage> + <extension>true</extension> + </configuration> + </plugin> + </plugins> </build> diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/common/IDocCodegen.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/common/IDocCodegen.java index 4f01b97..73a16eb 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/common/IDocCodegen.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/common/IDocCodegen.java @@ -21,7 +21,7 @@ public interface IDocCodegen { /** * Generates the doc string - * + * * @param dl * DetailedLink */ diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/documentation/DocsGen.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/documentation/DocsGen.java index 8c1596d..7285fa8 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/documentation/DocsGen.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/documentation/DocsGen.java @@ -19,6 +19,7 @@ import java.util.List; import org.ovirt.engine.sdk.codegen.common.IDocCodegen; +import org.ovirt.engine.sdk.codegen.utils.ArrayUtils; import org.ovirt.engine.sdk.codegen.utils.FormatUtils; import org.ovirt.engine.sdk.codegen.utils.StringUtils; import org.ovirt.engine.sdk.codegen.utils.UrlUtils; @@ -26,7 +27,6 @@ import org.ovirt.engine.sdk.entities.Header; import org.ovirt.engine.sdk.entities.Parameter; import org.ovirt.engine.sdk.entities.ParametersSet; -import org.ovirt.engine.sdk.utils.ArrayUtils; /** * Provides documentation related codegen capabilities @@ -75,7 +75,7 @@ docParams.append(NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + OVERLOAD + i + ":" + NEW_LINE); addParameterSetDescription(docParams, ps); for (Parameter param : ps.getParameters()) { - if (param.getRequired() != null && param.getRequired().equals(Boolean.TRUE)) { + if (param.isRequired() != null && param.isRequired().equals(Boolean.TRUE)) { docParams.append(PREFIX + PARAM_DETAILS_OFFSET + OVERLOAD_OFFSET + param.getName() + NEW_LINE); } else { @@ -92,7 +92,7 @@ docParams.append(NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + PRE_OPEN); for (Parameter param : detailedLink.getRequest() .getBody().getParametersSets().get(0).getParameters()) { - if (param.getRequired() != null && param.getRequired().equals(Boolean.TRUE)) { + if (param.isRequired() != null && param.isRequired().equals(Boolean.TRUE)) { docParams.append(NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + param.getName()); } else { docParams.append(NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + BREACKS_OPEN @@ -125,7 +125,7 @@ if (!detailedLink.getRequest().getHeaders().getHeaders().isEmpty()) { for (Header header : detailedLink.getRequest().getHeaders().getHeaders()) { if (!ArrayUtils.contains(HEADERS_EXCEPTIONS, header.getName())) { - if (header.getRequired() != null && header.getRequired().equals(Boolean.TRUE)) { + if (header.isRequired() != null && header.isRequired().equals(Boolean.TRUE)) { docParams.append(NEW_LINE + PARAM + FormatUtils.toJava(header.getName() + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + PRE_OPEN + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + header.getValue()) + @@ -153,7 +153,7 @@ docParams.append(NEW_LINE + PREFIX + OVERLOAD + i + ": " + NEW_LINE); addParameterSetDescription(docParams, ps); for (Parameter param : ps.getParameters()) { - if (param.getRequired() != null && param.getRequired().equals(Boolean.TRUE)) { + if (param.isRequired() != null && param.isRequired().equals(Boolean.TRUE)) { docParams.append(PARAM + FormatUtils.toJava(param.getName()) + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + PRE_OPEN + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + param.getValue() + @@ -171,7 +171,7 @@ } } else if (detailedLink.getRequest().getUrl().getParametersSets().size() == 1) { for (Parameter param : detailedLink.getRequest().getUrl().getParametersSets().get(0).getParameters()) { - if (param.getRequired() != null && param.getRequired().equals(Boolean.TRUE)) { + if (param.isRequired() != null && param.isRequired().equals(Boolean.TRUE)) { docParams.append(NEW_LINE + PARAM + UrlUtils.toQueryParam(param.getName()) + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + PRE_OPEN + NEW_LINE + PREFIX + PARAM_DETAILS_OFFSET + param.getValue() + diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java index 0e7666d..8a19e99 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java @@ -20,7 +20,7 @@ import org.ovirt.engine.sdk.codegen.templates.ResourceTemplate; import org.ovirt.engine.sdk.codegen.templates.SubResourceTemplate; import org.ovirt.engine.sdk.codegen.templates.VariableTemplate; -import org.ovirt.engine.sdk.utils.StringUtils; +import org.ovirt.engine.sdk.codegen.utils.StringUtils; /** * Holds sub-resources diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java index 11b1930..d81e93d 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java @@ -29,10 +29,10 @@ import org.ovirt.engine.sdk.codegen.templates.RootResourceDynamicTemplate; import org.ovirt.engine.sdk.codegen.templates.RootResourceStaticTemplate; import org.ovirt.engine.sdk.codegen.templates.VariableTemplate; +import org.ovirt.engine.sdk.codegen.utils.ArrayUtils; import org.ovirt.engine.sdk.codegen.utils.OsUtil; +import org.ovirt.engine.sdk.codegen.utils.StringUtils; import org.ovirt.engine.sdk.entities.API; -import org.ovirt.engine.sdk.utils.ArrayUtils; -import org.ovirt.engine.sdk.utils.StringUtils; /** * Provides SDK entry point codegen capabilities @@ -114,8 +114,7 @@ new String[] { "Actions", "Href", "Links", "ExtensionType", "CreationStatus", "Id", "Name", "Description", "Class" }; - String[] staticMethods = - new String[] { "SpecialObjects", "ProductInfo" }; + String[] staticMethods = new String[] { "SpecialObjects", "ProductInfo" }; for (Method method : API.class.getMethods()) { String simpleMethodName = method.getName().replace("get", ""); diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/RsdlCodegen.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/RsdlCodegen.java index 5e882e6..321964c 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/RsdlCodegen.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/RsdlCodegen.java @@ -60,8 +60,8 @@ import org.ovirt.engine.sdk.entities.HttpMethod; import org.ovirt.engine.sdk.entities.RSDL; import org.ovirt.engine.sdk.entities.VersionCaps; -import org.ovirt.engine.sdk.utils.ArrayUtils; -import org.ovirt.engine.sdk.utils.StringUtils; +import org.ovirt.engine.sdk.codegen.utils.ArrayUtils; +import org.ovirt.engine.sdk.codegen.utils.StringUtils; /** * Provides RSDL related codegen capabilities diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/AbstractOverloadableTemplate.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/AbstractOverloadableTemplate.java index 8e7827f..5848399 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/AbstractOverloadableTemplate.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/AbstractOverloadableTemplate.java @@ -23,7 +23,7 @@ import org.ovirt.engine.sdk.entities.DetailedLink; import org.ovirt.engine.sdk.entities.Header; import org.ovirt.engine.sdk.entities.Parameter; -import org.ovirt.engine.sdk.utils.ArrayUtils; +import org.ovirt.engine.sdk.codegen.utils.ArrayUtils; /** * Abstract Overloadable-Template class diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/DeleteMethodTemplate.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/DeleteMethodTemplate.java index ce165d6..58bdfa8 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/DeleteMethodTemplate.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/templates/DeleteMethodTemplate.java @@ -103,8 +103,8 @@ StringBuffer templateBuff = new StringBuffer(); if (dl.isSetRequest() && dl.getRequest().isSetBody() && dl.getRequest().getBody().isSetType() && ! - dl.getRequest().getBody().getType().equals("") && dl.getRequest().getBody().getRequired() != null - && dl.getRequest().getBody().getRequired().equals(Boolean.TRUE)) { + dl.getRequest().getBody().getType().equals("") && dl.getRequest().getBody().isRequired() != null + && dl.getRequest().getBody().isRequired().equals(Boolean.TRUE)) { // add delete() with body overload (body is mandatory) templateBuff.append(deleteMethodWithBodyTemplate.getTemplate(docParams, dl)); } else { @@ -144,10 +144,10 @@ // add delete() with body overload (body is optional) if (dl.isSetRequest() && dl.getRequest().isSetBody() && dl.getRequest().getBody().isSetType() && !dl.getRequest().getBody().getType().equals("") - && ((dl.getRequest().getBody().getRequired() != null - && !dl.getRequest().getBody().getRequired().equals(Boolean.TRUE)) + && ((dl.getRequest().getBody().isRequired() != null + && !dl.getRequest().getBody().isRequired().equals(Boolean.TRUE)) || - dl.getRequest().getBody().getRequired() == null)) { + dl.getRequest().getBody().isRequired() == null)) { templateBuff.append(deleteMethodWithBodyTemplate.getTemplate(docParams, dl)); } } diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/ArrayUtils.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/ArrayUtils.java new file mode 100644 index 0000000..855fe60 --- /dev/null +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/ArrayUtils.java @@ -0,0 +1,41 @@ +// +// Copyright (c) 2012 Red Hat, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package org.ovirt.engine.sdk.codegen.utils; + +/** + * Provides array services + */ +public class ArrayUtils { + /** + * Checkes if candidate in arr + * + * @param arr + * array to look at + * @param candidate + * candidate to check + * + * @return True if candidate in array + */ + public static <T> boolean contains(T[] arr, T candidate) { + for (T item : arr) { + if (item.equals(candidate)) { + return true; + } + } + return false; + } +} diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/FormatUtils.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/FormatUtils.java index 15626d0..c42681d 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/FormatUtils.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/FormatUtils.java @@ -16,8 +16,6 @@ package org.ovirt.engine.sdk.codegen.utils; -import org.ovirt.engine.sdk.utils.StringUtils; - /** * Provides format related services */ diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/StringUtils.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/StringUtils.java index 73a66a8..67d1a8b 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/StringUtils.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/StringUtils.java @@ -181,4 +181,45 @@ return strings; } + + /** + * Wraps to LowerCase first char in candidate + * + * @param candidate + * + * @return candidate + */ + public static String toLowerCase(String candidate) { + if (candidate.length() >= 1) + return Character.toLowerCase(candidate.charAt(0)) + candidate.substring(1); + return candidate; + } + + /** + * Converts string to singular form + * + * @param candidate + * + * @return singular string + */ + public static String toSingular(String candidate) { + if (candidate.length() >= 1 && candidate.endsWith("s")) { + return candidate.substring(0, candidate.length() - 1); + } + return candidate; + } + + /** + * Converts string to plural form + * + * @param candidate + * + * @return plural string + */ + public static String toPlural(String candidate) { + if (candidate.length() >= 1 && !candidate.endsWith("s")) { + return candidate + "s"; + } + return candidate; + } } diff --git a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/UrlUtils.java b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/UrlUtils.java index c743d8a..a0df8b2 100644 --- a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/UrlUtils.java +++ b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/utils/UrlUtils.java @@ -16,8 +16,6 @@ package org.ovirt.engine.sdk.codegen.utils; -import org.ovirt.engine.sdk.web.UrlParameterType; - /** * Provides URL related services */ @@ -33,9 +31,9 @@ */ public static String toParamType(final String context) { if (context.equals("query")) { - return UrlParameterType.QUERY.toString(); + return "QUERY"; } else if (context.equals("matrix")) { - return UrlParameterType.MATRIX.toString(); + return "MATRIX"; } throw new RuntimeException("Unsupported url parameter type \"" + context + "\"."); } -- To view, visit http://gerrit.ovirt.org/23690 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I32815467bdd91124daa71c0de377809baa0be718 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine-sdk-java Gerrit-Branch: sdk_3.3 Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches