protected final void resolveRelations(ClassDescriptor clsDesc) { FieldDescriptor[] fields; fields = clsDesc.getFields(); for (int i = 0; i < fields.length; ++i) { if (fields[i].getClassDescriptor() != null) continue; ClassDescriptor relDesc; Class fieldType = fields[i].getFieldType(); if (fieldType != null) { relDesc = getDescriptor(fieldType.getName()); if (relDesc != null && relDesc instanceof XMLClassDescriptor && fields[i] instanceof XMLFieldDescriptorImpl) { ((XMLFieldDescriptorImpl) fields[i]).setClassDescriptor(relDesc); } } } if (clsDesc instanceof XMLClassDescriptorImpl) ((XMLClassDescriptorImpl) clsDesc).sortDescriptors(); }
public String toString() { return _tableName + "." + _fieldDescriptor.getFieldName(); } }
protected final FieldDescriptor[] divideFieldDescriptors(final FieldDescriptor[] fields, final String[] ids, final FieldDescriptor[] identities) { List<FieldDescriptor> fieldList = new ArrayList<FieldDescriptor>(fields.length); for (int i = 0; i < fields.length; i++) { FieldDescriptor field = fields[i]; final int index = getIdColumnIndex(field, ids); if (index == -1) { // copy non identity field from list of fields. fieldList.add(field); } else { if (field instanceof FieldDescriptorImpl) { ((FieldDescriptorImpl) field).setRequired(true); } if (field.getHandler() instanceof FieldHandlerImpl) { ((FieldHandlerImpl) field.getHandler()).setRequired(true); } identities[index] = field; } } // convert regularFieldList into array FieldDescriptor[] result = new FieldDescriptor[fieldList.size()]; return fieldList.toArray(result); }
private boolean isFieldTransient(final FieldDescriptor fieldDescriptor) { boolean isFieldTransient = fieldDescriptor.isTransient(); if (fieldDescriptor.hasNature(FieldDescriptorJDONature.class.getName())) { FieldDescriptorJDONature nature = new FieldDescriptorJDONature(fieldDescriptor); isFieldTransient |= nature.isTransient(); } return isFieldTransient; }
protected FieldDescriptor findIdentityByName( final List<FieldDescriptor> fldList, final String idName, final Class javaClass) throws MappingException { for (int i = 0; i < fldList.size(); i++) { FieldDescriptor field = fldList.get(i); if (idName.equals(field.getFieldName())) { if (!(field.hasNature(FieldDescriptorJDONature.class.getName()))) { throw new IllegalStateException( "Identity field must be of type JDOFieldDescriptor"); } String[] sqlName = new FieldDescriptorJDONature(field).getSQLName(); if (sqlName == null) { throw new MappingException("mapping.noSqlName", field.getFieldName(), javaClass.getName()); } fldList.remove(i); return field; } } return null; }
private Object followPath(final Object parent) { ClassDescriptor curClassDesc = _classDescriptor; Object curObject = parent; for (int i = 1; i < _pathInfo.size(); i++) { String curFieldName = _pathInfo.elementAt(i); try { ClassDescriptorJDONature nature; nature = new ClassDescriptorJDONature(curClassDesc); FieldDescriptor curFieldDesc = nature.getField(curFieldName); FieldHandler handler = curFieldDesc.getHandler(); curObject = handler.getValue(curObject); curClassDesc = curFieldDesc.getClassDescriptor(); } catch (Exception ex) { throw new NoSuchElementException( "An exception was thrown trying to access get methods to follow " + "the path expression. " + ex.toString()); } } return curObject; } }
setContainingClassDescriptor(fieldDesc.getContainingClassDescriptor()); setFieldName(fieldDesc.getFieldName()); if (fieldDesc.getFieldType() == org.exolab.castor.types.AnyNode.class) { setFieldType(fieldDesc.getFieldType()); ClassDescriptor cd = fieldDesc.getClassDescriptor(); if (cd != null) { if (cd instanceof XMLClassDescriptor) { setHandler(fieldDesc.getHandler()); setTransient(fieldDesc.isTransient()); setImmutable(fieldDesc.isImmutable()); setRequired(fieldDesc.isRequired()); setMultivalued(fieldDesc.isMultivalued());
FieldDescriptor fdesc = fields[i]; String fieldName = fdesc.getFieldName(); fdesc = fdesc.getClassDescriptor().getFields()[0]; fieldName = fdesc.getFieldName(); isContainer = true; Class fieldType = fdesc.getFieldType(); if (fdesc.isRequired()) { fieldMap.setRequired(true); if (fdesc.isTransient()) { fieldMap.setTransient(true); if (fdesc.isMultivalued()) {
if (baseIdDescriptors[i].hasNature(FieldDescriptorJDONature.class.getName())) { String name = baseIdDescriptors[i].getFieldName(); String[] sqlName = new FieldDescriptorJDONature(baseIdDescriptors[i]).getSQLName(); int[] sqlType = new FieldDescriptorJDONature(baseIdDescriptors[i]).getSQLType(); FieldHandlerImpl fh = (FieldHandlerImpl) baseIdDescriptors[i].getHandler(); if (name.equals(idDescriptors[j].getFieldName()) && (idDescriptors[j].hasNature(JDO_FIELD_NATURE))) { sqlName = new FieldDescriptorJDONature(idDescriptors[j]).getSQLName(); break; if (!fieldDescriptors[i].isTransient()) { if ((fieldDescriptors[i].hasNature(FieldDescriptorJDONature.class.getName())) || (fieldDescriptors[i].getClassDescriptor() != null)) {
public FieldMolder(final DatingService datingService, final ClassMolder enclosingClassMolder, final FieldDescriptor fieldDescriptor) throws MappingException { String fieldName = fieldDescriptor.getFieldName(); String fieldType = fieldDescriptor.getFieldType().getName(); _transient = fieldDescriptor.isTransient(); Class<?> fieldClassType = _defaultReflectService.getFieldType(); _default = Types.getDefault(_defaultReflectService.getFieldType()); if (!_defaultReflectService.getFieldType().isPrimitive()) { _default = null;
ClassDescriptor related = fieldDesc.getClassDescriptor(); if (related != null) { if (!(related.hasNature(ClassDescriptorJDONature.class.getName()))) { if (!(fieldDesc.hasNature(FieldDescriptorJDONature.class.getName()))) { _tableName = new ClassDescriptorJDONature(related).getTableName(); _store = false; _multi = fieldDesc.isMultivalued(); _joined = true; _joinFields = classnames; _tableName = jdoFieldNature.getManyTable(); _store = false; _multi = fieldDesc.isMultivalued(); _joined = true; _joinFields = (joins != null) ? joins : classnames; _tableName = new ClassDescriptorJDONature(related).getTableName(); _store = false; _multi = fieldDesc.isMultivalued(); _joined = true; _joinFields = (joins != null) ? joins : classnames; if (!(relids[i].hasNature(FieldDescriptorJDONature.class.getName()))) { throw new MappingException("Related class identities field does " + "not contains sql information!"); FieldHandlerImpl fh = (FieldHandlerImpl) relId.getHandler(); _columns[i] = new SQLColumnInfo(names[i],
if (fieldDescriptor.hasNature(FieldDescriptorJDONature.class.getName()) && new FieldDescriptorJDONature(fieldDescriptor).getManyTable() != null) { FieldDescriptorJDONature nature = new FieldDescriptorJDONature(fieldDescriptor); int identityFieldCount = 0; for (FieldDescriptor identityFieldDescriptor : identityFieldDescriptors) { if (identityFieldDescriptor.hasNature(FieldDescriptorJDONature.class.getName())) { idSQL[identityFieldCount] = new FieldDescriptorJDONature(identityFieldDescriptor).getSQLName()[0]; int[] type = new FieldDescriptorJDONature(identityFieldDescriptor).getSQLType(); idType[identityFieldCount] = (type == null) ? 0 : type[0]; FieldHandlerImpl fieldHandler = (FieldHandlerImpl) identityFieldDescriptor.getHandler(); idConvertTo[identityFieldCount] = fieldHandler.getConvertTo(); idConvertFrom[identityFieldCount] = fieldHandler.getConvertFrom(); try { JDOClassDescriptorResolver jdoCDR = (JDOClassDescriptorResolver) classDescriptorResolver; relatedClassDescriptor = jdoCDR.resolve(fieldDescriptor.getFieldType().getName()); } catch (ResolverException e) { throw new MappingException("Problem resolving class descriptor for class " int relatedIdentityCount = 0; for (FieldDescriptor relatedIdentityDescriptor : relatedIdentityDescriptors) { if (relatedIdentityDescriptor.hasNature(FieldDescriptorJDONature.class.getName())) { FieldDescriptorJDONature relatedNature = new FieldDescriptorJDONature(relatedIdentityDescriptor); String[] tempId = relatedNature.getSQLName(); int[] tempType = relatedNature.getSQLType(); relatedIdType[relatedIdentityCount] = (tempType == null) ? 0 : tempType[0]; FieldHandlerImpl fh = (FieldHandlerImpl) relatedIdentityDescriptors[relatedIdentityCount].getHandler();
curClassDesc = curField.getClassDescriptor(); if ((curClassDesc == null) && iter.hasNext()) { throw new QueryException("An non-reference field was requested: " getFieldInfo().put(projection, curField); Class<?> theClass = curField.getFieldType(); } else if (count > 1) { _projectionType = DEPENDANT_OBJECT_VALUE; } else if (field.getContainingClassDescriptor() != _clsDesc) { _projectionType = DEPENDANT_OBJECT_VALUE; } else {
String name = fieldDesc.getFieldName(); String xmlFieldName = _internalContext.getXMLNaming().toXMLName(name); if (isPrimitive(fieldDesc.getFieldType())) { nodeType = primitiveNodeType; setIdentity((XMLFieldDescriptor) identity); } else { xmlFieldName = _internalContext.getXMLNaming().toXMLName(identity.getFieldName()); setIdentity(new XMLFieldDescriptorImpl(identity, xmlFieldName, NodeType.Attribute, primitiveNodeType));
&& !Types.isSimpleType(_defaultReflectService.getFieldType())) { try { Method method;
ClassDescriptor clsDesc = field.getContainingClassDescriptor(); if (clsDesc == null) { throw new IllegalStateException( srcDesc = fieldDesc.getClassDescriptor();
private void resolvePrimaryKeys(final ClassDescriptor classDescriptor, final TableInfo table) throws MappingException { for (FieldDescriptor selfFD: ((ClassDescriptorImpl) classDescriptor).getIdentities()) { if (!selfFD.hasNature(FieldDescriptorJDONature.class.getName())) { throw new MappingException("Excepted JDOFieldDescriptor"); } FieldDescriptorJDONature selfFN = new FieldDescriptorJDONature(selfFD); String sqlName = selfFN.getSQLName()[0]; int selfType = selfFN.getSQLType()[0]; TypeConvertor convFrom = ((FieldHandlerImpl) selfFD.getHandler()).getConvertFrom(); ColumnInfo column = new ColumnInfo(sqlName, -1, selfType, convFrom, false, false); table.getPrimaryKey().addColumn(column); } }
field.getFieldDescriptor().getContainingClassDescriptor(); boolean isTableNameAlreadyAdded = identitiesUsedForTable.containsKey( new ClassDescriptorJDONature(classDescriptor).getTableName());
sourceClass = (ClassDescriptor) fieldAndClass[1]; ClassDescriptor clsDesc = fieldDesc.getClassDescriptor(); FieldDescriptorJDONature fieldJDONature = new FieldDescriptorJDONature(fieldDesc); if (clsDesc != null) {
setContainingClassDescriptor(fieldDesc.getContainingClassDescriptor()); setFieldName(fieldDesc.getFieldName()); if (fieldDesc.getFieldType() == org.exolab.castor.types.AnyNode.class) { setFieldType(fieldDesc.getFieldType()); ClassDescriptor cd = fieldDesc.getClassDescriptor(); if (cd != null) { if (cd instanceof XMLClassDescriptor) { setHandler(fieldDesc.getHandler()); setTransient(fieldDesc.isTransient()); setImmutable(fieldDesc.isImmutable()); setRequired(fieldDesc.isRequired()); setMultivalued(fieldDesc.isMultivalued());