Adding more testcases to Misc xgen
[aaf/authz.git] / misc / xgen / src / main / java / org / onap / aaf / misc / xgen / XGen.java
index 09c0311..632e7a8 100644 (file)
-/**
- * ============LICENSE_START====================================================
- * org.onap.aaf
- * ===========================================================================
- * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
- * ===========================================================================
- * 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.
- * ============LICENSE_END====================================================
- *
- */
-
-package org.onap.aaf.misc.xgen;
-
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.util.Stack;
-
-import org.onap.aaf.misc.env.util.IndentPrintWriter;
-import org.onap.aaf.misc.env.util.StringBuilderWriter;
-
-public class XGen<RT extends XGen<RT>> {
-
-       public static int COMMENT_COLUMN = 40;
-       private StringBuilder backSB = new StringBuilder();
-       private Stack<Back> backStack = new Stack<Back>();
-       
-       protected XGen(Writer w) {
-               forward = new IndentPrintWriter(w);
-       }
-
-       public int pushBack(Back b) {
-               int rv = backStack.size();
-               backStack.push(b);
-               return rv;
-       }
-
-       public boolean pretty = false;
-       protected IndentPrintWriter forward;
-
-       public IndentPrintWriter getWriter() {
-               return forward;
-       }
-
-       protected PrintWriter back = new PrintWriter(
-                               new StringBuilderWriter(backSB));
-
-       @SuppressWarnings("unchecked")
-       public RT pretty() {
-               pretty = true;
-               return (RT) this;
-       }
-
-       protected void prettyln(PrintWriter pw) {
-               if(pretty)pw.println();
-       }
-
-       public RT leaf(Mark mark, String tag, String ... args) {
-               mark.spot = backStack.size();
-               return leaf(tag, args);
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT leaf(String tag, String ... attrs) {
-               forward.append('<');
-               forward.append(tag);
-               addAttrs(attrs);
-               forward.append('>');
-               back.append("</");
-               back.append(tag);
-               back.append('>');
-               backStack.push(new Back(backSB.toString(), false, true));
-               backSB.setLength(0);
-               return (RT)this;
-       }
-
-       public RT incr(String tag, String ... args) {
-               return incr(null, tag, false, args);
-       }
-
-       public RT incr(String tag, boolean oneLine, String ... args) {
-               return incr(null, tag, oneLine, args);
-       }
-
-       public RT incr(Mark mark) {
-               return incr(mark,mark.comment, false, new String[0]);
-       }
-
-       public RT incr(Mark mark, String tag, String ... attrs) {
-               return incr(mark, tag, false, attrs);
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT incr(Mark mark, String tag, boolean oneLine, String ... attrs) {
-               forward.append('<');
-               forward.append(tag);
-               addAttrs(attrs);
-               forward.append('>');
-               
-               back.append("</");
-               back.append(tag);
-               back.append('>');
-       
-               if(pretty) {
-                       if(mark!=null && mark.comment!=null) {
-                               int fi = forward.getIndent()*IndentPrintWriter.INDENT;
-                               for(int i = fi+backSB.length();i<=COMMENT_COLUMN;++i) {
-                                       back.append(' ');
-                               }
-                               back.append("<!-- end ");
-                               back.append(mark.comment);
-                               back.append(" -->");
-                               
-                               forward.toCol(COMMENT_COLUMN);
-                               forward.append("<!-- begin ");
-                               forward.append(mark.comment);
-                               forward.append(" -->");
-                       }
-                       forward.inc();
-                       if(!oneLine) {
-                               forward.println();
-                       }
-                       back.println();
-               }
-               if(mark!=null)mark.spot = backStack.size();
-               backStack.push(new Back(backSB.toString(),true, false));
-               backSB.setLength(0);
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT tagOnly(String tag, String ... attrs) {
-               forward.append('<');
-               forward.append(tag);
-               addAttrs(attrs);
-               forward.append(" />");
-               if(pretty) {
-                       forward.println();
-               }
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT text(String txt) {
-               forward.append(txt);
-               return (RT)this;
-       }
-       
-       @SuppressWarnings("unchecked")
-       public RT xml(String txt) {
-               for(int i=0; i<txt.length();++i) {
-                       char c = txt.charAt(i);
-                       switch(c) {
-                               case '<':
-                                       forward.append("&lt;");
-                                       break;
-                               case '>':
-                                       forward.append("&gt;");
-                                       break;
-                               case '&':
-                                       forward.append("&amp;");
-                                       break;
-                               default:
-                                       forward.append(c);
-                       }
-               }
-               return (RT)this;
-       }
-
-
-       @SuppressWarnings("unchecked")
-       public RT textCR(int tabs, String txt) {
-               for(int i=0;i<tabs;++i) {
-                       forward.append("  ");
-               }
-               forward.append(txt);
-               if(pretty)forward.println();
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT value() {
-               Mark mark = new Mark();
-               mark.spot = backStack.size()-1;
-               end(mark);
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT value(String txt) {
-               forward.append(txt);
-               Mark mark = new Mark();
-               mark.spot = backStack.size()-1;
-               end(mark);
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT value(String txt, int levels) {
-               forward.append(txt);
-               Mark mark = new Mark();
-               mark.spot = backStack.size()-levels;
-               end(mark);
-               return (RT)this;
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT end(Mark mark) {
-               int size = backStack.size();
-               Back c;
-               boolean println = false;
-               for(int i=mark==null?0:mark.spot;i<size;++i) {
-                       c = backStack.pop();
-                       if(c.dec)forward.dec();
-                       forward.append(c.str);
-                       println = c.cr;
-               }
-               if(pretty && println) {
-                       forward.println();
-               }
-               return (RT)this;
-       }
-
-       public RT end() {
-               Mark mark = new Mark();
-               mark.spot=backStack.size()-1;
-               if(mark.spot<0)mark.spot=0;
-               return end(mark);
-       }
-
-       public RT end(int i) {
-               Mark mark = new Mark();
-               mark.spot=backStack.size()-i;
-               if(mark.spot<0)mark.spot=0;
-               return end(mark);
-       }
-
-       public void endAll() {
-               end(new Mark());
-               forward.flush();
-       }
-
-       protected void addAttrs(String[] attrs) {
-               if(attrs!=null) {
-                       for(String attr : attrs) {
-                               if(attr!=null && attr.length()>0) {
-                                       forward.append(' ');
-                                       String[] split = attr.split("=",2);
-                                       switch(split.length) {
-                                               case 0:
-                                                       break;
-                                               case 1:
-                                                       forward.append(split[0]);
-//                                                     forward.append("=\"\"");
-                                                       break;
-                                               default:
-                                                       forward.append(split[0]);
-                                                       forward.append("=\"");
-                                                       forward.append(split[1]);
-                                                       forward.append('"');
-                                                       break;
-                                       }
-                               }
-                       }
-               }
-       }
-
-       @SuppressWarnings("unchecked")
-       public RT comment(String string) {
-               if(pretty) {
-                       forward.print("<!--  ");
-                       forward.print(string);
-                       forward.println("  -->");
-               }
-               return (RT)this;
-       }
-
-       public void setIndent(int indent) {
-               forward.setIndent(indent);
-               forward.toIndent();
-       }
-
-       public int getIndent() {
-               return forward.getIndent();
-       }
-
-}
+/**\r
+ * ============LICENSE_START====================================================\r
+ * org.onap.aaf\r
+ * ===========================================================================\r
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.\r
+ * ===========================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END====================================================\r
+ *\r
+ */\r
+\r
+package org.onap.aaf.misc.xgen;\r
+\r
+import java.io.PrintWriter;\r
+import java.io.Writer;\r
+import java.util.Stack;\r
+\r
+import org.onap.aaf.misc.env.util.IndentPrintWriter;\r
+import org.onap.aaf.misc.env.util.StringBuilderWriter;\r
+\r
+public class XGen<RT extends XGen<RT>> {\r
+\r
+       public static int COMMENT_COLUMN = 40;\r
+       private StringBuilder backSB = new StringBuilder();\r
+       private Stack<Back> backStack = new Stack<Back>();\r
+       \r
+       protected XGen(Writer w) {\r
+               forward = new IndentPrintWriter(w);\r
+       }\r
+\r
+       public int pushBack(Back b) {\r
+               int rv = backStack.size();\r
+               backStack.push(b);\r
+               return rv;\r
+       }\r
+\r
+       public boolean pretty = false;\r
+       protected IndentPrintWriter forward;\r
+\r
+       public IndentPrintWriter getWriter() {\r
+               return forward;\r
+       }\r
+\r
+       protected PrintWriter back = new PrintWriter(\r
+                               new StringBuilderWriter(backSB));\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT pretty() {\r
+               pretty = true;\r
+               return (RT) this;\r
+       }\r
+\r
+       protected void prettyln(PrintWriter pw) {\r
+               if(pretty)pw.println();\r
+       }\r
+\r
+       public RT leaf(Mark mark, String tag, String ... args) {\r
+               mark.spot = backStack.size();\r
+               return leaf(tag, args);\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT leaf(String tag, String ... attrs) {\r
+               forward.append('<');\r
+               forward.append(tag);\r
+               addAttrs(attrs);\r
+               forward.append('>');\r
+               back.append("</");\r
+               back.append(tag);\r
+               back.append('>');\r
+               backStack.push(new Back(backSB.toString(), false, true));\r
+               backSB.setLength(0);\r
+               return (RT)this;\r
+       }\r
+\r
+       public RT incr(String tag, String ... args) {\r
+               return incr(null, tag, false, args);\r
+       }\r
+\r
+       public RT incr(String tag, boolean oneLine, String ... args) {\r
+               return incr(null, tag, oneLine, args);\r
+       }\r
+\r
+       public RT incr(Mark mark) {\r
+               return incr(mark,mark.comment, false, new String[0]);\r
+       }\r
+\r
+       public RT incr(Mark mark, String tag, String ... attrs) {\r
+               return incr(mark, tag, false, attrs);\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT incr(Mark mark, String tag, boolean oneLine, String ... attrs) {\r
+               forward.append('<');\r
+               forward.append(tag);\r
+               addAttrs(attrs);\r
+               forward.append('>');\r
+               \r
+               back.append("</");\r
+               back.append(tag);\r
+               back.append('>');\r
+       \r
+               if(pretty) {\r
+                       if(mark!=null && mark.comment!=null) {\r
+                               int fi = forward.getIndent()*IndentPrintWriter.INDENT;\r
+                               for(int i = fi+backSB.length();i<=COMMENT_COLUMN;++i) {\r
+                                       back.append(' ');\r
+                               }\r
+                               back.append("<!-- end ");\r
+                               back.append(mark.comment);\r
+                               back.append(" -->");\r
+                               \r
+                               forward.toCol(COMMENT_COLUMN);\r
+                               forward.append("<!-- begin ");\r
+                               forward.append(mark.comment);\r
+                               forward.append(" -->");\r
+                       }\r
+                       forward.inc();\r
+                       if(!oneLine) {\r
+                               forward.println();\r
+                       }\r
+                       back.println();\r
+               }\r
+               if(mark!=null)mark.spot = backStack.size();\r
+               backStack.push(new Back(backSB.toString(),true, false));\r
+               backSB.setLength(0);\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT tagOnly(String tag, String ... attrs) {\r
+               forward.append('<');\r
+               forward.append(tag);\r
+               addAttrs(attrs);\r
+               forward.append(" />");\r
+               if(pretty) {\r
+                       forward.println();\r
+               }\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT text(String txt) {\r
+               forward.append(txt);\r
+               return (RT)this;\r
+       }\r
+       \r
+       @SuppressWarnings("unchecked")\r
+       public RT xml(String txt) {\r
+               for(int i=0; i<txt.length();++i) {\r
+                       char c = txt.charAt(i);\r
+                       switch(c) {\r
+                               case '<':\r
+                                       forward.append("&lt;");\r
+                                       break;\r
+                               case '>':\r
+                                       forward.append("&gt;");\r
+                                       break;\r
+                               case '&':\r
+                                       forward.append("&amp;");\r
+                                       break;\r
+                               default:\r
+                                       forward.append(c);\r
+                       }\r
+               }\r
+               return (RT)this;\r
+       }\r
+\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT textCR(int tabs, String txt) {\r
+               for(int i=0;i<tabs;++i) {\r
+                       forward.append("  ");\r
+               }\r
+               forward.append(txt);\r
+               if(pretty)forward.println();\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT value() {\r
+               Mark mark = new Mark();\r
+               mark.spot = backStack.size()-1;\r
+               end(mark);\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT value(String txt) {\r
+               forward.append(txt);\r
+               Mark mark = new Mark();\r
+               mark.spot = backStack.size()-1;\r
+               end(mark);\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT value(String txt, int levels) {\r
+               forward.append(txt);\r
+               Mark mark = new Mark();\r
+               mark.spot = backStack.size()-levels;\r
+               end(mark);\r
+               return (RT)this;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT end(Mark mark) {\r
+               int size = backStack.size();\r
+               Back c;\r
+               boolean println = false;\r
+               for(int i=mark==null?0:mark.spot;i<size;++i) {\r
+                       c = backStack.pop();\r
+                       if(c.dec)forward.dec();\r
+                       forward.append(c.str);\r
+                       println = c.cr;\r
+               }\r
+               if(pretty && println) {\r
+                       forward.println();\r
+               }\r
+               return (RT)this;\r
+       }\r
+\r
+       public RT end() {\r
+               Mark mark = new Mark();\r
+               mark.spot=backStack.size()-1;\r
+               if(mark.spot<0)mark.spot=0;\r
+               return end(mark);\r
+       }\r
+\r
+       public RT end(int i) {\r
+               Mark mark = new Mark();\r
+               mark.spot=backStack.size()-i;\r
+               if(mark.spot<0)mark.spot=0;\r
+               return end(mark);\r
+       }\r
+\r
+       public void endAll() {\r
+               end(new Mark());\r
+               forward.flush();\r
+       }\r
+\r
+       protected void addAttrs(String[] attrs) {\r
+               if(attrs!=null) {\r
+                       for(String attr : attrs) {\r
+                               if(attr!=null && attr.length()>0) {\r
+                                       forward.append(' ');\r
+                                       String[] split = attr.split("=",2);\r
+                                       switch(split.length) {\r
+                                               case 0:\r
+                                                       break;\r
+                                               case 1:\r
+                                                       forward.append(split[0]);\r
+//                                                     forward.append("=\"\"");\r
+                                                       break;\r
+                                               default:\r
+                                                       forward.append(split[0]);\r
+                                                       forward.append("=\"");\r
+                                                       forward.append(split[1]);\r
+                                                       forward.append('"');\r
+                                                       break;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public RT comment(String string) {\r
+               if(pretty) {\r
+                       forward.print("<!--  ");\r
+                       forward.print(string);\r
+                       forward.println("  -->");\r
+               }\r
+               return (RT)this;\r
+       }\r
+\r
+       public void setIndent(int indent) {\r
+               forward.setIndent(indent);\r
+               forward.toIndent();\r
+       }\r
+\r
+       public int getIndent() {\r
+               return forward.getIndent();\r
+       }\r
+\r
+}\r