Author: tcunning
Date: Wed Dec 22 18:06:31 2010
New Revision: 1052016
URL: http://svn.apache.org/viewvc?rev=1052016&view=rev
Log:
JUDDI-432
If we get no results back, and if the businessKey/serviceKey is not null,
then check to see if the businessKey/serviceKey actually exists. If it
doesn't, throw an E_InvalidKeyPassed (spelled out in sections 5.1.12.4
and 5.1.9.4).
Changes here were made to FindBinding and FindService.
Modified:
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
Modified:
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java?rev=1052016&r1=1052015&r2=1052016&view=diff
==============================================================================
---
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
(original)
+++
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
Wed Dec 22 18:06:31 2010
@@ -1,12 +1,12 @@
/*
* Copyright 2001-2008 The Apache Software Foundation.
- *
+ *
* 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.
@@ -18,20 +18,21 @@
package org.apache.juddi.api.impl;
import java.util.List;
+
import javax.jws.WebService;
-import javax.persistence.EntityTransaction;
import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.config.Property;
import org.apache.juddi.mapping.MappingModelToApi;
import org.apache.juddi.v3.error.ErrorMessage;
import org.apache.juddi.v3.error.InvalidKeyPassedException;
import org.apache.juddi.validation.ValidateInquiry;
-import org.apache.juddi.config.AppConfig;
-import org.apache.juddi.config.PersistenceManager;
-import org.apache.juddi.config.Property;
import org.uddi.api_v3.BindingDetail;
import org.uddi.api_v3.BusinessDetail;
import org.uddi.api_v3.BusinessList;
@@ -58,33 +59,46 @@ import org.uddi.v3_service.UDDIInquiryPo
/**
* @author <a href="mailto:[email protected]">Jeff Faath</a>
*/
-...@webservice(serviceName="UDDIInquiryService",
+...@webservice(serviceName="UDDIInquiryService",
endpointInterface="org.uddi.v3_service.UDDIInquiryPortType",
targetNamespace = "urn:uddi-org:v3_service")
public class UDDIInquiryImpl extends AuthenticatedService implements
UDDIInquiryPortType {
private static Log log = LogFactory.getLog(UDDIInquiryImpl.class);
- public BindingDetail findBinding(FindBinding body)
+ @Override
+ public BindingDetail findBinding(FindBinding body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindBinding(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
org.apache.juddi.query.util.FindQualifiers
findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
findQualifiers.mapApiFindQualifiers(body.getFindQualifiers());
-
+
List<?> keysFound = InquiryHelper.findBinding(body,
findQualifiers, em);
-
+
+ if (keysFound.size() == 0) {
+ if (body.getServiceKey() != null) {
+ // Check that we were passed a valid serviceKey
per
+ // 5.1.12.4 of the UDDI v3 spec
+ String serviceKey = body.getServiceKey();
+ org.apache.juddi.model.BusinessService
modelBusinessService = em.find(org.apache.juddi.model.BusinessService.class,
serviceKey);
+ if (modelBusinessService == null)
+ throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.ServiceNotFound", serviceKey));
+
+ }
+ }
BindingDetail result =
InquiryHelper.getBindingDetailFromKeys(body, findQualifiers, em, keysFound);
tx.commit();
+
return result;
} finally {
if (tx.isActive()) {
@@ -94,26 +108,27 @@ public class UDDIInquiryImpl extends Aut
}
}
- public BusinessList findBusiness(FindBusiness body)
+ @Override
+ public BusinessList findBusiness(FindBusiness body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindBusiness(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
org.apache.juddi.query.util.FindQualifiers
findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
findQualifiers.mapApiFindQualifiers(body.getFindQualifiers());
-
+
List<?> keysFound = InquiryHelper.findBusiness(body,
findQualifiers, em);
-
+
BusinessList result =
InquiryHelper.getBusinessListFromKeys(body, findQualifiers, em, keysFound);
-
+
tx.commit();
return result;
} finally {
@@ -124,26 +139,27 @@ public class UDDIInquiryImpl extends Aut
}
}
- public RelatedBusinessesList
findRelatedBusinesses(FindRelatedBusinesses body)
+ @Override
+ public RelatedBusinessesList findRelatedBusinesses(FindRelatedBusinesses
body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindRelatedBusinesses(body,
false);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
// TODO: findQualifiers aren't really used for this
call, except maybe for sorting. Sorting must be done in Java due to the
retrieval method used. Right now
// no sorting is performed.
org.apache.juddi.query.util.FindQualifiers
findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
findQualifiers.mapApiFindQualifiers(body.getFindQualifiers());
-
+
RelatedBusinessesList result =
InquiryHelper.getRelatedBusinessesList(body, em);
-
+
tx.commit();
return result;
} finally {
@@ -154,26 +170,39 @@ public class UDDIInquiryImpl extends Aut
}
}
- public ServiceList findService(FindService body)
+ @Override
+ public ServiceList findService(FindService body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindService(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
org.apache.juddi.query.util.FindQualifiers
findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
findQualifiers.mapApiFindQualifiers(body.getFindQualifiers());
-
+
List<?> keysFound = InquiryHelper.findService(body,
findQualifiers, em);
-
+
+ if (keysFound.size() == 0) {
+ if (body.getBusinessKey() != null) {
+ // Check that we were passed a valid serviceKey
per
+ // 5.1.12.4 of the UDDI v3 spec
+ String businessKey = body.getBusinessKey();
+ org.apache.juddi.model.BusinessEntity
modelBusinessEntity = em.find(org.apache.juddi.model.BusinessEntity.class,
businessKey);
+ if (modelBusinessEntity == null) {
+ throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.ServiceNotFound", businessKey));
+ }
+ }
+ }
+
ServiceList result =
InquiryHelper.getServiceListFromKeys(body, findQualifiers, em, keysFound);
-
+
tx.commit();
return result;
} finally {
@@ -184,26 +213,27 @@ public class UDDIInquiryImpl extends Aut
}
}
- public TModelList findTModel(FindTModel body)
+ @Override
+ public TModelList findTModel(FindTModel body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindTModel(body, false);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
org.apache.juddi.query.util.FindQualifiers
findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
findQualifiers.mapApiFindQualifiers(body.getFindQualifiers());
-
+
List<?> keysFound = InquiryHelper.findTModel(body,
findQualifiers, em);
-
+
TModelList result =
InquiryHelper.getTModelListFromKeys(body, findQualifiers, em, keysFound);
-
+
tx.commit();
return result;
} finally {
@@ -214,35 +244,36 @@ public class UDDIInquiryImpl extends Aut
}
}
- public BindingDetail getBindingDetail(GetBindingDetail body)
+ @Override
+ public BindingDetail getBindingDetail(GetBindingDetail body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetBindingDetail(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
BindingDetail result = new BindingDetail();
-
+
List<String> bindingKeyList = body.getBindingKey();
for (String bindingKey : bindingKeyList) {
-
+
org.apache.juddi.model.BindingTemplate
modelBindingTemplate = em.find(org.apache.juddi.model.BindingTemplate.class,
bindingKey);
if (modelBindingTemplate == null)
throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.BindingTemplateNotFound", bindingKey));
-
+
org.uddi.api_v3.BindingTemplate
apiBindingTemplate = new org.uddi.api_v3.BindingTemplate();
-
+
MappingModelToApi.mapBindingTemplate(modelBindingTemplate, apiBindingTemplate);
-
+
result.getBindingTemplate().add(apiBindingTemplate);
}
-
+
tx.commit();
return result;
} finally {
@@ -253,35 +284,36 @@ public class UDDIInquiryImpl extends Aut
}
}
- public BusinessDetail getBusinessDetail(GetBusinessDetail body)
+ @Override
+ public BusinessDetail getBusinessDetail(GetBusinessDetail body)
throws DispositionReportFaultMessage {
-
+
new ValidateInquiry(null).validateGetBusinessDetail(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
BusinessDetail result = new BusinessDetail();
-
+
List<String> businessKeyList = body.getBusinessKey();
for (String businessKey : businessKeyList) {
-
+
org.apache.juddi.model.BusinessEntity
modelBusinessEntity = em.find(org.apache.juddi.model.BusinessEntity.class,
businessKey);
if (modelBusinessEntity == null)
throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.BusinessNotFound", businessKey));
-
+
org.uddi.api_v3.BusinessEntity
apiBusinessEntity = new org.uddi.api_v3.BusinessEntity();
-
+
MappingModelToApi.mapBusinessEntity(modelBusinessEntity, apiBusinessEntity);
-
+
result.getBusinessEntity().add(apiBusinessEntity);
}
-
+
tx.commit();
return result;
} finally {
@@ -292,7 +324,8 @@ public class UDDIInquiryImpl extends Aut
}
}
- public OperationalInfos getOperationalInfo(GetOperationalInfo body)
+ @Override
+ public OperationalInfos getOperationalInfo(GetOperationalInfo body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetOperationalInfo(body);
@@ -301,26 +334,26 @@ public class UDDIInquiryImpl extends Aut
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
OperationalInfos result = new OperationalInfos();
-
+
List<String> entityKeyList = body.getEntityKey();
for (String entityKey : entityKeyList) {
-
+
org.apache.juddi.model.UddiEntity
modelUddiEntity = em.find(org.apache.juddi.model.UddiEntity.class, entityKey);
if (modelUddiEntity == null)
throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.EntityNotFound", entityKey));
-
+
org.uddi.api_v3.OperationalInfo
apiOperationalInfo = new org.uddi.api_v3.OperationalInfo();
-
+
MappingModelToApi.mapOperationalInfo(modelUddiEntity, apiOperationalInfo);
-
+
result.getOperationalInfo().add(apiOperationalInfo);
}
-
+
tx.commit();
return result;
} finally {
@@ -331,38 +364,39 @@ public class UDDIInquiryImpl extends Aut
}
}
- public ServiceDetail getServiceDetail(GetServiceDetail body)
+ @Override
+ public ServiceDetail getServiceDetail(GetServiceDetail body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetServiceDetail(body);
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
ServiceDetail result = new ServiceDetail();
-
+
List<String> serviceKeyList = body.getServiceKey();
for (String serviceKey : serviceKeyList) {
-
+
org.apache.juddi.model.BusinessService
modelBusinessService = em.find(org.apache.juddi.model.BusinessService.class,
serviceKey);
if (modelBusinessService == null)
throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.ServiceNotFound", serviceKey));
-
+
org.uddi.api_v3.BusinessService
apiBusinessService = new org.uddi.api_v3.BusinessService();
-
+
MappingModelToApi.mapBusinessService(modelBusinessService, apiBusinessService);
-
+
result.getBusinessService().add(apiBusinessService);
}
-
+
tx.commit();
return result;
-
+
} finally {
if (tx.isActive()) {
tx.rollback();
@@ -371,7 +405,8 @@ public class UDDIInquiryImpl extends Aut
}
}
- public TModelDetail getTModelDetail(GetTModelDetail body)
+ @Override
+ public TModelDetail getTModelDetail(GetTModelDetail body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetTModelDetail(body);
@@ -380,28 +415,28 @@ public class UDDIInquiryImpl extends Aut
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
-
+
if (isAuthenticated())
this.getEntityPublisher(em, body.getAuthInfo());
-
+
TModelDetail result = new TModelDetail();
-
+
List<String> tmodelKeyList = body.getTModelKey();
for (String tmodelKey : tmodelKeyList) {
-
+
org.apache.juddi.model.Tmodel modelTModel =
em.find(org.apache.juddi.model.Tmodel.class, tmodelKey);
if (modelTModel == null) {
throw new InvalidKeyPassedException(new
ErrorMessage("errors.invalidkey.TModelNotFound", tmodelKey));
}
-
+
org.uddi.api_v3.TModel apiTModel = new
org.uddi.api_v3.TModel();
-
+
MappingModelToApi.mapTModel(modelTModel,
apiTModel);
-
+
result.getTModel().add(apiTModel);
}
-
- tx.commit();
+
+ tx.commit();
return result;
} finally {
if (tx.isActive()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]