aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java')
-rw-r--r--framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java141
1 files changed, 0 insertions, 141 deletions
diff --git a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java b/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
deleted file mode 100644
index 3e3e17a0..00000000
--- a/framework/src/onos/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosCfgMojo.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * 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.onosproject.maven;
-
-import com.thoughtworks.qdox.JavaProjectBuilder;
-import com.thoughtworks.qdox.model.JavaAnnotation;
-import com.thoughtworks.qdox.model.JavaClass;
-import com.thoughtworks.qdox.model.JavaField;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Produces ONOS component configuration catalogue resources.
- */
-@Mojo(name = "cfg", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
-public class OnosCfgMojo extends AbstractMojo {
-
- private static final String COMPONENT = "org.apache.felix.scr.annotations.Component";
- private static final String PROPERTY = "org.apache.felix.scr.annotations.Property";
- private static final String SEP = "|";
-
- /**
- * The directory where the generated catalogue file will be put.
- */
- @Parameter(defaultValue = "${basedir}")
- protected File srcDirectory;
-
- /**
- * The directory where the generated catalogue file will be put.
- */
- @Parameter(defaultValue = "${project.build.outputDirectory}")
- protected File dstDirectory;
-
- @Override
- public void execute() throws MojoExecutionException {
- getLog().info("Generating ONOS component configuration catalogues...");
- try {
- JavaProjectBuilder builder = new JavaProjectBuilder();
- builder.addSourceTree(new File(srcDirectory, "src/main/java"));
- builder.getClasses().forEach(this::processClass);
- } catch (Exception e) {
- e.printStackTrace();
- throw e;
- }
- }
-
- private void processClass(JavaClass javaClass) {
- boolean isComponent = javaClass.getAnnotations().stream()
- .map(ja -> ja.getType().getName().equals(COMPONENT))
- .findFirst().isPresent();
- if (isComponent) {
- List<String> lines = new ArrayList<>();
- javaClass.getFields().forEach(field -> processField(lines, javaClass, field));
- if (!lines.isEmpty()) {
- writeCatalog(javaClass, lines);
- }
- }
- }
-
- private void writeCatalog(JavaClass javaClass, List<String> lines) {
- File dir = new File(dstDirectory, javaClass.getPackageName().replace('.', '/'));
- dir.mkdirs();
-
- File cfgDef = new File(dir, javaClass.getName().replace('.', '/') + ".cfgdef");
- try (FileWriter fw = new FileWriter(cfgDef);
- PrintWriter pw = new PrintWriter(fw)) {
- pw.println("# This file is auto-generated by onos-maven-plugin");
- lines.forEach(pw::println);
- } catch (IOException e) {
- System.err.println("Unable to write catalog for " + javaClass.getName());
- e.printStackTrace();
- }
- }
-
- private void processField(List<String> lines, JavaClass javaClass, JavaField field) {
- field.getAnnotations().forEach(ja -> {
- if (ja.getType().getName().equals(PROPERTY)) {
- lines.add(expand(javaClass, ja.getNamedParameter("name").toString()) +
- SEP + type(field) +
- SEP + defaultValue(javaClass, field, ja) +
- SEP + description(ja));
- }
- });
- }
-
- // TODO: Stuff below is very much hack-ish and should be redone; it works for now though.
-
- private String description(JavaAnnotation annotation) {
- String description = (String) annotation.getNamedParameter("label");
- return description.replaceAll("\" \\+ \"", "")
- .replaceFirst("^[^\"]*\"", "").replaceFirst("\"$", "");
- }
-
- private String type(JavaField field) {
- String ft = field.getType().getName().toUpperCase();
- return ft.equals("INT") ? "INTEGER" : ft;
- }
-
- private String defaultValue(JavaClass javaClass, JavaField field,
- JavaAnnotation annotation) {
- String ft = field.getType().getName().toLowerCase();
- String defValueName = ft.equals("boolean") ? "boolValue" :
- ft.equals("string") ? "value" : ft + "Value";
- Object dv = annotation.getNamedParameter(defValueName);
- return dv == null ? "" : expand(javaClass, dv.toString());
- }
-
- private String stripQuotes(String string) {
- return string.trim().replaceFirst("^[^\"]*\"", "").replaceFirst("\"$", "");
- }
-
- private String expand(JavaClass javaClass, String value) {
- JavaField field = javaClass.getFieldByName(value);
- return field == null ? stripQuotes(value) :
- stripQuotes(field.getCodeBlock().replaceFirst(".*=", "").replaceFirst(";$", ""));
- }
-
-}