private void storeXMLDescriptorsByQName(DatabaseSession session) { Iterator iterator = session.getProject().getOrderedDescriptors().iterator(); while (iterator.hasNext()) { XMLDescriptor xmlDescriptor = (XMLDescriptor) iterator.next(); storeXMLDescriptorByQName(xmlDescriptor); } }
/** * Initializes pageableQueries map by reading RestPageableQueries entity annotations. */ private void initPageableQueries() { pageableQueries = new HashMap<String, RestPageableQuery>(); // Iterate on all entity classes for (Class clazz : getServerSession().getProject().getDescriptors().keySet()) { if (clazz.isAnnotationPresent(RestPageableQueries.class)) { final RestPageableQueries restPageableQueries = (RestPageableQueries) clazz.getAnnotation(RestPageableQueries.class); // Process each RestPageableQuery annotation in the list for (RestPageableQuery restPageableQuery : restPageableQueries.value()) { pageableQueries.put(restPageableQuery.queryName(), restPageableQuery); } } } }
/** * Initializes pageableQueries map by reading RestPageableQueries entity annotations. */ private void initPageableQueries() { pageableQueries = new HashMap<String, RestPageableQuery>(); // Iterate on all entity classes for (Class clazz : getServerSession().getProject().getDescriptors().keySet()) { if (clazz.isAnnotationPresent(RestPageableQueries.class)) { final RestPageableQueries restPageableQueries = (RestPageableQueries) clazz.getAnnotation(RestPageableQueries.class); // Process each RestPageableQuery annotation in the list for (RestPageableQuery restPageableQuery : restPageableQueries.value()) { pageableQueries.put(restPageableQuery.queryName(), restPageableQuery); } } } }
private void processRefClasses(List processed, Set refClasses, org.eclipse.persistence.internal.oxm.NamespaceResolver nr) { if (refClasses != null) { for (Object refClass : refClasses) { Class nextClass = (Class) refClass; Descriptor desc = (Descriptor) xmlContext.getSession().getProject().getDescriptor(nextClass); processXMLDescriptor(processed, desc, nr); } } }
private void processRefClasses(List processed, Set refClasses, org.eclipse.persistence.internal.oxm.NamespaceResolver nr) { if (refClasses != null) { for (Object refClass : refClasses) { Class nextClass = (Class) refClass; Descriptor desc = (Descriptor) xmlContext.getSession().getProject().getDescriptor(nextClass); processXMLDescriptor(processed, desc, nr); } } }
@Override protected JAXBContextState createContextState() throws JAXBException { DynamicJAXBContextState state = new DynamicJAXBContextState((DynamicClassLoader) classLoader); StringTokenizer st = new StringTokenizer(sessions, ":"); ArrayList<Project> dynamicProjects = new ArrayList<Project>(st.countTokens()); XMLSessionConfigLoader loader = new XMLSessionConfigLoader(); while (st.hasMoreTokens()) { DatabaseSession dbSession = (DatabaseSession) SessionManager.getManager().getSession(loader, st.nextToken(), classLoader, false, true); Project p = DynamicTypeBuilder.loadDynamicProject(dbSession.getProject(), null, (DynamicClassLoader) classLoader); dynamicProjects.add(p); } XMLContext xmlContext = new XMLContext(dynamicProjects); state.setXMLContext(xmlContext); List<Session> sessions = (List<Session>) xmlContext.getSessions(); for (Object session : sessions) { state.getHelpers().add(new DynamicHelper((DatabaseSession) session)); } return state; } }
@Override protected JAXBContextState createContextState() throws JAXBException { DynamicJAXBContextState state = new DynamicJAXBContextState((DynamicClassLoader) classLoader); StringTokenizer st = new StringTokenizer(sessions, ":"); ArrayList<Project> dynamicProjects = new ArrayList<Project>(st.countTokens()); XMLSessionConfigLoader loader = new XMLSessionConfigLoader(); while (st.hasMoreTokens()) { DatabaseSession dbSession = (DatabaseSession) SessionManager.getManager().getSession(loader, st.nextToken(), classLoader, false, true); Project p = DynamicTypeBuilder.loadDynamicProject(dbSession.getProject(), null, (DynamicClassLoader) classLoader); dynamicProjects.add(p); } XMLContext xmlContext = new XMLContext(dynamicProjects); state.setXMLContext(xmlContext); List<Session> sessions = (List<Session>) xmlContext.getSessions(); for (Object session : sessions) { state.getHelpers().add(new DynamicHelper((DatabaseSession) session)); } return state; } }
private void generateLinksForRelationships(PersistenceContext context, PersistenceWeavedRest entity) { final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(entity.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); for (final Field field : entity.getClass().getDeclaredFields()) { if (PersistenceWeavedRest.class.isAssignableFrom(field.getType())) { final PersistenceWeavedRest obj = (PersistenceWeavedRest) callGetterForProperty(entity, field.getName()); if (obj != null) { final String fieldClassName = context.getJAXBDescriptorForClass(field.getType()).getAlias(); final String fieldId = IdHelper.stringifyId(obj, fieldClassName, context); final ItemLinks links = (new ItemLinksBuilder()) .addSelf(HrefHelper.buildEntityFieldHref(context, entityClassName, entityId, field.getName())) .addCanonical(HrefHelper.buildEntityHref(context, fieldClassName, fieldId)) .build(); obj._persistence_setLinks(links); } } } }
private void generateLinksForRelationships(PersistenceContext context, PersistenceWeavedRest entity) { final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(entity.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); for (final Field field : entity.getClass().getDeclaredFields()) { if (PersistenceWeavedRest.class.isAssignableFrom(field.getType())) { final PersistenceWeavedRest obj = (PersistenceWeavedRest) callGetterForProperty(entity, field.getName()); if (obj != null) { final String fieldClassName = context.getJAXBDescriptorForClass(field.getType()).getAlias(); final String fieldId = IdHelper.stringifyId(obj, fieldClassName, context); final ItemLinks links = (new ItemLinksBuilder()) .addSelf(HrefHelper.buildEntityFieldHref(context, entityClassName, entityId, field.getName())) .addCanonical(HrefHelper.buildEntityHref(context, fieldClassName, fieldId)) .build(); obj._persistence_setLinks(links); } } } }
/** * Remove a dynamic type from the system. * * This implementation assumes that the dynamic type has no relationships to * it and that it is not involved in an inheritance relationship. If there * are concurrent processes using this type when it is removed some * exceptions may occur. * * @param session * @param typeName */ public void removeType(String typeName) { DynamicType type = getType(typeName); if (type != null) { getSession().getIdentityMapAccessor().initializeIdentityMap(type.getJavaClass()); ClassDescriptor descriptor = type.getDescriptor(); getSession().getProject().getOrderedDescriptors().remove(descriptor); getSession().getProject().getDescriptors().remove(type.getJavaClass()); } }
/** * Remove a dynamic type from the system. * * This implementation assumes that the dynamic type has no relationships to * it and that it is not involved in an inheritance relationship. If there * are concurrent processes using this type when it is removed some * exceptions may occur. * * @param typeName */ public void removeType(String typeName) { DynamicType type = getType(typeName); if (type != null) { getSession().getIdentityMapAccessor().initializeIdentityMap(type.getJavaClass()); ClassDescriptor descriptor = type.getDescriptor(); fqClassnameToDescriptor.remove(descriptor.getJavaClassName()); getSession().getProject().getOrderedDescriptors().remove(descriptor); getSession().getProject().getDescriptors().remove(type.getJavaClass()); //bug 430318 - clear the parsed cache as queries in that cache could be using this descriptor getSession().getProject().getJPQLParseCache().clear(); ((AbstractSession)getSession()).getCommitManager().getCommitOrder().remove(type.getJavaClass()); } }
/** * Remove a dynamic type from the system. * * This implementation assumes that the dynamic type has no relationships to * it and that it is not involved in an inheritance relationship. If there * are concurrent processes using this type when it is removed some * exceptions may occur. * * @param typeName */ public void removeType(String typeName) { DynamicType type = getType(typeName); if (type != null) { getSession().getIdentityMapAccessor().initializeIdentityMap(type.getJavaClass()); ClassDescriptor descriptor = type.getDescriptor(); fqClassnameToDescriptor.remove(descriptor.getJavaClassName()); getSession().getProject().getOrderedDescriptors().remove(descriptor); getSession().getProject().getDescriptors().remove(type.getJavaClass()); //bug 430318 - clear the parsed cache as queries in that cache could be using this descriptor getSession().getProject().getJPQLParseCache().clear(); ((AbstractSession)getSession()).getCommitManager().getCommitOrder().remove(type.getJavaClass()); } }
/** * {@inheritDoc} */ @Override public Object buildSingleEntityResponse(PersistenceContext context, Map<String, Object> queryParams, Object result, UriInfo uriInfo) { if (result instanceof PersistenceWeavedRest) { final PersistenceWeavedRest entity = (PersistenceWeavedRest)result; final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(result.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); final ItemLinksBuilder itemLinksBuilder = (new ItemLinksBuilder()) .addSelf(uriInfo.getRequestUri().toString()) .addCanonical(HrefHelper.buildEntityHref(context, entityClassName, entityId)); generateLinksForRelationships(context, entity); entity._persistence_setLinks(itemLinksBuilder.build()); return entity; } return result; }
private void generateLinksInElementsList(PersistenceContext context, List<JAXBElement> fields) { for (JAXBElement field : fields) { if (field.getValue() instanceof PersistenceWeavedRest) { final PersistenceWeavedRest entity = (PersistenceWeavedRest) field.getValue(); final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(entity.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); // No links for embedded objects if (!classDescriptor.isAggregateDescriptor()) { final String href = HrefHelper.buildEntityHref(context, entityClassName, entityId); final ItemLinksBuilder itemLinksBuilder = (new ItemLinksBuilder()) .addSelf(href) .addCanonical(href); entity._persistence_setLinks(itemLinksBuilder.build()); } } } }
/** * {@inheritDoc} */ @Override public Object buildSingleEntityResponse(PersistenceContext context, Map<String, Object> queryParams, Object result, UriInfo uriInfo) { if (result instanceof PersistenceWeavedRest) { final PersistenceWeavedRest entity = (PersistenceWeavedRest)result; final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(result.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); final ItemLinksBuilder itemLinksBuilder = (new ItemLinksBuilder()) .addSelf(uriInfo.getRequestUri().toString()) .addCanonical(HrefHelper.buildEntityHref(context, entityClassName, entityId)); generateLinksForRelationships(context, entity); entity._persistence_setLinks(itemLinksBuilder.build()); return entity; } return result; }
private void generateLinksInElementsList(PersistenceContext context, List<JAXBElement> fields) { for (JAXBElement field : fields) { if (field.getValue() instanceof PersistenceWeavedRest) { final PersistenceWeavedRest entity = (PersistenceWeavedRest) field.getValue(); final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptor(entity.getClass()); final String entityClassName = classDescriptor.getAlias(); final String entityId = IdHelper.stringifyId(entity, entityClassName, context); // No links for embedded objects if (!classDescriptor.isAggregateDescriptor()) { final String href = HrefHelper.buildEntityHref(context, entityClassName, entityId); final ItemLinksBuilder itemLinksBuilder = (new ItemLinksBuilder()) .addSelf(href) .addCanonical(href); entity._persistence_setLinks(itemLinksBuilder.build()); } } } }
private void createNodeForEntity(final Object object, final Node node) { final ClassDescriptor classDescriptor = context.getServerSession().getProject().getDescriptors().get(object.getClass()); if (classDescriptor == null) { return; } node.addAttributeNode("_persistence_links"); for (final DatabaseMapping mapping : classDescriptor.getMappings()) { if (ForeignReferenceMapping.class.isAssignableFrom(mapping.getClass())) { final Node subNode = node.addSubNode(mapping.getAttributeName()); if (mapping.isCollectionMapping()) { // Add CollectionWrapper links and items properties subNode.addAttributeNode("links"); final Node itemsSubNode = subNode.addSubNode("items"); itemsSubNode.addAttributeNode("_persistence_links"); } else { // PersistenceWeavedRest._persistence_links subNode.addAttributeNode("_persistence_links"); } } else { node.addAttributeNode(mapping.getAttributeName()); } } }
private void setupDocumentPreservationPolicy(DatabaseSession session) { XMLLogin login = (XMLLogin) session.getDatasourceLogin(); if (login.getDocumentPreservationPolicy() == null) { Iterator iterator = session.getProject().getOrderedDescriptors().iterator(); while (iterator.hasNext()) { Descriptor xmlDescriptor = (Descriptor) iterator.next(); if (xmlDescriptor.shouldPreserveDocument()) { login.setDocumentPreservationPolicy(new DescriptorLevelDocumentPreservationPolicy()); break; } } } if (login.getDocumentPreservationPolicy() == null) { login.setDocumentPreservationPolicy(new NoDocumentPreservationPolicy()); } login.getDocumentPreservationPolicy().initialize(context); if (login.getDocumentPreservationPolicy().shouldPreserveDocument() && !hasDocumentPreservation) { hasDocumentPreservation = true; } }
public void setupDocumentPreservationPolicy(DatabaseSession session) { XMLLogin login = (XMLLogin) session.getDatasourceLogin(); if (login.getDocumentPreservationPolicy() == null) { Iterator iterator = session.getProject().getOrderedDescriptors().iterator(); while (iterator.hasNext()) { XMLDescriptor xmlDescriptor = (XMLDescriptor) iterator.next(); if (xmlDescriptor.shouldPreserveDocument()) { login.setDocumentPreservationPolicy(new DescriptorLevelDocumentPreservationPolicy()); break; } } } if (login.getDocumentPreservationPolicy() == null) { login.setDocumentPreservationPolicy(new NoDocumentPreservationPolicy()); } login.getDocumentPreservationPolicy().initialize(this); if (login.getDocumentPreservationPolicy().shouldPreserveDocument() && !hasDocumentPreservation) { hasDocumentPreservation = true; } }
private void setupDocumentPreservationPolicy(DatabaseSession session) { XMLLogin login = (XMLLogin) session.getDatasourceLogin(); if (login.getDocumentPreservationPolicy() == null) { Iterator iterator = session.getProject().getOrderedDescriptors().iterator(); while (iterator.hasNext()) { Descriptor xmlDescriptor = (Descriptor) iterator.next(); if (xmlDescriptor.shouldPreserveDocument()) { login.setDocumentPreservationPolicy(new DescriptorLevelDocumentPreservationPolicy()); break; } } } if (login.getDocumentPreservationPolicy() == null) { login.setDocumentPreservationPolicy(new NoDocumentPreservationPolicy()); } login.getDocumentPreservationPolicy().initialize(context); if (login.getDocumentPreservationPolicy().shouldPreserveDocument() && !hasDocumentPreservation) { hasDocumentPreservation = true; } }