private static String getValueAsString(String key, ClientEntity transport) { ClientProperty property = transport.getProperty(key); if(property == null) return null; ClientValue value = property.getValue(); if(value == null) return null; return value.toString(); }
private void queueDelete( final EntityInvocationHandler handler, final ClientEntity entity, final PersistenceChanges changeset) { final URI deleteURI = entity.getEditLink() == null ? handler.getEntityURI() : entity.getEditLink(); changeset.addChange(buildDeleteRequest(deleteURI, handler.getETag()), handler); }
public <ET extends EntityType<?>> boolean addRef(final ET element) { if (element instanceof Proxy && Proxy.getInvocationHandler(element) instanceof EntityInvocationHandler) { final EntityInvocationHandler handler = EntityInvocationHandler.class.cast(Proxy.getInvocationHandler(element)); final URI id = handler.getEntity().getId(); if (id == null) { return false; } return referenceItems.add(id.toASCIIString()); } return false; }
public static void addProperties( final EdmEnabledODataClient client, final Map<String, Object> changes, final ClientEntity entity) { for (Map.Entry<String, Object> entry : changes.entrySet()) { entity.getProperties() .add(getODataEntityProperty(client, entity.getTypeName(), entry.getKey(), entry.getValue())); } }
public static URI getMediaEditLink(final String name, final ClientEntity entity) { final ClientLink mediaEditLink = entity.getMediaEditLink(name); return mediaEditLink == null ? URIUtils.getURI(entity.getEditLink(), name) : mediaEditLink.getLink(); }
entity.setType(odataEntity.getTypeName() == null ? null : odataEntity.getTypeName().toString()); final URI odataEditLink = odataEntity.getEditLink(); if (odataEditLink != null) { final Link editLink = new Link(); if (odataEntity.isReadOnly()) { final Link selfLink = new Link(); selfLink.setTitle(entity.getType()); selfLink.setHref(odataEntity.getLink().toASCIIString()); selfLink.setRel(Constants.SELF_LINK_REL); entity.setSelfLink(selfLink); for (ClientLink link : odataEntity.getMediaEditLinks()) { LOG.debug("Append edit-media link\n{}", link); entity.getMediaEditLinks().add(getLink(link)); if (odataEntity.isMediaEntity()) { entity.setMediaContentSource(odataEntity.getMediaContentSource()); entity.setMediaContentType(odataEntity.getMediaContentType()); entity.setMediaETag(odataEntity.getMediaETag()); for (ClientProperty property : odataEntity.getProperties()) { entity.getProperties().add(getProperty(property)); entity.setId(odataEntity.getId()); annotations(odataEntity, entity); return entity;
entity.setETag(resource.getPayload().getETag()); entity.setEditLink(URIUtils.getURI(base, resource.getPayload().getEditLink().getHref())); entity.addLink(client.getObjectFactory(). newAssociationLink(link.getTitle(), URIUtils.getURI(base, link.getHref()))); entity.addLink(client.getObjectFactory().newMediaReadLink(link.getTitle(), URIUtils.getURI(base, link.getHref()), link.getType(), link.getMediaETag())); } else { entity.addLink(client.getObjectFactory().newMediaEditLink(link.getTitle(), URIUtils.getURI(base, link.getHref()), link.getType(), link.getMediaETag())); operation.setTitle(op.getTitle()); operation.setMetadataAnchor(op.getMetadataAnchor()); entity.getOperations().add(operation); entity.setMediaEntity(true); entity.setMediaContentSource(URIUtils.getURI(base, resource.getPayload().getMediaContentSource())); entity.setMediaContentType(resource.getPayload().getMediaContentType()); entity.setMediaETag(resource.getPayload().getMediaETag()); if (edmProperty instanceof EdmNavigationProperty && !property.isNull()) { final String propertyTypeName = propertyType.getFullQualifiedName().getFullQualifiedNameAsString(); entity.addLink(createLinkFromNavigationProperty(property, propertyTypeName, countMap.remove(property.getName()))); continue; edmProperty = ((EdmEntityType) edmType).getProperty(navigationName);
entity.getNavigationLinks().clear(); entity.getProperties().clear(); CoreUtils.addProperties(service.getClient(), handler.getPropertyChanges(), entity); entity.getAnnotations().clear(); CoreUtils.addAnnotations(service.getClient(), handler.getAnnotations(), entity); entry.getValue().getAnnotations(), entity.getProperty(entry.getKey())); final URI editLink = target.getEntity().getEditLink(); entity.addLink(buildNavigationLink( property.getKey().name(), URIUtils.getURI(service.getClient().getServiceRoot(), editLink.toASCIIString()), type)); } else if (status == AttachedEntityStatus.CHANGED) { LOG.debug("Changed: '{}' from '{}' to (${}) '{}'", type.name(), handler, targetPos, target); entity.addLink(buildNavigationLink( property.getKey().name(), URIUtils.getURI(service.getClient().getServiceRoot(), editLink.toASCIIString()), type)); entity.addLink(buildNavigationLink(property.getKey().name(), URI.create("$" + targetPos), type)); entity.getNavigationLink(entry.getKey())); if (handler.getEntity().isMediaEntity() && handler.isChanged()) { ? URI.create("$" + startingPos)
private EntityInvocationHandler( final Object entityKey, final ClientEntity entity, final URI entitySetURI, final Class<?> typeRef, final AbstractService<?> service) { super(typeRef, entity, service); final Object key = entityKey == null ? CoreUtils.getKey(getClient(), this, typeRef, entity) : entityKey; if (entity.getEditLink() != null) { this.baseURI = entity.getEditLink(); this.uri = getClient().newURIBuilder(baseURI.toASCIIString()); } else if (key != null) { final URIBuilder uriBuilder = CoreUtils.buildEditLink(getClient(), entitySetURI.toASCIIString(), key); this.uri = uriBuilder; this.baseURI = this.uri.build(); entity.setEditLink(this.baseURI); } else { this.baseURI = null; this.uri = null; } this.internal = entity; getEntity().setMediaEntity(typeRef.getAnnotation(EntityType.class).hasStream()); this.uuid = new EntityUUID(entitySetURI, typeRef, key); }
service.getClient().getObjectFactory().newEntity(delayedUpdate.getSource().getEntity().getTypeName()); sourceURI = URIUtils.getURI( service.getClient().getServiceRoot(), delayedUpdate.getSource().getEntity().getEditLink().toASCIIString()); } else { int sourcePos = items.get(delayedUpdate.getSource()); if (status == AttachedEntityStatus.CHANGED) { targetURI = URIUtils.getURI( service.getClient().getServiceRoot(), target.getEntity().getEditLink().toASCIIString()); } else { int targetPos = items.get(target); changes.addLink(delayedUpdate.getType() == ClientLinkType.ENTITY_NAVIGATION ? service.getClient().getObjectFactory(). newEntityNavigationLink(delayedUpdate.getSourceName(), targetURI) URI sourceURI = URIUtils.getURI( service.getClient().getServiceRoot(), delayedUpdate.getSource().getEntity().getEditLink().toASCIIString() + "/" + delayedUpdate.getSourceName() + "/$ref");
private List<ClientAnnotation> internalAnnotations() { List<ClientAnnotation> result = Collections.<ClientAnnotation> emptyList(); if (targetHandler.getInternal() instanceof ClientEntity) { result = propName == null ? ((ClientEntity) targetHandler.getInternal()).getNavigationLink(navPropName).getAnnotations() : ((ClientEntity) targetHandler.getInternal()).getProperty(propName).getAnnotations(); } else if (targetHandler.getInternal() instanceof ClientComplexValue) { result = propName == null ? ((ClientComplexValue) targetHandler.getInternal()).getNavigationLink(navPropName).getAnnotations() : ((ClientComplexValue) targetHandler.getInternal()).get(propName).getAnnotations(); } return result; }
public static Object getKey( final EdmEnabledODataClient client, final EntityInvocationHandler typeHandler, final Class<?> entityTypeRef, final ClientEntity entity) { Object res = null; if (!entity.getProperties().isEmpty()) { final Class<?> keyRef = ClassUtils.getCompoundKeyRef(entityTypeRef); if (keyRef == null) { final ClientProperty property = entity.getProperty(firstValidEntityKey(entityTypeRef)); if (property != null && property.hasPrimitiveValue()) { res = primitiveValueToObject( property.getPrimitiveValue(), getPropertyClass(entityTypeRef, property.getName())); } } else { try { res = keyRef.newInstance(); populate(client, typeHandler, res, CompoundKeyElement.class, entity.getProperties().iterator()); } catch (Exception e) { LOG.error("Error population compound key {}", keyRef.getSimpleName(), e); throw new IllegalArgumentException("Cannot populate compound key"); } } } return res; }
public EdmStreamValue loadStream() { final URI contentSource = getEntity().getMediaContentSource() == null ? getClient().newURIBuilder(baseURI.toASCIIString()).appendValueSegment().build() : getEntity().getMediaContentSource(); if (this.stream == null && typeRef.getAnnotation(EntityType.class).hasStream() && contentSource != null) { final ODataMediaRequest retrieveReq = getClient().getRetrieveRequestFactory().getMediaEntityRequest(contentSource); if (StringUtils.isNotBlank(getEntity().getMediaContentType())) { retrieveReq.setFormat(ContentType.parse(getEntity().getMediaContentType())); } final ODataRetrieveResponse<InputStream> res = retrieveReq.execute(); this.stream = EdmStreamValue.class.cast(Proxy.newProxyInstance( Thread.currentThread().getContextClassLoader(), new Class<?>[] { EdmStreamValue.class }, new EdmStreamValueHandler(res.getContentType(), res.getBody(), contentSource, service))); } return this.stream; }
public void setEntity(final ClientEntity entity) { this.internal = entity; getEntity().setMediaEntity(typeRef.getAnnotation(EntityType.class).hasStream()); final Object key = CoreUtils.getKey(getClient(), this, typeRef, entity); this.uuid = new EntityUUID(getUUID().getEntitySetURI(), getUUID().getType(), key); // fix for OLINGO-353 if (this.uri == null) { final URIBuilder uriBuilder = entity.getEditLink() == null ? CoreUtils.buildEditLink(getClient(), getUUID().getEntitySetURI().toASCIIString(), key) : getClient().newURIBuilder(entity.getEditLink().toASCIIString()); this.uri = uriBuilder; this.baseURI = this.uri == null ? null : this.uri.build(); } this.streamedPropertyChanges.clear(); this.streamedPropertyCache.clear(); this.propertyChanges.clear(); this.propertyCache.clear(); this.linkChanges.clear(); this.linkCache.clear(); this.annotations.clear(); }
final URI entityURI = EntityInvocationHandler.class.cast(target).getEntityURI(); ClientOperation boundOp = entity.getOperation(operation.name()); if (boundOp == null) { boundOp = entity.getOperation(new FullQualifiedName(targetFQN.getNamespace(), operation.name()).toString()); EdmEntityType entityType = getClient().getCachedEdm().getEntityType(entity.getTypeName()); EdmEntityType baseType = entityType; while (boundOp == null && baseType != null) { operation.name(), entity.getTypeName())); operation.name(), entity.getTypeName()));
private OperationInvocationHandler(final EntityInvocationHandler entityHandler) { super(entityHandler.service); this.target = entityHandler; this.targetFQN = entityHandler.getEntity().getTypeName(); }
@Override public boolean add(final ClientEntity entity, final ClientProperty property) { return entity.getProperties().add(property); }
entity.setType(odataEntity.getTypeName() == null ? null : odataEntity.getTypeName().toString()); final URI odataEditLink = odataEntity.getEditLink(); if (odataEditLink != null) { final Link editLink = new Link(); if (odataEntity.isReadOnly()) { final Link selfLink = new Link(); selfLink.setTitle(entity.getType()); selfLink.setHref(odataEntity.getLink().toASCIIString()); selfLink.setRel(Constants.SELF_LINK_REL); entity.setSelfLink(selfLink); for (ClientLink link : odataEntity.getMediaEditLinks()) { LOG.debug("Append edit-media link\n{}", link); entity.getMediaEditLinks().add(getLink(link)); if (odataEntity.isMediaEntity()) { entity.setMediaContentSource(odataEntity.getMediaContentSource()); entity.setMediaContentType(odataEntity.getMediaContentType()); entity.setMediaETag(odataEntity.getMediaETag()); for (ClientProperty property : odataEntity.getProperties()) { entity.getProperties().add(getProperty(property)); entity.setId(odataEntity.getId()); annotations(odataEntity, entity); return entity;
entity.setETag(resource.getPayload().getETag()); entity.setEditLink(URIUtils.getURI(base, resource.getPayload().getEditLink().getHref())); entity.addLink(client.getObjectFactory(). newAssociationLink(link.getTitle(), URIUtils.getURI(base, link.getHref()))); entity.addLink(client.getObjectFactory().newMediaReadLink(link.getTitle(), URIUtils.getURI(base, link.getHref()), link.getType(), link.getMediaETag())); } else { entity.addLink(client.getObjectFactory().newMediaEditLink(link.getTitle(), URIUtils.getURI(base, link.getHref()), link.getType(), link.getMediaETag())); operation.setTitle(op.getTitle()); operation.setMetadataAnchor(op.getMetadataAnchor()); entity.getOperations().add(operation); entity.setMediaEntity(true); entity.setMediaContentSource(URIUtils.getURI(base, resource.getPayload().getMediaContentSource())); entity.setMediaContentType(resource.getPayload().getMediaContentType()); entity.setMediaETag(resource.getPayload().getMediaETag()); if (edmProperty instanceof EdmNavigationProperty && !property.isNull()) { final String propertyTypeName = propertyType.getFullQualifiedName().getFullQualifiedNameAsString(); entity.addLink(createLinkFromNavigationProperty(property, propertyTypeName, countMap.remove(property.getName()))); continue; edmProperty = ((EdmEntityType) edmType).getProperty(navigationName);
entity.getNavigationLinks().clear(); entity.getProperties().clear(); CoreUtils.addProperties(service.getClient(), handler.getPropertyChanges(), entity); entity.getAnnotations().clear(); CoreUtils.addAnnotations(service.getClient(), handler.getAnnotations(), entity); entry.getValue().getAnnotations(), entity.getProperty(entry.getKey())); final URI editLink = target.getEntity().getEditLink(); entity.addLink(buildNavigationLink( property.getKey().name(), URIUtils.getURI(service.getClient().getServiceRoot(), editLink.toASCIIString()), type)); } else if (status == AttachedEntityStatus.CHANGED) { LOG.debug("Changed: '{}' from '{}' to (${}) '{}'", type.name(), handler, targetPos, target); entity.addLink(buildNavigationLink( property.getKey().name(), URIUtils.getURI(service.getClient().getServiceRoot(), editLink.toASCIIString()), type)); entity.addLink(buildNavigationLink(property.getKey().name(), URI.create("$" + targetPos), type)); entity.getNavigationLink(entry.getKey())); if (handler.getEntity().isMediaEntity() && handler.isChanged()) { ? URI.create("$" + startingPos)