/** * Manipulate the field access flags. */ public void setVolatile(boolean on) { if (on) setAccessFlags(getAccessFlags() | Constants.ACCESS_VOLATILE); else setAccessFlags(getAccessFlags() & ~Constants.ACCESS_VOLATILE); }
/** * Set the field this instruction operates on. * * @return this instruction, for method chaining */ public FieldInstruction setField(BCField field) { if (field == null) return setFieldIndex(0); return setField(field.getDeclarer().getName(), field.getName(), field.getTypeName()); }
void initialize(String name, String descriptor) { super.initialize(name, descriptor); makePrivate(); } }
/** * Import the information from given field as a new field in this class. * * @return the added field */ public BCField declareField(BCField field) { BCField newField = declareField(field.getName(), field.getTypeName()); newField.setAccessFlags(field.getAccessFlags()); newField.setAttributes(field.getAttributes()); return newField; }
public void enterBCField(BCField obj) { openBlock("Field"); println("access=" + obj.getAccessFlags()); println("name=" + obj.getNameIndex() + " <" + obj.getName() + ">"); println("type=" + obj.getDescriptorIndex() + " <" + obj.getTypeName() + ">"); }
Collection unmgd = new ArrayList(fields.length); for (int i = 0; i < fields.length; i++) { if (!fields[i].isTransient() && !fields[i].isStatic() && !fields[i].isFinal() && !fields[i].getName().startsWith(PRE) && _meta.getDeclaredField(fields[i].getName()) == null) unmgd.add(fields[i]);
field.makePrivate(); field.setStatic(true); field.setFinal(true);
/** * Adds the following fields to the PersistenceCapable instance: * <ul> * <li><code>private static int pcInheritedFieldCount</code></li> * <li><code>private static Class pcPCSuperclass</code> * </li> * <li><code>private static String[] pcFieldNames</code></li> * <li><code>private static Class[] pcFieldTypes</code></li> * <li><code>private static byte[] pcFieldFlags</code></li> * <li><code>protected transient StateManager pcStateManager</code> * if no PersistenceCapable superclass present)</li> * </ul> */ private void addFields() { _pc.declareField(INHERIT, int.class).setStatic(true); _pc.declareField(PRE + "FieldNames", String[].class).setStatic(true); _pc.declareField(PRE + "FieldTypes", Class[].class).setStatic(true); _pc.declareField(PRE + "FieldFlags", byte[].class).setStatic(true); _pc.declareField(SUPER, Class.class).setStatic(true); if (_meta.getPCSuperclass() == null || getCreateSubclass()) { BCField field = _pc.declareField(SM, SMTYPE); field.makeProtected(); field.setTransient(true); } }
if (fields[i].getDeclarer() == declarer) { break outer; && (field == null || !field.isPublic())) { } else { code.getfield().setField(declarer.getName(), fieldName, field.getType().getName());
/** * Write unmanaged fields to the stream (pcWriteUnmanaged). */ private void addWriteUnmanaged(Collection unmgd, boolean parentDetachable) throws NoSuchMethodException { Class[] outargs = new Class[]{ ObjectOutput.class }; BCMethod meth = _pc.declareMethod(PRE + "WriteUnmanaged", void.class, outargs); meth.makeProtected(); Exceptions exceps = meth.getExceptions(true); exceps.addException(IOException.class); Code code = meth.getCode(true); // super.writeUnmanaged (out); if (parentDetachable) { loadManagedInstance(code, false); code.aload().setParam(0); code.invokespecial().setMethod(getType(_meta. getPCSuperclassMetaData()), PRE + "WriteUnmanaged", void.class, outargs); } // write declared unmanaged serializable fields BCField field; for (Iterator itr = unmgd.iterator(); itr.hasNext();) { field = (BCField) itr.next(); writeExternal(code, field.getName(), field.getType(), null); } code.vreturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }
/** * Declare the primitive fields and the object field. */ private int declareFields(int[] types, BCClass bc) { bc.declareField("objects", Object[].class).makePrivate(); int objectCount = 0; Class type; for (int i = 0; i < types.length; i++) { type = forType(types[i]); if (type == Object.class) objectCount++; else { BCField field = bc.declareField(getFieldName(i), type); field.setAccessFlags(getFieldAccess()); } } return objectCount; }
type.setStatic(true); type.makePrivate();
declarer = _pc.getName(); BCField field = _pc.declareField(name, Object.class); field.makePrivate(); field.setTransient(true); } else if (impl) { name = detachField.getName();
/** * Manipulate the field access flags. */ public boolean isTransient() { return (getAccessFlags() & Constants.ACCESS_TRANSIENT) > 0; }
/** * Return all fields with the given name, including those of all * superclasses, or an empty array if none. */ public BCField[] getFields(String name) { List matches = new LinkedList(); BCField[] fields = getFields(); for (int i = 0; i < fields.length; i++) if (fields[i].getName().equals(name)) matches.add(fields[i]); return (BCField[]) matches.toArray(new BCField[matches.size()]); }
Class type = fmd.getDeclaredType(); BCField field = bc.declareField(name, type); field.setAccessFlags(Constants.ACCESS_PRIVATE);
/** * Adds a static field to hold the loaded class constant. */ private BCField addClassField(String name) { String fieldName = "class$L" + name.replace('.', '$').replace('[', '$').replace(';', '$'); BCField field = _class.getDeclaredField(fieldName); if (field == null) { field = _class.declareField(fieldName, Class.class); field.makePackage(); field.setStatic(true); field.setSynthetic(true); } return field; }
/** * Remove a field from this class. After this method, the removed field * will be invalid, and the result of any operations on it is undefined. * * @return true if this class contained the field, false otherwise */ public boolean removeDeclaredField(String name) { List fields = _state.getFieldsHolder(); BCField field; for (Iterator itr = fields.iterator(); itr.hasNext();) { field = (BCField) itr.next(); if (field.getName().equals(name)) { itr.remove(); field.invalidate(); return true; } } return false; }
Collection unmgd = new ArrayList(fields.length); for (int i = 0; i < fields.length; i++) { if (!fields[i].isTransient() && !fields[i].isStatic() && !fields[i].isFinal() && !fields[i].getName().startsWith(PRE) && _meta.getDeclaredField(fields[i].getName()) == null) unmgd.add(fields[i]);
field.makePrivate(); field.setStatic(true); field.setFinal(true);