Package java.io

Examples of java.io.ObjectStreamClass$Caches


      ClassNotFoundException {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStreamWithWriteDesc1 oos = new ObjectOutputStreamWithWriteDesc1(
        baos);
    ObjectStreamClass desc = ObjectStreamClass
    .lookup(TestClassForSerialization.class);
    oos.writeClassDescriptor(desc);
    oos.close();

        byte[] bytes = baos.toByteArray();
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    ObjectIutputStreamWithReadDesc1 ois = new ObjectIutputStreamWithReadDesc1(
        bais);
    Object obj = ois.readClassDescriptor();
    ois.close();
    assertEquals(desc.getClass(), obj.getClass());

        //eof
        bais = new ByteArrayInputStream(bytes);
        ExceptionalBufferedInputStream bis = new ExceptionalBufferedInputStream(
                bais);
View Full Code Here


        }

        @Override
        public ObjectStreamClass readClassDescriptor() throws IOException,
                ClassNotFoundException {
            ObjectStreamClass osc = super.readClassDescriptor();

            if (osc.getName().equals(returnClass.getName())) {
                return ObjectStreamClass.lookup(returnClass);
            }
            return osc;
        }
View Full Code Here

        protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
            boolean ser = readBoolean();
            if (ser) {
                String clsName = readUTF();
                ObjectStreamClass cached = _classDescriptors.get(clsName);
                if (cached == null) {
                    String newClsName = clsName;
                    if (newClsName.startsWith("org.apache.ode.bpel.runtime."))
                        newClsName = clsName.replace("org.apache.ode.bpel.runtime.", "org.apache.ode.bpel.rtrep.v1.");
                    if (newClsName.startsWith("org.apache.ode.bpel.o.Serializer"))
View Full Code Here

      }
    }

    @Override
    protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
      ObjectStreamClass streamClass = super.readClassDescriptor();
      // Flag.class descriptor was replaced with Object.class descriptor in order to make
      // the descriptor smaller. We need to replace it back.
      if (Object.class.getName().equals(streamClass.getName())) {
        return ObjectStreamClass.lookup(Flag.class);
      } else {
        return streamClass;
      }
    }
View Full Code Here

    @Override
    protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException {
      // Replace Flag.class descriptor with Object.class descriptor as it is smaller and could
      // not be provided otherwise.
      if (Flag.class.getName().equals(desc.getName())) {
        ObjectStreamClass streamClass = ObjectStreamClass.lookupAny(Object.class);
        super.writeClassDescriptor(streamClass);
      } else {
        super.writeClassDescriptor(desc);
      }
    }
