This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new f3e42ce  Assertions API improvements.
f3e42ce is described below

commit f3e42ceb35022d1247a641e27df006d20b205ff8
Author: JamesBognar <[email protected]>
AuthorDate: Sun Jul 11 15:52:16 2021 -0400

    Assertions API improvements.
---
 .../main/ConfigurablePropertyCodeGenerator.java    | 235 ++++-----------------
 .../FluentResponseStatusLineAssertion.java         |  36 ++++
 2 files changed, 80 insertions(+), 191 deletions(-)

diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index 276424a..bdbff07 100644
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -15,182 +15,15 @@ import static org.apache.juneau.internal.IOUtils.*;
 
 import java.io.*;
 import java.lang.reflect.*;
-import java.lang.reflect.Method;
+import java.nio.file.*;
 import java.util.*;
 import java.util.stream.*;
 
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.assertions.*;
 import org.apache.juneau.collections.*;
-import org.apache.juneau.config.*;
-import org.apache.juneau.config.store.*;
-import org.apache.juneau.cp.*;
-import org.apache.juneau.csv.*;
-import org.apache.juneau.html.*;
-import org.apache.juneau.http.*;
-import org.apache.juneau.http.entity.*;
-import org.apache.juneau.http.header.*;
-import org.apache.juneau.http.resource.*;
-import org.apache.juneau.http.response.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.jena.*;
-import org.apache.juneau.jso.*;
-import org.apache.juneau.json.*;
-import org.apache.juneau.jsonschema.*;
-import org.apache.juneau.msgpack.*;
-import org.apache.juneau.mstat.*;
-import org.apache.juneau.oapi.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.plaintext.*;
 import org.apache.juneau.reflect.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.assertions.*;
