ComponentWithBrowseButton - optional remove listener on hide
[fedora-idea.git] / java / java-runtime / src / com / intellij / rt / execution / junit / segments / OutputObjectRegistry.java
blobc23c9c520ee4f1815f9487c51f2662e48616f531
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.rt.execution.junit.segments;
18 import java.util.Hashtable;
20 public abstract class OutputObjectRegistry {
21 private final Hashtable myKnownKeys = new Hashtable();
22 private int myLastIndex = 0;
23 private PacketProcessor myMainTransport;
24 private PacketProcessor myAuxilaryTransport;
26 public OutputObjectRegistry(PacketProcessor transport) {
27 myMainTransport = transport;
30 public OutputObjectRegistry(PacketProcessor mainTransport, PacketProcessor auxilaryTransport) {
31 this(mainTransport);
32 myAuxilaryTransport = auxilaryTransport;
35 public String referenceTo(Object test) {
36 if (myKnownKeys.containsKey(test))
37 return (String) myKnownKeys.get(test);
38 return sendObject(test);
41 public Packet createPacket() {
42 return new Packet(myMainTransport, this);
45 private String sendObject(Object test) {
46 String key = String.valueOf(myLastIndex++);
47 myKnownKeys.put(test, key);
48 Packet packet = createPacket().addString(PoolOfDelimiters.OBJECT_PREFIX).addReference(key);
49 addStringRepresentation(test, packet);
50 packet.addLong(getTestCont(test));
51 sendViaAllTransports(packet);
52 return key;
55 protected abstract int getTestCont(Object test);
56 protected abstract void addStringRepresentation(Object test, Packet packet);
58 private void sendViaAllTransports(Packet packet) {
59 packet.send();
60 if (myAuxilaryTransport != null)
61 packet.sendThrough(myAuxilaryTransport);
66 protected static void addTestClass(Packet packet, String className) {
67 packet.
68 addLimitedString(PoolOfTestTypes.TEST_CLASS).
69 addLimitedString(className);
72 protected void addUnknownTest(Packet packet, Object test) {
73 packet.
74 addLimitedString(PoolOfTestTypes.UNKNOWN).
75 addLong(getTestCont(test)).
76 addLimitedString(test.getClass().getName());
79 protected static void addAllInPackage(Packet packet, String name) {
80 packet.
81 addLimitedString(PoolOfTestTypes.ALL_IN_PACKAGE).
82 addLimitedString(name);
85 protected static void addTestMethod(Packet packet, String methodName, String className) {
86 packet.
87 addLimitedString(PoolOfTestTypes.TEST_METHOD).
88 addLimitedString(methodName).
89 addLimitedString(className);
92 public void forget(Object test) {
93 myKnownKeys.remove(test);