/* * Copyright (C) 2010 Red Hat, Inc. and/or its affiliates. * * 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.jboss.errai.marshalling.tests.res; import org.jboss.errai.common.client.api.annotations.Portable; import org.jboss.errai.marshalling.tests.ServerMarshallingTest; import java.util.*; @Portable public class SType extends STypeSuper<Long> { private String fieldOne; private String fieldTwo; private Date startDate; private Date endDate; private Boolean active; private List<SType> listOfStypes; private List<Date> listOfDates; private Map<String, SType> mapofStypes; private Map<SType, SType> sTypeToStype; private Place place; private long longValue; private int intValue; private short shortValue; private double doubleValue; private float floatValue; private byte byteValue; private char charValue; private char[] charArray; private char[][] charArrayMulti; private SType[] sTypeArray; public enum Place { FIRST, SECOND, THIRD } public String getFieldOne() { return fieldOne; } public void setFieldOne(String fieldOne) { this.fieldOne = fieldOne; } public String getFieldTwo() { return fieldTwo; } public void setFieldTwo(String fieldTwo) { this.fieldTwo = fieldTwo; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } public Boolean getActive() { return active; } public void setActive(Boolean active) { this.active = active; } public void setListOfStypes(List<SType> listOfStypes) { this.listOfStypes = listOfStypes; } public List<SType> getListOfStypes() { return listOfStypes; } public List<Date> getListOfDates() { return listOfDates; } public void setListOfDates(List<Date> listOfDates) { this.listOfDates = listOfDates; } public Map<String, SType> getMapofStypes() { return mapofStypes; } public void setMapofStypes(Map<String, SType> mapofStypes) { this.mapofStypes = mapofStypes; } public long getLongValue() { return longValue; } public void setLongValue(long longValue) { this.longValue = longValue; } public int getIntValue() { return intValue; } public void setIntValue(int intValue) { this.intValue = intValue; } public short getShortValue() { return shortValue; } public void setShortValue(short shortValue) { this.shortValue = shortValue; } public double getDoubleValue() { return doubleValue; } public void setDoubleValue(double doubleValue) { this.doubleValue = doubleValue; } public float getFloatValue() { return floatValue; } public void setFloatValue(float floatValue) { this.floatValue = floatValue; } public byte getByteValue() { return byteValue; } public void setByteValue(byte byteValue) { this.byteValue = byteValue; } public char getCharValue() { return charValue; } public void setCharValue(char charValue) { this.charValue = charValue; } public Place getPlace() { return place; } public void setPlace(Place place) { this.place = place; } public char[] getCharArray() { return charArray; } public void setCharArray(char[] charArray) { this.charArray = charArray; } public char[][] getCharArrayMulti() { return charArrayMulti; } public void setCharArrayMulti(char[][] charArrayMulti) { this.charArrayMulti = charArrayMulti; } public SType[] getsTypeArray() { return sTypeArray; } public void setsTypeArray(SType[] sTypeArray) { this.sTypeArray = sTypeArray; } public Map<SType, SType> getsTypeToStype() { return sTypeToStype; } public void setsTypeToStype(Map<SType, SType> sTypeToStype) { this.sTypeToStype = sTypeToStype; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; SType sType = (SType) o; if (getSuperValue() != null ? !getSuperValue().equals(sType.getSuperValue()) : sType.getSuperValue() != null) return false; if (getValue() != null ? !getValue().equals(sType.getValue()) : sType.getValue() != null) return false; if (place != sType.place) return false; if (byteValue != sType.byteValue) return false; if (charValue != sType.charValue) return false; if (Double.compare(sType.doubleValue, doubleValue) != 0) return false; if (Float.compare(sType.floatValue, floatValue) != 0) return false; if (intValue != sType.intValue) return false; if (longValue != sType.longValue) return false; if (shortValue != sType.shortValue) return false; if (active != null ? !active.equals(sType.active) : sType.active != null) return false; if (!Arrays.equals(charArray, sType.charArray)) return false; if (endDate != null ? !endDate.equals(sType.endDate) : sType.endDate != null) return false; if (fieldOne != null ? !fieldOne.equals(sType.fieldOne) : sType.fieldOne != null) return false; if (fieldTwo != null ? !fieldTwo.equals(sType.fieldTwo) : sType.fieldTwo != null) return false; if (listOfStypes != null ? !listOfStypes.equals(sType.listOfStypes) : sType.listOfStypes != null) return false; if (listOfDates != null ? !listOfDates.equals(sType.listOfDates) : sType.listOfDates != null) return false; if (mapofStypes != null ? !mapofStypes.equals(sType.mapofStypes) : sType.mapofStypes != null) return false; if (sTypeToStype != null ? !sTypeToStype.toString().equals(sType.sTypeToStype.toString()) : sType.sTypeToStype != null) return false; if (startDate != null ? !startDate.equals(sType.startDate) : sType.startDate != null) return false; if (charArrayMulti != null) { for (int i = 0; i < charArrayMulti.length; i++) { if (!Arrays.equals(charArrayMulti[i], sType.charArrayMulti[i])) return false; } } else if (sType.charArrayMulti != null) return false; if (sTypeArray != null) { for (int i = 0; i < sTypeArray.length; i++) { if (!sTypeArray[i].equals(sType.sTypeArray[i])) return false; } } else if (sType.sTypeArray != null) return false; return true; } @Override public int hashCode() { int result; long temp; result = fieldOne != null ? fieldOne.hashCode() : 0; result = 31 * result + (fieldTwo != null ? fieldTwo.hashCode() : 0); result = 31 * result + (startDate != null ? startDate.hashCode() : 0); result = 31 * result + (endDate != null ? endDate.hashCode() : 0); result = 31 * result + (active != null ? active.hashCode() : 0); result = 31 * result + (listOfStypes != null ? listOfStypes.hashCode() : 0); result = 31 * result + (mapofStypes != null ? mapofStypes.hashCode() : 0); result = 31 * result + (place != null ? place.hashCode() : 0); result = 31 * result + (int) (longValue ^ (longValue >>> 32)); result = 31 * result + intValue; result = 31 * result + (int) shortValue; temp = doubleValue != +0.0d ? new Double(doubleValue).longValue() : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + (floatValue != +0.0f ? new Float(floatValue).intValue() : 0); result = 31 * result + (int) byteValue; result = 31 * result + (int) charValue; result = 31 * result + (charArray != null ? Arrays.hashCode(charArray) : 0); result = 31 * result + (charArrayMulti != null ? Arrays.hashCode(charArrayMulti) : 0); return result; } @Override public String toString() { return new StringBuilder("{") .append(" superValue: " + super.getSuperValue() + ",\n") .append(" value: " + super.getValue() + ",\n") .append(" fieldOne: " + fieldOne + ",\n") .append(" fieldTwo: " + fieldTwo + ",\n") .append(" startDate: " + startDate + ",\n") .append(" endDate:" + endDate + ",\n") .append(" active: " + active + ",\n") .append(" listOfStypes: " + listOfStypes + ",\n") .append(" listOfDates: " + listOfDates + ",\n") .append(" mapOfStypes: " + mapofStypes + ",\n") .append(" sTypeToSTypes: " + sTypeToStype + ",\n") .append(" place: " + place + ",\n") .append(" longValue: " + longValue + ",\n") .append(" shortValue: " + shortValue + ",\n") .append(" doubleValue: " + doubleValue + ",\n") .append(" floatValue: " + floatValue + ",\n") .append(" byteValue: " + byteValue + ",\n") .append(" charValue: " + charValue + ",\n") .append(" charArray: " + Arrays.toString(charArray) + ",\n") .append(" charArrayMulti: " + printMultiArray(charArrayMulti) + ", \n") .append(" sTypeArray: " + Arrays.toString(sTypeArray) + "\n") .append("}").toString(); } private static String printMultiArray(char[][] c) { StringBuilder builder = new StringBuilder("["); for (int i = 0; i < c.length; i++) { builder.append(Arrays.toString(c[i])); if (i + 1 < c.length) builder.append(", "); } return builder.append("]").toString(); } public static SType create(ServerMarshallingTest.RandomProvider random) { final SType sType1 = randomLeafCreate(random); sType1.setActive(true); sType1.setEndDate(new Date(System.currentTimeMillis())); sType1.setStartDate(new Date(System.currentTimeMillis() - 10000)); sType1.setFieldOne("One!"); sType1.setFieldTwo("Two!!"); sType1.setPlace(Place.FIRST); List<SType> listOfStypes = new ArrayList<SType>(); final SType sType2 = randomLeafCreate(random); sType2.setActive(true); sType2.setEndDate(new Date(System.currentTimeMillis() + 1393)); sType2.setStartDate(new Date(System.currentTimeMillis() - 3443)); sType2.setFieldOne("Hrmm"); sType2.setFieldTwo("Haaa"); sType2.setPlace(Place.SECOND); listOfStypes.add(sType2); final SType sType3 = randomLeafCreate(random); sType3.setActive(false); sType3.setEndDate(new Date(System.currentTimeMillis() + 555)); sType3.setStartDate(new Date(System.currentTimeMillis() - 232)); sType3.setFieldOne("Eeek"); sType3.setFieldTwo("Oooh"); sType3.setPlace(Place.THIRD); listOfStypes.add(sType3); sType1.setListOfStypes(listOfStypes); Map<String, SType> mapOfSTypes = new HashMap<String, SType>(); mapOfSTypes.put(random.randString(), randomLeafCreate(random)); mapOfSTypes.put(random.randString(), randomLeafCreate(random)); mapOfSTypes.put(random.randString(), randomLeafCreate(random)); sType1.setMapofStypes(mapOfSTypes); Map<SType, SType> sTypeToSType = new HashMap<SType, SType>(); sTypeToSType.put(randomLeafCreate(random), randomLeafCreate(random)); sType1.setsTypeToStype(sTypeToSType); List<Date> listOfDates = new LinkedList<Date>(); listOfDates.add(new Date(System.currentTimeMillis() + 3000)); listOfDates.add(new Date(System.currentTimeMillis() + 10000)); listOfDates.add(new Date(System.currentTimeMillis() + 20000)); sType1.setListOfDates(listOfDates); SType[] sTypeArray = new SType[random.nextInt(10) + 1]; for (int i = 0; i < sTypeArray.length; i++) { sTypeArray[i] = randomLeafCreate(random); } sType1.setsTypeArray(sTypeArray); return sType1; } private static SType randomLeafCreate(ServerMarshallingTest.RandomProvider random) { final SType sType = new SType(); sType.setSuperValue(random.randString()); sType.setValue(10L); sType.setActive(random.nextBoolean()); sType.setFieldOne(random.randString()); sType.setFieldTwo(random.randString()); sType.setStartDate(randDatePast(random)); sType.setEndDate(randDateFuture(random)); sType.setByteValue((byte) random.nextInt(100000)); sType.setFloatValue(new Double(random.nextDouble()).floatValue() + random.nextInt(10000)); sType.setIntValue(random.nextInt(100000)); sType.setDoubleValue(random.nextInt(100000) + random.nextDouble()); sType.setLongValue(random.nextInt(1000000)); sType.setCharValue(random.nextChar()); sType.setShortValue((short) (random.nextInt(Short.MAX_VALUE) - 1)); sType.setPlace(randPlace(random)); char[] charArray = new char[random.nextInt(10) + 1]; for (int i = 0; i < charArray.length; i++) { charArray[i] = random.nextChar(); } sType.setCharArray(charArray); char[][] charArrayMulti = new char[random.nextInt(10) + 1][random.nextInt(10) + 1]; for (int i = 0; i < charArrayMulti.length; i++) { char[] subArray = new char[charArrayMulti[i].length]; for (int i2 = 0; i2 < charArrayMulti[i].length; i2++) { charArrayMulti[i][i2] = random.nextChar(); } } sType.setCharArrayMulti(charArrayMulti); return sType; } private static Date randDateFuture(ServerMarshallingTest.RandomProvider random) { return new Date(System.currentTimeMillis() + random.nextInt(100000)); } private static Date randDatePast(ServerMarshallingTest.RandomProvider random) { return new Date(System.currentTimeMillis() - random.nextInt(100000)); } private static Place randPlace(ServerMarshallingTest.RandomProvider random) { return Place.values()[random.nextInt(100000) % Place.values().length]; } }