-import org.apache.juneau.rest.client.*;
-import org.apache.juneau.rest.client.assertion.*;
-import org.apache.juneau.rest.mock.*;
-import org.apache.juneau.serializer.*;
-import org.apache.juneau.soap.*;
-import org.apache.juneau.uon.*;
-import org.apache.juneau.urlencoding.*;
-import org.apache.juneau.xml.*;
 
 public class ConfigurablePropertyCodeGenerator {
-       
-       private final String TODO = "Have this use code scanning.";
-
-       static Class<?>[] classes = new Class<?>[]{
-               AnnotationBuilder.class,
-               ArrayAssertion.class,
-               Assertion.class,
-               BasicHeader.class,
-               BasicRuntimeExceptionBuilder.class,
-               BasicStatusLineBuilder.class,
-               BeanAssertion.class,
-               BeanListAssertion.class,
-               BeanContextBuilder.class,
-               BeanSessionArgs.class,
-               BeanStoreBuilder.class,
-               BeanTraverseBuilder.class,
-               BooleanAssertion.class,
-               ByteArrayAssertion.class,
-               CollectionAssertion.class,
-               ComparableAssertion.class,
-               ConfigBuilder.class,
-               ConfigClasspathStoreBuilder.class,
-               ConfigFileStoreBuilder.class,
-               ConfigMemoryStoreBuilder.class,
-               ConfigStoreBuilder.class,
-               ConstructorInfo.class,
-               ContextBuilder.class,
-               CsvParserBuilder.class,
-               CsvSerializerBuilder.class,
-               DateAssertion.class,
-               ExecutableInfo.class,
-               FileFinderBuilder.class,
-               FluentArrayAssertion.class,
-               FluentAssertion.class,
-               FluentBeanAssertion.class,
-               FluentBeanListAssertion.class,
-               FluentBooleanAssertion.class,
-               FluentByteArrayAssertion.class,
-               FluentCollectionAssertion.class,
-               FluentComparableAssertion.class,
-               FluentDateAssertion.class,
-               FluentIntegerAssertion.class,
-               FluentListAssertion.class,
-               FluentLongAssertion.class,
-               FluentMapAssertion.class,
-               FluentObjectAssertion.class,
-               FluentPrimitiveArrayAssertion.class,
-               FluentProtocolVersionAssertion.class,
-               FluentRequestBodyAssertion.class,
-               FluentRequestFormParamAssertion.class,
-               FluentRequestHeaderAssertion.class,
-               FluentRequestLineAssertion.class,
-               FluentRequestQueryParamAssertion.class,
-               FluentResponseBodyAssertion.class,
-               FluentResponseHeaderAssertion.class,
-               FluentStringAssertion.class,
-               FluentThrowableAssertion.class,
-               FluentVersionAssertion.class,
-               FluentZonedDateTimeAssertion.class,
-               HeaderListBuilder.class,
-               HtmlDocSerializerBuilder.class,
-               HtmlParserBuilder.class,
-               HtmlSchemaSerializerBuilder.class,
-               HtmlSerializerBuilder.class,
-               HtmlStrippedDocSerializerBuilder.class,
-               HttpEntityBuilder.class,
-               HttpExceptionBuilder.class,
-               HttpResourceBuilder.class,
-               HttpResponseBuilder.class,
-               InputStreamParserBuilder.class,
-               IntegerAssertion.class,
-               JsonParserBuilder.class,
-               JsonSchemaGeneratorBuilder.class,
-               JsonSchemaSerializerBuilder.class,
-               JsonSerializerBuilder.class,
-               JsoParserBuilder.class,
-               JsoSerializerBuilder.class,
-               ListAssertion.class,
-               LongAssertion.class,
-               MapAssertion.class,
-               MethodExecStatsBuilder.class,
-               MethodExecStoreBuilder.class,
-               MethodInfo.class,
-               MockRestClientBuilder.class,
-               MsgPackParserBuilder.class,
-               MsgPackSerializerBuilder.class,
-               ObjectAssertion.class,
-               OpenApiParserBuilder.class,
-               OpenApiSerializerBuilder.class,
-               OutputStreamSerializerBuilder.class,
-               ParserBuilder.class,
-               ParserGroupBuilder.class,
-               ParserSessionArgs.class,
-               PlainTextParserBuilder.class,
-               PlainTextSerializerBuilder.class,
-               PrimitiveArrayAssertion.class,
-               RdfParserBuilder.class,
-               RdfSerializerBuilder.class,
-               ReaderParserBuilder.class,
-               RequestHttpPart.class,
-               RestClientBuilder.class,
-               RestContextBuilder.class,
-               RestOperationContextBuilder.class,
-               SerializedEntityBuilder.class,
-               SerializerBuilder.class,
-               SerializerGroupBuilder.class,
-               SerializerSessionArgs.class,
-               SessionArgs.class,
-               SimpleJsonParserBuilder.class,
-               SimpleJsonSerializerBuilder.class,
-               SoapXmlSerializerBuilder.class,
-               StaticFilesBuilder.class,
-               StringAssertion.class,
-               TargetedAnnotationBuilder.class,
-               TargetedAnnotationCBuilder.class,
-               TargetedAnnotationMBuilder.class,
-               TargetedAnnotationMFBuilder.class,
-               TargetedAnnotationMFCBuilder.class,
-               TargetedAnnotationTBuilder.class,
-               TargetedAnnotationTMBuilder.class,
-               TargetedAnnotationTMFBuilder.class,
-               TargetedAnnotationTMFCBuilder.class,
-               ThrowableAssertion.class,
-               ThrownStatsBuilder.class,
-               ThrownStoreBuilder.class,
-               UonParserBuilder.class,
-               UonSerializerBuilder.class,
-               UrlEncodingParserBuilder.class,
-               UrlEncodingSerializerBuilder.class,
-               VersionAssertion.class,
-               WriterSerializerBuilder.class,
-               XmlParserBuilder.class,
-               XmlSerializerBuilder.class,
-               ZonedDateTimeAssertion.class,
-       };
 
        static Set<Class<?>> ignoreClasses = ASet.of(
                org.apache.http.entity.AbstractHttpEntity.class,
@@ -212,7 +45,23 @@ public class ConfigurablePropertyCodeGenerator {
        public static void main(String[] args) throws Exception {
                Map<Class<?>, Set<Method>> configMethods = new HashMap<>();
 
-               for (Class<?> c : classes) {
+               Map<Class<?>,File> classMap = new LinkedHashMap<>();
+               for (String sp : SOURCE_PATHS) {
+                       File f = new File("../"+sp+"/src/main/java");
+                       Path p = f.toPath();
+                       try (Stream<Path> walkStream = Files.walk(p)) {
+                               walkStream
+                                       .filter(x -> x.toFile().isFile())
+                                       .map(x -> x.toFile())
+                                       .filter(x -> 
x.getName().endsWith(".java"))
+                                       .filter(x -> hasFluentSetters(x))
+                                       .forEach(x -> classMap.put(toClass(x), 
x));
+                       }
+               }
+
+               System.out.println("Found " + classMap.size() + " classes with 
fluent setters.");
+
+               for (Class<?> c : classMap.keySet()) {
                        System.out.println("Seaching " + c.getName());
                        Set<Method> s = new TreeSet<>(new MethodComparator());
                        for (Method m : c.getDeclaredMethods()) {
@@ -224,11 +73,9 @@ public class ConfigurablePropertyCodeGenerator {
                        configMethods.put(c, s);
                }
 
-               for (Class<?> c : classes) {
-                       File f = findClassFile(c);
-
-                       if (f == null)
-                               System.err.println("Couldn't find class " + 
c.getName());
+               for (Map.Entry<Class<?>,File> e : classMap.entrySet()) {
+                       Class<?> c = e.getKey();
+                       File f = e.getValue();
 
                        if (! c.isAnnotationPresent(FluentSetters.class))
                                System.err.println("@FluentSetters not present 
on class " + c.getName());
@@ -241,7 +88,7 @@ public class ConfigurablePropertyCodeGenerator {
                        if (i1 != -1 && i2 != -1) {
                                cpSection = s.substring(i1+15, i2);
                        } else {
-                               System.err.println("...skipped " + f.getName());
+                               System.err.println("...<FluentSetters> not 
found: " + f.getName());
                                continue;
                        }
 
@@ -337,6 +184,28 @@ public class ConfigurablePropertyCodeGenerator {
                System.out.println("DONE");
        }
 
+       private static boolean hasFluentSetters(File f) {
+               try (BufferedReader br = new BufferedReader(new 
InputStreamReader(new FileInputStream(f)))) {
+                       String line;
+                       while ((line = br.readLine()) != null)
+                               if (line.contains("@FluentSetters"))
+                                       return true;
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+               return false;
+       }
+
+       private static Class<?> toClass(File f) {
+               try {
+                       String n = f.getAbsolutePath();
+                       return 
Class.forName(n.substring(n.indexOf("/src/main/java/")+15).replace(".java","").replace('/','.'));
+               } catch (ClassNotFoundException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       }
+
        private static String getArgs(Method m) {
                StringBuilder sb = new StringBuilder();
                for (Parameter p : m.getParameters()) {
@@ -361,21 +230,7 @@ public class ConfigurablePropertyCodeGenerator {
                return sb.toString();
        }
 
-
-
-
-       private static File findClassFile(Class<?> c) throws IOException {
-               String path = c.getName().replace('.', '/') + ".java";
-               for (String sp : SOURCE_PATHS) {
-                       File f = new File("../"+sp+"/src/main/java/" + path);
-                       if (f.exists())
-                               return f;
-               }
-               return null;
-       }
-
        private static class MethodComparator implements Comparator<Method> {
-
                @Override
                public int compare(Method m1, Method m2) {
                        int i = m1.getName().compareTo(m2.getName());
@@ -387,7 +242,5 @@ public class ConfigurablePropertyCodeGenerator {
                                i = 
m1.getParameterTypes()[1].getName().compareTo(m2.getParameterTypes()[1].getName());
                        return i;
                }
-
        }
-
 }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseStatusLineAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseStatusLineAssertion.java
index b406dc4..64215d0 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseStatusLineAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/assertion/FluentResponseStatusLineAssertion.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.client.assertion;
 
+import java.io.*;
+
 import org.apache.http.*;
 import org.apache.juneau.assertions.*;
 import org.apache.juneau.http.response.*;
@@ -92,4 +94,38 @@ public class FluentResponseStatusLineAssertion<R> extends 
FluentObjectAssertion<
        public FluentIntegerAssertion<R> minor() {
                return new FluentIntegerAssertion<>(this, 
statusLine.getProtocolVersion().getMinor(), returns());
        }
+
+       // <FluentSetters>
+
+       @Override /* GENERATED - Assertion */
+       public FluentResponseStatusLineAssertion<R> msg(String msg, 
Object...args) {
+               super.msg(msg, args);
+               return this;
+       }
+
+       @Override /* GENERATED - Assertion */
+       public FluentResponseStatusLineAssertion<R> out(PrintStream value) {
+               super.out(value);
+               return this;
+       }
+
+       @Override /* GENERATED - Assertion */
+       public FluentResponseStatusLineAssertion<R> silent() {
+               super.silent();
+               return this;
+       }
+
+       @Override /* GENERATED - Assertion */
+       public FluentResponseStatusLineAssertion<R> stdout() {
+               super.stdout();
+               return this;
+       }
+
+       @Override /* GENERATED - Assertion */
+       public FluentResponseStatusLineAssertion<R> throwable(Class<? extends 
java.lang.RuntimeException> value) {
+               super.throwable(value);
+               return this;
+       }
+
+       // </FluentSetters>
 }

Reply via email to