File tree Expand file tree Collapse file tree 5 files changed +90
-0
lines changed
src/main/java/org/javawebstack/abstractdata Expand file tree Collapse file tree 5 files changed +90
-0
lines changed Original file line number Diff line number Diff line change @@ -343,4 +343,41 @@ public AbstractElement clone() {
343343 return new AbstractArrayCollector <>(e -> e );
344344 }
345345
346+ public boolean equals (Object obj , boolean strict ) {
347+ if (obj == null )
348+ return false ;
349+ if (!(obj instanceof AbstractElement ))
350+ return false ;
351+ try {
352+ AbstractArray arr = ((AbstractElement ) obj ).array (strict );
353+ if (arr .size () != arr .size ())
354+ return false ;
355+
356+ for (int i = 0 ; i < size (); i ++) {
357+ if (!(get (i ).equals (arr .get (i ), strict )))
358+ return false ;
359+ }
360+ return true ;
361+ } catch (AbstractCoercingException ignored ) {
362+ return false ;
363+ }
364+ }
365+
366+ public boolean equals (Object obj ) {
367+ return equals (obj , false );
368+ }
369+
370+ public AbstractArray addAll (AbstractArray array ) {
371+ elements .addAll (array .elements );
372+ return this ;
373+ }
374+
375+ public AbstractArray concat (AbstractArray ... array ) {
376+ AbstractArray newArr = new AbstractArray ();
377+ newArr .addAll (this );
378+ for (AbstractArray arr : array )
379+ newArr .addAll (arr );
380+
381+ return newArr ;
382+ }
346383}
Original file line number Diff line number Diff line change @@ -246,4 +246,5 @@ public boolean isPrimitive() {
246246 }
247247 }
248248
249+ boolean equals (Object obj , boolean strict );
249250}
Original file line number Diff line number Diff line change @@ -55,4 +55,12 @@ public AbstractElement clone() {
5555 public Type getType () {
5656 return Type .NULL ;
5757 }
58+
59+ public boolean equals (Object obj , boolean strict ) {
60+ return obj == null || obj instanceof AbstractNull ;
61+ }
62+
63+ public boolean equals (Object obj ) {
64+ return equals (obj , false );
65+ }
5866}
Original file line number Diff line number Diff line change @@ -267,4 +267,28 @@ public AbstractElement clone() {
267267 return new AbstractObjectCollector <>(keyFunction , valueFunction );
268268 }
269269
270+ public boolean equals (Object obj , boolean strict ) {
271+ if (obj == null )
272+ return false ;
273+ if (!(obj instanceof AbstractElement ))
274+ return false ;
275+ try {
276+ AbstractObject object = ((AbstractElement ) obj ).object (strict );
277+ if (size () != object .size ())
278+ return false ;
279+ for (String key : keys ()) {
280+ if (!object .has (key ))
281+ return false ;
282+ if (!object .get (key ).equals (get (key ), strict ))
283+ return false ;
284+ }
285+ return true ;
286+ } catch (AbstractCoercingException ignored ) {
287+ return false ;
288+ }
289+ }
290+
291+ public boolean equals (Object obj ) {
292+ return equals (obj , false );
293+ }
270294}
Original file line number Diff line number Diff line change @@ -175,4 +175,24 @@ public AbstractElement clone() {
175175 return from (value );
176176 }
177177
178+ public boolean equals (Object obj , boolean strict ) {
179+ if (obj == null )
180+ return false ;
181+ if (!(obj instanceof AbstractPrimitive ))
182+ return false ;
183+ AbstractPrimitive primitive = (AbstractPrimitive ) obj ;
184+ try {
185+ if (isBoolean ())
186+ return bool () == primitive .bool (strict );
187+ if (isNumber ())
188+ return number ().equals (primitive .number (strict ));
189+ if (isString ())
190+ return string ().equals (primitive .string (strict ));
191+ } catch (AbstractCoercingException ignored ) {}
192+ return false ;
193+ }
194+
195+ public boolean equals (Object obj ) {
196+ return equals (obj , false );
197+ }
178198}
You can’t perform that action at this time.
0 commit comments