Package java.lang.instrument

Examples of java.lang.instrument.ClassDefinition


                applicationClass.enhance();
                if (sigChecksum != applicationClass.sigChecksum) {
                    dirtySig = true;
                }
                BytecodeCache.cacheBytecode(applicationClass.enhancedByteCode, applicationClass.name, applicationClass.javaSource);
                newDefinitions.add(new ClassDefinition(applicationClass.javaClass, applicationClass.enhancedByteCode));
                currentState = new ApplicationClassloaderState();//show others that we have changed..
            }
        }
        if (newDefinitions.size() > 0) {
            Cache.clear();
View Full Code Here


   */
  public static boolean redefineClassEL(Class clazz, byte[] barr){
    Instrumentation inst = InstrumentationFactory.getInstance();
      if(inst!=null && inst.isRedefineClassesSupported()) {
        try {
            inst.redefineClasses(new ClassDefinition(clazz,barr));
        return true;
      }
        catch (Throwable t) {t.printStackTrace();}
      }
      return false;
View Full Code Here

      return false;
  }

  public static void redefineClass(Class clazz, byte[] barr) throws ClassNotFoundException, UnmodifiableClassException{
    Instrumentation inst = InstrumentationFactory.getInstance();
      inst.redefineClasses(new ClassDefinition(clazz,barr));
  }
View Full Code Here

        Set<ClassDefinition> defs = new HashSet<ClassDefinition>();
        Set<Class<?>> changedClasses = new HashSet<Class<?>>();
        Set<Class<?>> classesToReload = new HashSet<Class<?>>();
        for (int i = 0; i < classDefinitions.length; ++i) {
            try {
                ClassDefinition d = classDefinitions[i];
                ClassFile file = new ClassFile(new DataInputStream(new ByteArrayInputStream(d.getDefinitionClassFile())));
                modifyReloadedClass(file, d.getDefinitionClass().getClassLoader(), d.getDefinitionClass(), classesToReload);
                ByteArrayOutputStream bs = new ByteArrayOutputStream();
                file.write(new DataOutputStream(bs));
                changedClasses.add(d.getDefinitionClass());
                ClassDefinition n = new ClassDefinition(d.getDefinitionClass(), bs.toByteArray());
                defs.add(n);
            } catch (IOException e) {
                log.error("IO Error", e);
            }
        }
View Full Code Here

                for (int j = 0; j < length; ++j) {
                    buffer[j] = (byte) input.read();
                }
                final Class theClass = classMap.get(className);
                if (theClass != null) {
                    classDefinitions.add(new ClassDefinition(theClass, buffer));
                    replacedClasses.add(theClass);
                } else {
                    addedClassList.add(new AddedClass(className, buffer, classesToReplace.getClassLoader()));
                }
            }
View Full Code Here

            try {
                final Class<?> originalProxyClass = loader.loadClass(ct.getName());
                try {
                    ByteArrayOutputStream bs = new ByteArrayOutputStream();
                    ct.write(new DataOutputStream(bs));
                    Agent.redefine(new ClassDefinition[]{new ClassDefinition(originalProxyClass, bs.toByteArray())}, new AddedClass[0]);
                    return originalProxyClass;
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            } catch (ClassNotFoundException e) {
View Full Code Here

                for (String oldName : nameReplacements.keySet()) {
                    String newName = nameReplacements.get(oldName);
                    nc.replaceClassName(oldName, newName);
                }
                nc.setName(o.getName());
                ClassDefinition cd = new ClassDefinition(o, nc.toBytecode());
                definitions[count++] = cd;
            }
            count = 0;
            for (Entry<Class<?>, String> o : addedClasses.entrySet()) {
                CtClass nc = pool.get(o.getKey().getName());
View Full Code Here

                for (String oldName : nameReplacements.keySet()) {
                    String newName = nameReplacements.get(oldName);
                    nc.replaceClassName(oldName, newName);
                }
                nc.setName(o.getName());
                ClassDefinition cd = new ClassDefinition(o, nc.toBytecode());
                definitions[count++] = cd;
            }
            count = 0;
            for (Entry<Class<?>, String> o : addedClasses.entrySet()) {
                CtClass nc = pool.get(o.getKey().getName());
View Full Code Here

    /**
     * @tests java.lang.instrument.ClassDefinition#ClassDefinition(Class<?>, byte[])
     */
    public void test_ConstructorLClass$B() {
        try{
            new ClassDefinition(null,null);
            fail("Should throw NullPointerException");
        } catch (NullPointerException e) {
            // expected
        }
        try{
            new ClassDefinition(null,new byte[0]);
            fail("Should throw NullPointerException");
        } catch (NullPointerException e) {
            // expected
        }
        try{
            new ClassDefinition(this.getClass(),null);
            fail("Should throw NullPointerException");
        } catch (NullPointerException e) {
            // expected
        }
    }
View Full Code Here

    /**
     * @tests java.lang.instrument.ClassDefinition#getDefinitionClass()
     */
    public void test_getDefinitionClass() {
        ClassDefinition cd = new ClassDefinition(this.getClass(),new byte[0]);
        assertSame(this.getClass(),cd.getDefinitionClass());
    }
View Full Code Here

TOP

Related Classes of java.lang.instrument.ClassDefinition

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.