View Full Code Here

    {
      throw new WicketNotSerializableException(toPrettyPrintedStack(obj.getClass().getName())
          .toString(), exception);
    }

    ObjectStreamClass desc;
    for (;;)
    {
      try
      {
        desc = (ObjectStreamClass)LOOKUP_METHOD.invoke(null, new Object[] { cls,
            Boolean.TRUE });
        Class repCl;
        if (!((Boolean)HAS_WRITE_REPLACE_METHOD_METHOD.invoke(desc, null)).booleanValue()
            || (obj = INVOKE_WRITE_REPLACE_METHOD.invoke(desc, new Object[] { obj })) == null
            || (repCl = obj.getClass()) == cls)
        {
          break;
        }
        cls = repCl;
      }
      catch (IllegalAccessException e)
      {
        throw new RuntimeException(e);
      }
      catch (InvocationTargetException e)
      {
        throw new RuntimeException(e);
      }
    }

    if (cls.isPrimitive())
    {
      // skip
    }
    else if (cls.isArray())
    {
      checked.put(obj, null);
      Class ccl = cls.getComponentType();
      if (!(ccl.isPrimitive()))
      {
        Object[] objs = (Object[])obj;
        for (int i = 0; i < objs.length; i++)
        {
          String arrayPos = "[" + i + "]";
          simpleName = arrayPos;
          fieldDescription += arrayPos;
          check(objs[i]);
        }
      }
    }
    else if (obj instanceof Externalizable && (!Proxy.isProxyClass(cls)))
    {
      Externalizable extObj = (Externalizable)obj;
      try
      {
        extObj.writeExternal(new ObjectOutputAdaptor()
        {
          private int count = 0;

          public void writeObject(Object streamObj) throws IOException
          {
            // Check for circular reference.
            if (checked.containsKey(streamObj))
            {
              return;
            }

            checked.put(streamObj, null);
            String arrayPos = "[write:" + count++ + "]";
            simpleName = arrayPos;
            fieldDescription += arrayPos;

            check(streamObj);
          }
        });
      }
      catch (Exception e)
      {
        if (e instanceof WicketNotSerializableException)
        {
          throw (WicketNotSerializableException)e;
        }
        log.warn("error delegating to Externalizable : " + e.getMessage() + ", path: "
            + currentPath());
      }
    }
    else
    {
      Method writeObjectMethod = null;
      Object o = writeObjectMethodCache.get(cls);
      if (o != null)
      {
        if (o instanceof Method)
        {
          writeObjectMethod = (Method)o;
        }
      }
      else
      {
        try
        {
          writeObjectMethod = cls.getDeclaredMethod("writeObject",
              new Class[] { java.io.ObjectOutputStream.class });
        }
        catch (SecurityException e)
        {
          // we can't access/ set accessible to true
          writeObjectMethodCache.put(cls, Boolean.FALSE);
        }
        catch (NoSuchMethodException e)
        {
          // cls doesn't have that method
          writeObjectMethodCache.put(cls, Boolean.FALSE);
        }
      }

      final Object original = obj;
      if (writeObjectMethod != null)
      {
        class InterceptingObjectOutputStream extends ObjectOutputStream
        {
          private int counter;

          InterceptingObjectOutputStream() throws IOException
          {
            super(DUMMY_OUTPUT_STREAM);
            enableReplaceObject(true);
          }

          protected Object replaceObject(Object streamObj) throws IOException
          {
            if (streamObj == original)
            {
              return streamObj;
            }

            counter++;
            // Check for circular reference.
            if (checked.containsKey(streamObj))
            {
              return null;
            }

            checked.put(original, null);
            String arrayPos = "[write:" + counter + "]";
            simpleName = arrayPos;
            fieldDescription += arrayPos;
            check(streamObj);
            return streamObj;
          }
        }
        try
        {
          InterceptingObjectOutputStream ioos = new InterceptingObjectOutputStream();
          ioos.writeObject(obj);
        }
        catch (Exception e)
        {
          if (e instanceof WicketNotSerializableException)
          {
            throw (WicketNotSerializableException)e;
          }
          log.warn("error delegating to writeObject : " + e.getMessage() + ", path: "
              + currentPath());
        }
      }
      else
      {
        Object[] slots;
        try
        {
          slots = (Object[])GET_CLASS_DATA_LAYOUT_METHOD.invoke(desc, null);
        }
        catch (Exception e)
        {
          throw new RuntimeException(e);
        }
        for (int i = 0; i < slots.length; i++)
        {
          ObjectStreamClass slotDesc;
          try
          {
            Field descField = slots[i].getClass().getDeclaredField("desc");
            descField.setAccessible(true);
            slotDesc = (ObjectStreamClass)descField.get(slots[i]);
View Full Code Here

    {
  lock.writeLock().lock();
  try {
      ClassDescInfo.processQueue(refQueue, classDescMap);
      ClassDescInfo info = classDescMap.get(classId);
      ObjectStreamClass existing = (info != null) ? info.get() : null;
      if (existing == null) {
    info = new ClassDescInfo(classId, classDesc, refQueue);
    classDescMap.put(classId, info);
      }
      if (!classIdMap.containsKey(classDesc)) {
View Full Code Here

    private ObjectStreamClass getClassDesc(Transaction txn, int classId) {
  lock.readLock().lock();
  try {
      SoftReference<ObjectStreamClass> ref = classDescMap.get(classId);
      if (ref != null) {
    ObjectStreamClass classDesc = ref.get();
    if (classDesc != null) {
        return classDesc;
    }
      }
  } finally {
View Full Code Here

    private static ObjectStreamClass getClassDesc(byte[] classInfo) {
  ObjectInputStream in = null;
  Exception exception;
  try {
      in = new ObjectInputStream(new ByteArrayInputStream(classInfo));
      ObjectStreamClass classDesc = (ObjectStreamClass) in.readObject();
      return classDesc;
  } catch (ClassNotFoundException e) {
      exception = e;
  } catch (IOException e) {
      exception = e;
View Full Code Here

            StringBuffer b = new StringBuffer("RMI:");
            b.append(escapeIRName(cls.getName()));
            memberPrefix = b.toString() + ".";
            String hashStr = toHexString(classHashCode);
            b.append(':').append(hashStr);
            ObjectStreamClass osClass = ObjectStreamClass.lookup(cls);
            if (osClass != null) {
                long serialVersionUID = osClass.getSerialVersionUID();
                String SVUID = toHexString(serialVersionUID);

                if (classHashCode != serialVersionUID)
                    b.append(':').append(SVUID);
                memberPostfix = ":" + hashStr + ":" + SVUID;
View Full Code Here

TOP

Related Classes of java.io.ObjectStreamClass$Caches

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.