@@ -64,11 +64,11 @@ default PropertyPath getLeafProperty() {
6464
6565 PropertyPath result = this ;
6666
67- while (result .hasNext ()) {
67+ while (result != null && result .hasNext ()) {
6868 result = result .next ();
6969 }
7070
71- return result ;
71+ return result == null ? this : result ;
7272 }
7373
7474 /**
@@ -158,8 +158,8 @@ default PropertyPath nested(String path) {
158158 }
159159
160160 /**
161- * Returns an {@link Iterator < PropertyPath> } that iterates over all the partial property paths with the same leaf
162- * type but decreasing length. For example:
161+ * Returns an {@link Iterator Iterator of PropertyPath} that iterates over all the partial property paths with the
162+ * same leaf type but decreasing length. For example:
163163 *
164164 * <pre class="code">
165165 * PropertyPath propertyPath = PropertyPath.from("a.b.c", Some.class);
@@ -179,13 +179,12 @@ default PropertyPath nested(String path) {
179179
180180 /**
181181 * Extracts the {@link PropertyPath} chain from the given source {@link String} and {@link TypeInformation}. <br />
182- * Uses {@link SimplePropertyPath#SPLITTER } by default and {@link SimplePropertyPath#SPLITTER_FOR_QUOTED } for
182+ * Uses {@code (?:[%s]?([%s]*?[^%s]+)) } by default and {@code (?:[%s]?([%s]*?[^%s]+)) } for
183183 * {@link Pattern#quote(String) quoted} literals.
184184 * <p>
185185 * Separate parts of the path may be separated by {@code "."} or by {@code "_"} or by camel case. When the match to
186- * properties is ambiguous longer property names are preferred. So for "userAddressCity" the interpretation
187- * "userAddress.city" is preferred over "user.address.city".
188- * </p>
186+ * properties is ambiguous longer property names are preferred. So for {@code userAddressCity} the interpretation
187+ * {@code userAddress.city} is preferred over {@code user.address.city}.
189188 *
190189 * @param source a String denoting the property path, must not be {@literal null}.
191190 * @param type the owning type of the property path, must not be {@literal null}.
@@ -197,13 +196,12 @@ static PropertyPath from(String source, Class<?> type) {
197196
198197 /**
199198 * Extracts the {@link PropertyPath} chain from the given source {@link String} and {@link TypeInformation}. <br />
200- * Uses {@link SimplePropertyPath#SPLITTER } by default and {@link SimplePropertyPath#SPLITTER_FOR_QUOTED } for
199+ * Uses {@code (?:[%s]?([%s]*?[^%s]+)) } by default and {@code (?:[%s]?([%s]*?[^%s]+)) } for
201200 * {@link Pattern#quote(String) quoted} literals.
202201 * <p>
203202 * Separate parts of the path may be separated by {@code "."} or by {@code "_"} or by camel case. When the match to
204- * properties is ambiguous longer property names are preferred. So for "userAddressCity" the interpretation
205- * "userAddress.city" is preferred over "user.address.city".
206- * </p>
203+ * properties is ambiguous longer property names are preferred. So for {@code userAddressCity} the interpretation
204+ * {@code userAddress.city} is preferred over {@code user.address.city}.
207205 *
208206 * @param source a String denoting the property path, must not be {@literal null}.
209207 * @param type the owning type of the property path, must not be {@literal null}.
0 commit comments