@Override public List<KeyPredicate> getKeyFromEntityLink(final EdmEntitySet entitySet, final String entityLink, final URI serviceRoot) throws ODataException { final String relativeLink = serviceRoot == null ? entityLink : entityLink.startsWith(serviceRoot.toString()) ? entityLink.substring(serviceRoot.toString().length()) : entityLink; final Matcher matcher = INITIAL_SEGMENT_PATTERN.matcher(relativeLink); if (!matcher.matches()) { throw new UriNotMatchingException(UriNotMatchingException.MATCHPROBLEM.addContent(relativeLink)); } final String entityContainerName = percentDecode(matcher.group(1)); if (entityContainerName == null && !entitySet.getEntityContainer().isDefaultEntityContainer() || entityContainerName != null && !entityContainerName.equals(entitySet.getEntityContainer().getName())) { throw new UriNotMatchingException(UriNotMatchingException.CONTAINERNOTFOUND.addContent(entityContainerName)); } final String entitySetName = percentDecode(matcher.group(2)); if (!entitySetName.equals(entitySet.getName())) { throw new UriNotMatchingException(UriNotMatchingException.NOTFOUND.addContent(entitySetName)); } final String keyPredicate = matcher.group(3); if (keyPredicate == null) { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySetName)); } return parseKey(keyPredicate, entitySet.getEntityType()); }
@Override public List<KeyPredicate> getKeyFromEntityLink(final EdmEntitySet entitySet, final String entityLink, final URI serviceRoot) throws ODataException { final String relativeLink = serviceRoot == null ? entityLink : entityLink.startsWith(serviceRoot.toString()) ? entityLink.substring(serviceRoot.toString().length()) : entityLink; final Matcher matcher = INITIAL_SEGMENT_PATTERN.matcher(relativeLink); if (!matcher.matches()) { throw new UriNotMatchingException(UriNotMatchingException.MATCHPROBLEM.addContent(relativeLink)); } final String entityContainerName = percentDecode(matcher.group(1)); if (entityContainerName == null && !entitySet.getEntityContainer().isDefaultEntityContainer() || entityContainerName != null && !entityContainerName.equals(entitySet.getEntityContainer().getName())) { throw new UriNotMatchingException(UriNotMatchingException.CONTAINERNOTFOUND.addContent(entityContainerName)); } final String entitySetName = percentDecode(matcher.group(2)); if (!entitySetName.equals(entitySet.getName())) { throw new UriNotMatchingException(UriNotMatchingException.NOTFOUND.addContent(entitySetName)); } final String keyPredicate = matcher.group(3); if (keyPredicate == null) { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySetName)); } return parseKey(keyPredicate, entitySet.getEntityType()); } }
@Override public List<KeyPredicate> getKeyFromEntityLink(final EdmEntitySet entitySet, final String entityLink, final URI serviceRoot) throws ODataException { final String relativeLink = serviceRoot == null ? entityLink : entityLink.startsWith(serviceRoot.toString()) ? entityLink.substring(serviceRoot.toString().length()) : entityLink; final Matcher matcher = INITIAL_SEGMENT_PATTERN.matcher(relativeLink); if (!matcher.matches()) { throw new UriNotMatchingException(UriNotMatchingException.MATCHPROBLEM.addContent(relativeLink)); } final String entityContainerName = percentDecode(matcher.group(1)); if (entityContainerName == null && !entitySet.getEntityContainer().isDefaultEntityContainer() || entityContainerName != null && !entityContainerName.equals(entitySet.getEntityContainer().getName())) { throw new UriNotMatchingException(UriNotMatchingException.CONTAINERNOTFOUND.addContent(entityContainerName)); } final String entitySetName = percentDecode(matcher.group(2)); if (!entitySetName.equals(entitySet.getName())) { throw new UriNotMatchingException(UriNotMatchingException.NOTFOUND.addContent(entitySetName)); } final String keyPredicate = matcher.group(3); if (keyPredicate == null) { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySetName)); } return parseKey(keyPredicate, entitySet.getEntityType()); } }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
private void handleEntitySet(final EdmEntitySet entitySet, final String keyPredicate) throws UriSyntaxException, UriNotMatchingException, EdmException { final EdmEntityType entityType = entitySet.getEntityType(); uriResult.setTargetType(entityType); uriResult.setTargetEntitySet(entitySet); if (keyPredicate == null) { if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI1); } else { currentPathSegment = pathSegments.remove(0); checkCount(); if (uriResult.isCount()) { uriResult.setUriType(UriType.URI15); } else { throw new UriSyntaxException(UriSyntaxException.ENTITYSETINSTEADOFENTITY.addContent(entitySet.getName())); } } } else { uriResult.setKeyPredicates(parseKey(keyPredicate, entityType)); if (pathSegments.isEmpty()) { uriResult.setUriType(UriType.URI2); } else { handleNavigationPathOptions(); } } }
private void addNavigationSegment(final String keyPredicateName, final EdmNavigationProperty navigationProperty) throws UriSyntaxException, EdmException { final EdmEntitySet targetEntitySet = uriResult.getTargetEntitySet().getRelatedEntitySet(navigationProperty); final EdmEntityType targetEntityType = targetEntitySet.getEntityType(); uriResult.setTargetEntitySet(targetEntitySet); uriResult.setTargetType(targetEntityType); NavigationSegmentImpl navigationSegment = new NavigationSegmentImpl(); navigationSegment.setEntitySet(targetEntitySet); navigationSegment.setNavigationProperty(navigationProperty); if (keyPredicateName != null) { navigationSegment.setKeyPredicates(parseKey(keyPredicateName, targetEntityType)); } uriResult.addNavigationSegment(navigationSegment); }
private void addNavigationSegment(final String keyPredicateName, final EdmNavigationProperty navigationProperty) throws UriSyntaxException, EdmException { final EdmEntitySet targetEntitySet = uriResult.getTargetEntitySet().getRelatedEntitySet(navigationProperty); final EdmEntityType targetEntityType = targetEntitySet.getEntityType(); uriResult.setTargetEntitySet(targetEntitySet); uriResult.setTargetType(targetEntityType); NavigationSegmentImpl navigationSegment = new NavigationSegmentImpl(); navigationSegment.setEntitySet(targetEntitySet); navigationSegment.setNavigationProperty(navigationProperty); if (keyPredicateName != null) { navigationSegment.setKeyPredicates(parseKey(keyPredicateName, targetEntityType)); } uriResult.addNavigationSegment(navigationSegment); }
private void addNavigationSegment(final String keyPredicateName, final EdmNavigationProperty navigationProperty) throws UriSyntaxException, EdmException { final EdmEntitySet targetEntitySet = uriResult.getTargetEntitySet().getRelatedEntitySet(navigationProperty); final EdmEntityType targetEntityType = targetEntitySet.getEntityType(); uriResult.setTargetEntitySet(targetEntitySet); uriResult.setTargetType(targetEntityType); NavigationSegmentImpl navigationSegment = new NavigationSegmentImpl(); navigationSegment.setEntitySet(targetEntitySet); navigationSegment.setNavigationProperty(navigationProperty); if (keyPredicateName != null) { navigationSegment.setKeyPredicates(parseKey(keyPredicateName, targetEntityType)); } uriResult.addNavigationSegment(navigationSegment); }