com.orange.ngsi.server.NgsiValidation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ngsi-server Show documentation
Show all versions of ngsi-server Show documentation
NGSI v1 API server and client library
/*
* Copyright (C) 2015 Orange
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.orange.ngsi.server;
import com.orange.ngsi.exception.MismatchIdException;
import com.orange.ngsi.exception.MissingRequestParameterException;
import com.orange.ngsi.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.net.URI;
import java.util.List;
/**
* Created by pborscia on 07/08/2015.
*/
@Component
public class NgsiValidation {
private static Logger logger = LoggerFactory.getLogger(NgsiValidation.class);
public void checkUpdateContext(UpdateContext updateContext) throws MissingRequestParameterException {
if (updateContext.getUpdateAction() == null) {
throw new MissingRequestParameterException("updateAction", "string");
}
if (nullOrEmpty(updateContext.getContextElements())) {
throw new MissingRequestParameterException("contextElements", "List");
}
for (ContextElement contextElement : updateContext.getContextElements()) {
checkContextElement(contextElement);
}
}
public void checkNotifyContext(NotifyContext notifyContext) throws MissingRequestParameterException {
if (nullOrEmpty(notifyContext.getSubscriptionId())) {
throw new MissingRequestParameterException("subscriptionId", "string");
}
if (nullOrEmpty(notifyContext.getOriginator())){
throw new MissingRequestParameterException("originator", "URI");
}
if (nullOrEmpty(notifyContext.getContextElementResponseList())) {
throw new MissingRequestParameterException("contextElementResponse", "List");
}
for (ContextElementResponse contextElementResponse : notifyContext.getContextElementResponseList()) {
checkContextElementResponse(contextElementResponse);
}
}
public void checkRegisterContext(RegisterContext registerContext) throws MissingRequestParameterException {
if (nullOrEmpty(registerContext.getContextRegistrationList())) {
throw new MissingRequestParameterException("contextRegistrations", "List");
}
for (ContextRegistration contextRegistration : registerContext.getContextRegistrationList()) {
checkContextRegistration(contextRegistration);
}
}
public void checkSubscribeContext(SubscribeContext subscribeContext) throws MissingRequestParameterException {
if (nullOrEmpty(subscribeContext.getEntityIdList())) {
throw new MissingRequestParameterException("entities", "List");
}
for(EntityId entityId: subscribeContext.getEntityIdList()) {
checkEntityId(entityId);
}
if (nullOrEmpty(subscribeContext.getReference())){
throw new MissingRequestParameterException("reference", "URI");
}
if (subscribeContext.getRestriction() != null) {
if (nullOrEmpty(subscribeContext.getRestriction().getAttributeExpression())
&& nullOrEmpty(subscribeContext.getRestriction().getScopes())) {
throw new MissingRequestParameterException("attributeExpression or scopes", "string");
}
}
}
public void checkUpdateContextSubscription(UpdateContextSubscription updateContextSubscription) throws MissingRequestParameterException {
if (nullOrEmpty(updateContextSubscription.getSubscriptionId())){
throw new MissingRequestParameterException("subscriptionId", "String");
}
if (updateContextSubscription.getRestriction() != null) {
if (nullOrEmpty(updateContextSubscription.getRestriction().getAttributeExpression())
&& nullOrEmpty(updateContextSubscription.getRestriction().getScopes())) {
throw new MissingRequestParameterException("attributeExpression or scopes", "string");
}
}
}
public void checkUnsubscribeContext(UnsubscribeContext unsubscribeContext) throws MissingRequestParameterException {
if (nullOrEmpty(unsubscribeContext.getSubscriptionId())){
throw new MissingRequestParameterException("subscriptionId", "String");
}
}
public void checkQueryContext(QueryContext queryContext) throws MissingRequestParameterException {
if (nullOrEmpty(queryContext.getEntityIdList())) {
throw new MissingRequestParameterException("entities", "List");
}
for(EntityId entityId : queryContext.getEntityIdList()) {
checkEntityId(entityId);
}
if (queryContext.getRestriction() != null) {
if (nullOrEmpty(queryContext.getRestriction().getAttributeExpression())) {
throw new MissingRequestParameterException("attributeExpression", "string");
}
}
}
public void checkAppendContextElement(AppendContextElement appendContextElement) throws MissingRequestParameterException {
if (nullOrEmpty(appendContextElement.getAttributeList())) {
throw new MissingRequestParameterException("contextAttributes", "List");
}
}
public void checkUpdateContextElement(UpdateContextElement updateContextElement) throws MissingRequestParameterException {
if (nullOrEmpty(updateContextElement.getContextAttributes())) {
throw new MissingRequestParameterException("contextAttributes", "List");
}
}
public void checkUpdateContextAttribute(String entityID, String attributeName, String valueID, UpdateContextAttribute updateContextAttribute)
throws MissingRequestParameterException, MismatchIdException {
if (nullOrEmpty(entityID)) {
throw new MissingRequestParameterException("entityID", "string");
}
if (nullOrEmpty(attributeName)) {
throw new MissingRequestParameterException("attributeName", "string");
}
if (updateContextAttribute == null || updateContextAttribute.getAttribute() == null) {
throw new MissingRequestParameterException("attribute", "ContextAttribute");
}
// Check attribute name matching
if (!attributeName.equals(updateContextAttribute.getAttribute().getName())) {
throw new MismatchIdException(attributeName, updateContextAttribute.getAttribute().getName());
}
// Check optional valueID matching
if (valueID != null) {
if (nullOrEmpty(valueID)) { // tests just emptiness
throw new MissingRequestParameterException("valueID", "string");
}
if (updateContextAttribute.getAttribute().getMetadata() == null) {
throw new MissingRequestParameterException("metadata", "Metadata");
}
// Check Metadata ID exists and equals valueID
for (ContextMetadata metadata : updateContextAttribute.getAttribute().getMetadata()) {
if ("ID".equals(metadata.getName())) {
if (valueID.equals(metadata.getValue())) {
return; // ! \\ Early return !
}
throw new MismatchIdException(valueID, String.valueOf(metadata.getValue()));
}
}
throw new MissingRequestParameterException("ID", "Metadata ID");
}
}
public void checkUpdateSubscription(String subscriptionID, UpdateContextSubscription updateContextSubscription) throws MissingRequestParameterException, MismatchIdException {
checkUpdateContextSubscription(updateContextSubscription);
// Check that subscriptionID parameter is equal to the one given in the message body
if (!subscriptionID.equals(updateContextSubscription.getSubscriptionId())) {
throw new MismatchIdException(subscriptionID, updateContextSubscription.getSubscriptionId());
}
}
private void checkContextElementResponse(ContextElementResponse contextElementResponse) throws MissingRequestParameterException {
if (contextElementResponse.getStatusCode() == null) {
throw new MissingRequestParameterException("statusCode", "StatusCode");
}
if (contextElementResponse.getContextElement() == null) {
throw new MissingRequestParameterException("contextElement", "ContextElement");
}
checkContextElement(contextElementResponse.getContextElement());
}
private void checkContextElement(ContextElement contextElement) throws MissingRequestParameterException {
if (contextElement.getEntityId() == null) {
throw new MissingRequestParameterException("entityId", "EntityId");
}
checkEntityId(contextElement.getEntityId());
if (nullOrEmpty(contextElement.getContextAttributeList())) {
throw new MissingRequestParameterException("contextAttributes", "List");
}
}
private void checkEntityId(EntityId entityId) throws MissingRequestParameterException {
if (nullOrEmpty(entityId.getId())) {
throw new MissingRequestParameterException("id", "string");
}
if (nullOrEmpty(entityId.getType())) {
throw new MissingRequestParameterException("type", "string");
}
if (entityId.getIsPattern() == null) {
entityId.setIsPattern(false);
}
}
private void checkContextRegistration(ContextRegistration contextRegistration) throws MissingRequestParameterException {
if (nullOrEmpty(contextRegistration.getProvidingApplication())){
throw new MissingRequestParameterException("providingApplication", "URI");
}
if (contextRegistration.getEntityIdList() != null) {
for(EntityId entityId: contextRegistration.getEntityIdList()) {
checkEntityId(entityId);
}
}
if (contextRegistration.getContextRegistrationAttributeList() != null) {
for(ContextRegistrationAttribute attribute: contextRegistration.getContextRegistrationAttributeList()) {
checkContextRegistrationAttribute(attribute);
}
}
}
private void checkContextRegistrationAttribute(ContextRegistrationAttribute attribute) throws MissingRequestParameterException {
if ((attribute.getName() == null) || (attribute.getName().isEmpty())) {
throw new MissingRequestParameterException("name", "string");
}
if (attribute.getIsDomain() == null) {
throw new MissingRequestParameterException("isDomain", "boolean");
}
}
private static boolean nullOrEmpty(URI e) {
return e == null || e.toString().isEmpty();
}
private static boolean nullOrEmpty(String e) {
return e == null || e.isEmpty();
}
private static boolean nullOrEmpty(List e) {
return e == null || e.isEmpty();
}
}