public void readExternal()

in webbeans-impl/src/main/java/org/apache/webbeans/intercept/DefaultInterceptorHandler.java [217:276]


    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
    {
        target = (T) in.readObject();
        if (in.readBoolean())
        {
            delegate = target;
        }
        else
        {
            delegate = (T) in.readObject();
        }

        int instancesSize = in.readInt();
        WebBeansContext webBeansContext = WebBeansContext.getInstance();
        BeanManager beanManager = webBeansContext.getBeanManagerImpl();

        Map<Interceptor<?>, Object> tmpInstances = new HashMap<>();
        for (int i = 0; i < instancesSize; i++)
        {
            Interceptor<?> interceptor = readInterceptor(in.readUTF(), beanManager);
            if (!SelfInterceptorBean.class.isInstance(interceptor))
            {
                Object value = in.readObject();
                tmpInstances.put(interceptor, value);
            }
            else
            {
                tmpInstances.put(interceptor, target);
            }
        }
        instances = tmpInstances;

        int interceptorsSize = in.readInt();
        interceptors = new HashMap<>(interceptorsSize);
        for (int i = 0; i < interceptorsSize; i++)
        {
            Class<?> declaringClass = (Class<?>) in.readObject();
            String name = in.readUTF();
            Class<?>[] parameters = (Class<?>[]) in.readObject();
            Method method;
            try
            {
                method = declaringClass.getDeclaredMethod(name, parameters);
            }
            catch (NoSuchMethodException e)
            {
                throw new NotSerializableException(target.getClass().getName());
            }

            int interceptorListSize = in.readInt();
            List<Interceptor<?>> interceptorList = new ArrayList<>(interceptorListSize);
            for (int j = 0; j < interceptorListSize; j++)
            {
                interceptorList.add(readInterceptor(in.readUTF(), beanManager));
            }
            interceptors.put(method, interceptorList);
        }

        beanPassivationId = in.readUTF();
    }