/** * Just to test IdGeneration Recording * @param file * @return * @throws Exception */ public List<IdRecordInfo> getIdRecords(String file) throws Exception { List<IdRecordInfo> infos = new ArrayList<>(); FastInput input = new FastInput(new FileInputStream(file)); Kryo kryo = new Kryo(); kryo.register(HashMap.class, new MapSerializer()); while (input.available() > 0) { InternalEventRecorder.InternalEventRecord record = kryo.readObject(input, InternalEventRecorder.InternalEventRecord.class); String tag = new String(record.tag).trim(); if (tag.equalsIgnoreCase(IdRecordInfo.ID_RECORD_TAG)) { infos.add((IdRecordInfo)record.data); } } return infos; }
public void testMaps () { kryo.register(HashMap.class); kryo.register(LinkedHashMap.class); HashMap map = new HashMap(); map.put("123", "456"); map.put("789", "abc"); roundTrip(18, 21, map); roundTrip(2, 5, new LinkedHashMap()); roundTrip(18, 21, new LinkedHashMap(map)); MapSerializer serializer = new MapSerializer(); kryo.register(HashMap.class, serializer); kryo.register(LinkedHashMap.class, serializer); serializer.setKeyClass(String.class, kryo.getSerializer(String.class)); serializer.setKeysCanBeNull(false); serializer.setValueClass(String.class, kryo.getSerializer(String.class)); roundTrip(14, 17, map); serializer.setValuesCanBeNull(false); roundTrip(14, 17, map); }
private void execute (Map<Object, Object> map, int inserts) { Random random = new Random(); for (int i = 0; i < inserts; i++) map.put(random.nextLong(), random.nextBoolean()); Kryo kryo = new Kryo(); kryo.register(HashMap.class, new MapSerializer()); kryo.register(ConcurrentHashMap.class, new MapSerializer()); Output output = new Output(2048, -1); kryo.writeClassAndObject(output, map); output.close(); Input input = new Input(output.toBytes()); Object deserialized = kryo.readClassAndObject(input); input.close(); Assert.assertEquals(map, deserialized); }
/** * Returns a MapSerializer for {@code Map<String, String>} with * no null key or value. * * @return serializer */ private static MapSerializer stringMapSerializer() { MapSerializer serializer = new MapSerializer(); serializer.setKeysCanBeNull(false); serializer.setKeyClass(String.class, STR_SERIALIZER); serializer.setValuesCanBeNull(false); serializer.setValueClass(String.class, STR_SERIALIZER); return serializer; }
public List<RestoredRequest> getRequests(String file, int limit) throws IOException { List<RestoredRequest> requests = new ArrayList<>(); FastInput input = new FastInput(new FileInputStream(file)); Kryo kryo = new Kryo(); kryo.register(HashMap.class, new MapSerializer()); while (input.available() > 0) { InternalEventRecorder.InternalEventRecord record = kryo.readObject(input, InternalEventRecorder.InternalEventRecord.class); String tag = new String(record.tag).trim(); if (tag.equalsIgnoreCase(HttpRecorderHelper.HTTP_RECORDER_TAG)) { HttpRecordInformation information = (HttpRecordInformation)record.data; RestoredRequest request = new RestoredRequest(); if (information.params != null && information.params.length > 0) { FastInput paramsInput = new FastInput(new ByteArrayInputStream(information.params)); request.parameters = kryo.readObject(paramsInput, HashMap.class); request.headers = kryo.readObject(paramsInput, HashMap.class); request.contentLength = kryo.readObjectOrNull(paramsInput, Integer.class); request.contentType = kryo.readObjectOrNull(paramsInput, String.class); request.uri = kryo.readObjectOrNull(paramsInput, String.class); request.method = kryo.readObjectOrNull(paramsInput, String.class); request.contextPath = kryo.readObjectOrNull(paramsInput, String.class); request.cookies = kryo.readObject(paramsInput, HashMap.class); } if (information.payload != null && information.payload.length > 0) { request.payload = new String(information.payload); } request.additional = information.additional; request.timestampNs = record.timestampNs; if (limit > 0 && requests.size() >= limit) { break; } requests.add(request); } } return requests; }
public static RecordableHttpServletRequest prepareRequestToRecord(HttpServletRequest original, HttpRecordInformation info) { // buffer is 1kb at least ByteArrayOutputStream stream = new ByteArrayOutputStream(1024 * 1024); FastOutput out = new FastOutput(stream); Kryo kryo = threadKryo.get(); if (kryo == null) { kryo = new Kryo(); kryo.register(HashMap.class, new MapSerializer()); kryo.register(ConcurrentHashMap.class, new MapSerializer()); threadKryo.set(kryo); } HashMap<String, String[]> item = new HashMap<>(); if (original.getParameterMap() != null) { item.putAll(original.getParameterMap()); } HashMap<String, String> headers = new HashMap<>(); Enumeration<String> names = original.getHeaderNames(); while (names.hasMoreElements()) { String header = names.nextElement(); headers.put(header, original.getHeader(header)); } try { kryo.writeObject(out, item); kryo.writeObject(out, headers); kryo.writeObjectOrNull(out, original.getContentLength(), Integer.class); kryo.writeObjectOrNull(out, original.getContentType(), String.class); kryo.writeObjectOrNull(out, original.getRequestURI(), String.class); kryo.writeObjectOrNull(out, original.getMethod(), String.class); kryo.writeObjectOrNull(out, original.getServletContext().getContextPath(), String.class); HashMap<String, String> cookies = new HashMap<>(); if (original.getCookies() != null && original.getCookies().length > 0) { for (Cookie cookie : original.getCookies()) { cookies.put(cookie.getName(), cookie.getValue()); } } kryo.writeObject(out, cookies); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(System.err); throw e; } info.params = stream.toByteArray(); return new RecordableHttpServletRequest(original); }
/** @param referenceResolver May be null to disable references. */ public Kryo (ClassResolver classResolver, ReferenceResolver referenceResolver, StreamFactory streamFactory) { if (classResolver == null) throw new IllegalArgumentException("classResolver cannot be null."); this.classResolver = classResolver; classResolver.setKryo(this); this.streamFactory = streamFactory; streamFactory.setKryo(this); this.referenceResolver = referenceResolver; if (referenceResolver != null) { referenceResolver.setKryo(this); references = true; } addDefaultSerializer(byte[].class, ByteArraySerializer.class); addDefaultSerializer(char[].class, CharArraySerializer.class); addDefaultSerializer(short[].class, ShortArraySerializer.class); addDefaultSerializer(int[].class, IntArraySerializer.class); addDefaultSerializer(long[].class, LongArraySerializer.class); addDefaultSerializer(float[].class, FloatArraySerializer.class); addDefaultSerializer(double[].class, DoubleArraySerializer.class); addDefaultSerializer(boolean[].class, BooleanArraySerializer.class); addDefaultSerializer(String[].class, StringArraySerializer.class); addDefaultSerializer(Object[].class, ObjectArraySerializer.class); addDefaultSerializer(KryoSerializable.class, KryoSerializableSerializer.class); addDefaultSerializer(BigInteger.class, BigIntegerSerializer.class); addDefaultSerializer(BigDecimal.class, BigDecimalSerializer.class); addDefaultSerializer(Class.class, ClassSerializer.class); addDefaultSerializer(Date.class, DateSerializer.class); addDefaultSerializer(Enum.class, EnumSerializer.class); addDefaultSerializer(EnumSet.class, EnumSetSerializer.class); addDefaultSerializer(Currency.class, CurrencySerializer.class); addDefaultSerializer(StringBuffer.class, StringBufferSerializer.class); addDefaultSerializer(StringBuilder.class, StringBuilderSerializer.class); addDefaultSerializer(Collections.EMPTY_LIST.getClass(), CollectionsEmptyListSerializer.class); addDefaultSerializer(Collections.EMPTY_MAP.getClass(), CollectionsEmptyMapSerializer.class); addDefaultSerializer(Collections.EMPTY_SET.getClass(), CollectionsEmptySetSerializer.class); addDefaultSerializer(Collections.singletonList(null).getClass(), CollectionsSingletonListSerializer.class); addDefaultSerializer(Collections.singletonMap(null, null).getClass(), CollectionsSingletonMapSerializer.class); addDefaultSerializer(Collections.singleton(null).getClass(), CollectionsSingletonSetSerializer.class); addDefaultSerializer(TreeSet.class, TreeSetSerializer.class); addDefaultSerializer(Collection.class, CollectionSerializer.class); addDefaultSerializer(TreeMap.class, TreeMapSerializer.class); addDefaultSerializer(Map.class, MapSerializer.class); addDefaultSerializer(TimeZone.class, TimeZoneSerializer.class); addDefaultSerializer(Calendar.class, CalendarSerializer.class); addDefaultSerializer(Locale.class, LocaleSerializer.class); lowPriorityDefaultSerializerCount = defaultSerializers.size(); // Primitives and string. Primitive wrappers automatically use the same registration as primitives. register(int.class, new IntSerializer()); register(String.class, new StringSerializer()); register(float.class, new FloatSerializer()); register(boolean.class, new BooleanSerializer()); register(byte.class, new ByteSerializer()); register(char.class, new CharSerializer()); register(short.class, new ShortSerializer()); register(long.class, new LongSerializer()); register(double.class, new DoubleSerializer()); register(void.class, new VoidSerializer()); // Lambdas support // Enable only if JVM supports it try { String version = System.getProperty("java.version"); char minor = version.charAt(2); if (minor >= '8') { register(Class.forName("java.lang.invoke.SerializedLambda")); register(Closure.class, (Serializer)Class.forName("com.esotericsoftware.kryo.serializers.ClosureSerializer") .newInstance()); } } catch (Exception e) { Log.trace("Serialization of Java8 lambdas is not available on this system."); } }
/** @param referenceResolver May be null to disable references. */ public Kryo (ClassResolver classResolver, ReferenceResolver referenceResolver, StreamFactory streamFactory) { if (classResolver == null) throw new IllegalArgumentException("classResolver cannot be null."); this.classResolver = classResolver; classResolver.setKryo(this); this.streamFactory = streamFactory; streamFactory.setKryo(this); this.referenceResolver = referenceResolver; if (referenceResolver != null) { referenceResolver.setKryo(this); references = true; } addDefaultSerializer(byte[].class, ByteArraySerializer.class); addDefaultSerializer(char[].class, CharArraySerializer.class); addDefaultSerializer(short[].class, ShortArraySerializer.class); addDefaultSerializer(int[].class, IntArraySerializer.class); addDefaultSerializer(long[].class, LongArraySerializer.class); addDefaultSerializer(float[].class, FloatArraySerializer.class); addDefaultSerializer(double[].class, DoubleArraySerializer.class); addDefaultSerializer(boolean[].class, BooleanArraySerializer.class); addDefaultSerializer(String[].class, StringArraySerializer.class); addDefaultSerializer(Object[].class, ObjectArraySerializer.class); addDefaultSerializer(KryoSerializable.class, KryoSerializableSerializer.class); addDefaultSerializer(BigInteger.class, BigIntegerSerializer.class); addDefaultSerializer(BigDecimal.class, BigDecimalSerializer.class); addDefaultSerializer(Class.class, ClassSerializer.class); addDefaultSerializer(Date.class, DateSerializer.class); addDefaultSerializer(Enum.class, EnumSerializer.class); addDefaultSerializer(EnumSet.class, EnumSetSerializer.class); addDefaultSerializer(Currency.class, CurrencySerializer.class); addDefaultSerializer(StringBuffer.class, StringBufferSerializer.class); addDefaultSerializer(StringBuilder.class, StringBuilderSerializer.class); addDefaultSerializer(Collections.EMPTY_LIST.getClass(), CollectionsEmptyListSerializer.class); addDefaultSerializer(Collections.EMPTY_MAP.getClass(), CollectionsEmptyMapSerializer.class); addDefaultSerializer(Collections.EMPTY_SET.getClass(), CollectionsEmptySetSerializer.class); addDefaultSerializer(Collections.singletonList(null).getClass(), CollectionsSingletonListSerializer.class); addDefaultSerializer(Collections.singletonMap(null, null).getClass(), CollectionsSingletonMapSerializer.class); addDefaultSerializer(Collections.singleton(null).getClass(), CollectionsSingletonSetSerializer.class); addDefaultSerializer(TreeSet.class, TreeSetSerializer.class); addDefaultSerializer(Collection.class, CollectionSerializer.class); addDefaultSerializer(TreeMap.class, TreeMapSerializer.class); addDefaultSerializer(Map.class, MapSerializer.class); addDefaultSerializer(TimeZone.class, TimeZoneSerializer.class); addDefaultSerializer(Calendar.class, CalendarSerializer.class); addDefaultSerializer(Locale.class, LocaleSerializer.class); lowPriorityDefaultSerializerCount = defaultSerializers.size(); // Primitives and string. Primitive wrappers automatically use the same registration as primitives. register(int.class, new IntSerializer()); register(String.class, new StringSerializer()); register(float.class, new FloatSerializer()); register(boolean.class, new BooleanSerializer()); register(byte.class, new ByteSerializer()); register(char.class, new CharSerializer()); register(short.class, new ShortSerializer()); register(long.class, new LongSerializer()); register(double.class, new DoubleSerializer()); register(void.class, new VoidSerializer()); }
public SentinelEventDecoder() { kryo = new Kryo(); kryo.register(HashMap.class, new MapSerializer()); }
/** @param referenceResolver May be null to disable references. */ public Kryo (ClassResolver classResolver, ReferenceResolver referenceResolver, StreamFactory streamFactory) { if (classResolver == null) throw new IllegalArgumentException("classResolver cannot be null."); this.classResolver = classResolver; classResolver.setKryo(this); this.streamFactory = streamFactory; streamFactory.setKryo(this); this.referenceResolver = referenceResolver; if (referenceResolver != null) { referenceResolver.setKryo(this); references = true; } addDefaultSerializer(byte[].class, ByteArraySerializer.class); addDefaultSerializer(char[].class, CharArraySerializer.class); addDefaultSerializer(short[].class, ShortArraySerializer.class); addDefaultSerializer(int[].class, IntArraySerializer.class); addDefaultSerializer(long[].class, LongArraySerializer.class); addDefaultSerializer(float[].class, FloatArraySerializer.class); addDefaultSerializer(double[].class, DoubleArraySerializer.class); addDefaultSerializer(boolean[].class, BooleanArraySerializer.class); addDefaultSerializer(String[].class, StringArraySerializer.class); addDefaultSerializer(Object[].class, ObjectArraySerializer.class); addDefaultSerializer(BigInteger.class, BigIntegerSerializer.class); addDefaultSerializer(BigDecimal.class, BigDecimalSerializer.class); addDefaultSerializer(Class.class, ClassSerializer.class); addDefaultSerializer(Date.class, DateSerializer.class); addDefaultSerializer(Enum.class, EnumSerializer.class); addDefaultSerializer(EnumSet.class, EnumSetSerializer.class); addDefaultSerializer(Currency.class, CurrencySerializer.class); addDefaultSerializer(StringBuffer.class, StringBufferSerializer.class); addDefaultSerializer(StringBuilder.class, StringBuilderSerializer.class); addDefaultSerializer(Collections.EMPTY_LIST.getClass(), CollectionsEmptyListSerializer.class); addDefaultSerializer(Collections.EMPTY_MAP.getClass(), CollectionsEmptyMapSerializer.class); addDefaultSerializer(Collections.EMPTY_SET.getClass(), CollectionsEmptySetSerializer.class); addDefaultSerializer(Collections.singletonList(null).getClass(), CollectionsSingletonListSerializer.class); addDefaultSerializer(Collections.singletonMap(null, null).getClass(), CollectionsSingletonMapSerializer.class); addDefaultSerializer(Collections.singleton(null).getClass(), CollectionsSingletonSetSerializer.class); addDefaultSerializer(Collection.class, CollectionSerializer.class); addDefaultSerializer(TreeMap.class, TreeMapSerializer.class); addDefaultSerializer(Map.class, MapSerializer.class); addDefaultSerializer(KryoSerializable.class, KryoSerializableSerializer.class); addDefaultSerializer(TimeZone.class, TimeZoneSerializer.class); addDefaultSerializer(Calendar.class, CalendarSerializer.class); lowPriorityDefaultSerializerCount = defaultSerializers.size(); // Primitives and string. Primitive wrappers automatically use the same registration as primitives. register(int.class, new IntSerializer()); register(String.class, new StringSerializer()); register(float.class, new FloatSerializer()); register(boolean.class, new BooleanSerializer()); register(byte.class, new ByteSerializer()); register(char.class, new CharSerializer()); register(short.class, new ShortSerializer()); register(long.class, new LongSerializer()); register(double.class, new DoubleSerializer()); }