You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by jf...@apache.org on 2009/03/24 20:05:37 UTC
svn commit: r757957 - in
/webservices/juddi/branches/v3_trunk/juddi-core/src/main:
java/org/apache/juddi/api/impl/InquiryHelper.java
java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
java/org/apache/juddi/config/Property.java resources/juddi.properties
Author: jfaath
Date: Tue Mar 24 19:05:36 2009
New Revision: 757957
URL: http://svn.apache.org/viewvc?rev=757957&view=rev
Log:
JUDDI-178: added optional authentication to Inquiry API (configurable), moved out some inquiry functionality to common class so it can be re-used by subscription api.
Added:
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java (with props)
Modified:
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/juddi.properties
Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java?rev=757957&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java Tue Mar 24 19:05:36 2009
@@ -0,0 +1,230 @@
+/*
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.api.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.error.ErrorMessage;
+import org.apache.juddi.error.InvalidKeyPassedException;
+import org.apache.juddi.mapping.MappingModelToApi;
+import org.apache.juddi.query.FindBindingByCategoryGroupQuery;
+import org.apache.juddi.query.FindBindingByCategoryQuery;
+import org.apache.juddi.query.FindBindingByTModelKeyQuery;
+import org.apache.juddi.query.FindBusinessByCategoryGroupQuery;
+import org.apache.juddi.query.FindBusinessByCategoryQuery;
+import org.apache.juddi.query.FindBusinessByDiscoveryURLQuery;
+import org.apache.juddi.query.FindBusinessByIdentifierQuery;
+import org.apache.juddi.query.FindBusinessByNameQuery;
+import org.apache.juddi.query.FindBusinessByTModelKeyQuery;
+import org.apache.juddi.query.FindServiceByCategoryGroupQuery;
+import org.apache.juddi.query.FindServiceByCategoryQuery;
+import org.apache.juddi.query.FindServiceByNameQuery;
+import org.apache.juddi.query.FindServiceByTModelKeyQuery;
+import org.apache.juddi.query.FindTModelByCategoryGroupQuery;
+import org.apache.juddi.query.FindTModelByCategoryQuery;
+import org.apache.juddi.query.FindTModelByIdentifierQuery;
+import org.apache.juddi.query.FindTModelByNameQuery;
+import org.apache.juddi.query.util.FindQualifiers;
+import org.uddi.api_v3.Direction;
+import org.uddi.api_v3.FindBinding;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindRelatedBusinesses;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.FindTModel;
+import org.uddi.api_v3.TModelBag;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+/**
+ * Used to extrapolate out inquiry functionality as it is used in more than one spot.
+ *
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class InquiryHelper {
+
+ public static List<?> findBinding(FindBinding body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
+
+ List<?> keysFound = null;
+
+ // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
+ if (body.getTModelBag() == null)
+ body.setTModelBag(new TModelBag());
+ doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
+
+ keysFound = FindBindingByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), body.getServiceKey(), keysFound);
+ keysFound = FindBindingByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), body.getServiceKey(), keysFound);
+ keysFound = FindBindingByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), body.getServiceKey(), keysFound);
+
+ return keysFound;
+ }
+
+ public static List<?> findBusiness(FindBusiness body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
+
+ List<?> keysFound = null;
+
+ // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
+ if (body.getTModelBag() == null)
+ body.setTModelBag(new TModelBag());
+ doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
+
+ // The embedded find_relatedBusinesses search is performed first. This is done the same as the actual API call, except the resulting business keys are
+ // extracted and placed in the keysFound array to restrict future searches to only those keys.
+ if (body.getFindRelatedBusinesses() != null) {
+ FindRelatedBusinesses frb = body.getFindRelatedBusinesses();
+
+ org.uddi.api_v3.RelatedBusinessInfos relatedBusinessInfos = new org.uddi.api_v3.RelatedBusinessInfos();
+ if (body.getFindRelatedBusinesses().getBusinessKey() != null ) {
+ getRelatedBusinesses(em, Direction.FROM_KEY, frb.getBusinessKey(), frb.getKeyedReference(), relatedBusinessInfos);
+ getRelatedBusinesses(em, Direction.TO_KEY, frb.getBusinessKey(), frb.getKeyedReference(), relatedBusinessInfos);
+ }
+ else if (body.getFindRelatedBusinesses().getFromKey() != null)
+ getRelatedBusinesses(em, Direction.FROM_KEY, frb.getFromKey(), frb.getKeyedReference(), relatedBusinessInfos);
+ else if (body.getFindRelatedBusinesses().getToKey() != null)
+ getRelatedBusinesses(em, Direction.TO_KEY, frb.getToKey(), frb.getKeyedReference(), relatedBusinessInfos);
+
+ List<String> relatedBusinessKeys = new ArrayList<String>(0);
+ for (org.uddi.api_v3.RelatedBusinessInfo rbi : relatedBusinessInfos.getRelatedBusinessInfo())
+ relatedBusinessKeys.add(rbi.getBusinessKey());
+
+ keysFound = relatedBusinessKeys;
+ }
+
+ keysFound = FindBusinessByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), keysFound);
+ keysFound = FindBusinessByIdentifierQuery.select(em, findQualifiers, body.getIdentifierBag(), keysFound);
+ keysFound = FindBusinessByDiscoveryURLQuery.select(em, findQualifiers, body.getDiscoveryURLs(), keysFound);
+ keysFound = FindBusinessByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
+ keysFound = FindBusinessByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
+ keysFound = FindBusinessByNameQuery.select(em, findQualifiers, body.getName(), keysFound);
+
+ return keysFound;
+ }
+
+ public static List<?> findService(FindService body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
+
+ List<?> keysFound = null;
+
+ // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
+ if (body.getTModelBag() == null)
+ body.setTModelBag(new TModelBag());
+ doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
+
+
+ FindServiceByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), body.getBusinessKey(), keysFound);
+ keysFound = FindServiceByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), body.getBusinessKey(), keysFound);
+ keysFound = FindServiceByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), body.getBusinessKey(), keysFound);
+ keysFound = FindServiceByNameQuery.select(em, findQualifiers, body.getName(), body.getBusinessKey(), keysFound);
+
+ return keysFound;
+ }
+
+ public static List<?> findTModel(FindTModel body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
+ List<?> keysFound = null;
+
+ keysFound = FindTModelByIdentifierQuery.select(em, findQualifiers, body.getIdentifierBag(), keysFound);
+ keysFound = FindTModelByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
+ keysFound = FindTModelByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
+ keysFound = FindTModelByNameQuery.select(em, findQualifiers, body.getName(), keysFound);
+
+ return keysFound;
+ }
+
+
+ /*
+ * Retrieves related businesses based on the focal business and the direction (fromKey or toKey). The focal business is retrieved and then the
+ * appropriate publisher assertion collection is examined for matches. The assertion must be "completed" and if a keyedReference is passed, it must
+ * match exactly. Successful assertion matches are mapped to a RelationBusinessInfo structure and added to the passed in RelationalBusinessInfos
+ * structure.
+ */
+ public static void getRelatedBusinesses(EntityManager em,
+ Direction direction,
+ String focalKey,
+ org.uddi.api_v3.KeyedReference keyedRef,
+ org.uddi.api_v3.RelatedBusinessInfos relatedBusinessInfos)
+ throws DispositionReportFaultMessage {
+ if (relatedBusinessInfos == null)
+ relatedBusinessInfos = new org.uddi.api_v3.RelatedBusinessInfos();
+
+ org.apache.juddi.model.BusinessEntity focalBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, focalKey);
+ if (focalBusiness == null)
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BusinessNotFound", focalKey));
+
+ List<org.apache.juddi.model.PublisherAssertion> pubAssertList = null;
+ if (direction == Direction.FROM_KEY)
+ pubAssertList = focalBusiness.getPublisherAssertionsForFromKey();
+ else
+ pubAssertList = focalBusiness.getPublisherAssertionsForToKey();
+
+ if (pubAssertList != null) {
+ for (org.apache.juddi.model.PublisherAssertion modelPublisherAssertion : pubAssertList) {
+ if ("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && "true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
+ if (keyedRef != null) {
+ if(!keyedRef.getTModelKey().equals(modelPublisherAssertion.getTmodelKey()) ||
+ !keyedRef.getKeyName().equals(modelPublisherAssertion.getKeyName()) ||
+ !keyedRef.getKeyValue().equals(modelPublisherAssertion.getKeyValue())) {
+ continue;
+ }
+ }
+
+ org.apache.juddi.model.BusinessEntity modelRelatedBusiness = null;
+ if (direction == Direction.FROM_KEY)
+ modelRelatedBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, modelPublisherAssertion.getId().getToKey());
+ else
+ modelRelatedBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, modelPublisherAssertion.getId().getFromKey());
+
+ org.uddi.api_v3.RelatedBusinessInfo apiRelatedBusinessInfo = new org.uddi.api_v3.RelatedBusinessInfo();
+
+ MappingModelToApi.mapRelatedBusinessInfo(modelPublisherAssertion, modelRelatedBusiness, direction, apiRelatedBusinessInfo);
+
+ relatedBusinessInfos.getRelatedBusinessInfo().add(apiRelatedBusinessInfo);
+ }
+ }
+ }
+
+ }
+
+ /*
+ * Performs the necessary queries for the find_tModel search and adds resulting tModel keys to the tModelBag provided.
+ */
+ private static void doFindTModelEmbeddedSearch(EntityManager em,
+ org.uddi.api_v3.FindQualifiers fq,
+ FindTModel findTmodel,
+ TModelBag tmodelBag)
+ throws DispositionReportFaultMessage {
+
+
+ if (findTmodel != null && tmodelBag != null) {
+ org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
+ findQualifiers.mapApiFindQualifiers(fq);
+
+
+ List<?> tmodelKeysFound = null;
+ tmodelKeysFound = FindTModelByIdentifierQuery.select(em, findQualifiers, findTmodel.getIdentifierBag(), tmodelKeysFound);
+ tmodelKeysFound = FindTModelByCategoryQuery.select(em, findQualifiers, findTmodel.getCategoryBag(), tmodelKeysFound);
+ tmodelKeysFound = FindTModelByCategoryGroupQuery.select(em, findQualifiers, findTmodel.getCategoryBag(), tmodelKeysFound);
+ tmodelKeysFound = FindTModelByNameQuery.select(em, findQualifiers, findTmodel.getName(), tmodelKeysFound);
+
+ if (tmodelKeysFound != null && tmodelKeysFound.size() > 0) {
+ for (Object item : tmodelKeysFound)
+ tmodelBag.getTModelKey().add((String)item);
+ }
+ }
+ }
+
+
+}
Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java?rev=757957&r1=757956&r2=757957&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIInquiryImpl.java Tue Mar 24 19:05:36 2009
@@ -17,36 +17,21 @@
package org.apache.juddi.api.impl;
-import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import javax.persistence.EntityTransaction;
import javax.persistence.EntityManager;
+import org.apache.commons.configuration.ConfigurationException;
import org.apache.juddi.mapping.MappingModelToApi;
import org.apache.juddi.query.FetchBindingTemplatesQuery;
import org.apache.juddi.query.FetchBusinessEntitiesQuery;
import org.apache.juddi.query.FetchBusinessServicesQuery;
import org.apache.juddi.query.FetchTModelsQuery;
-import org.apache.juddi.query.FindBindingByCategoryGroupQuery;
-import org.apache.juddi.query.FindBindingByCategoryQuery;
-import org.apache.juddi.query.FindBindingByTModelKeyQuery;
-import org.apache.juddi.query.FindBusinessByCategoryGroupQuery;
-import org.apache.juddi.query.FindBusinessByCategoryQuery;
-import org.apache.juddi.query.FindBusinessByDiscoveryURLQuery;
-import org.apache.juddi.query.FindBusinessByIdentifierQuery;
-import org.apache.juddi.query.FindBusinessByNameQuery;
-import org.apache.juddi.query.FindBusinessByTModelKeyQuery;
-import org.apache.juddi.query.FindServiceByCategoryGroupQuery;
-import org.apache.juddi.query.FindServiceByCategoryQuery;
-import org.apache.juddi.query.FindServiceByNameQuery;
-import org.apache.juddi.query.FindServiceByTModelKeyQuery;
-import org.apache.juddi.query.FindTModelByCategoryGroupQuery;
-import org.apache.juddi.query.FindTModelByCategoryQuery;
-import org.apache.juddi.query.FindTModelByIdentifierQuery;
-import org.apache.juddi.query.FindTModelByNameQuery;
import org.apache.juddi.query.PersistenceManager;
import org.apache.juddi.validation.ValidateInquiry;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.config.Property;
import org.apache.juddi.error.InvalidKeyPassedException;
import org.apache.juddi.error.ErrorMessage;
import org.uddi.api_v3.BindingDetail;
@@ -69,12 +54,12 @@
import org.uddi.api_v3.TModelDetail;
import org.uddi.api_v3.TModelList;
import org.uddi.api_v3.ListDescription;
-import org.uddi.api_v3.TModelBag;
import org.uddi.api_v3.Direction;
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.uddi.v3_service.UDDIInquiryPortType;
import org.apache.juddi.api.datatype.GetPublisherDetail;
import org.apache.juddi.api.datatype.PublisherDetail;
+import org.apache.log4j.Logger;
/**
@@ -83,34 +68,26 @@
@WebService(serviceName="UDDIInquiryService",
endpointInterface="org.uddi.v3_service.UDDIInquiryPortType",
targetNamespace = "urn:uddi-org:api_v3_portType")
-public class UDDIInquiryImpl implements UDDIInquiryPortType {
+public class UDDIInquiryImpl extends AuthenticatedService implements UDDIInquiryPortType {
+
+ private static Logger log = Logger.getLogger(UDDIInquiryImpl.class);
public BindingDetail findBinding(FindBinding body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindBinding(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
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 = null;
-
- // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
- if (body.getTModelBag() == null)
- body.setTModelBag(new TModelBag());
- doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
-
- keysFound = FindBindingByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), body.getServiceKey(), keysFound);
- keysFound = FindBindingByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), body.getServiceKey(), keysFound);
- keysFound = FindBindingByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), body.getServiceKey(), keysFound);
+
+ List<?> keysFound = InquiryHelper.findBinding(body, findQualifiers, em);
BindingDetail result = new BindingDetail();
ListDescription listDesc = new ListDescription();
@@ -139,52 +116,17 @@
new ValidateInquiry(null).validateFindBusiness(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
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());
- // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
- if (body.getTModelBag() == null)
- body.setTModelBag(new TModelBag());
- doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
-
- List<?> keysFound = null;
-
- // The embedded find_relatedBusinesses search is performed first. This is done the same as the actual API call, except the resulting business keys are
- // extracted and placed in the keysFound array to restrict future searches to only those keys.
- if (body.getFindRelatedBusinesses() != null) {
- FindRelatedBusinesses frb = body.getFindRelatedBusinesses();
-
- org.uddi.api_v3.RelatedBusinessInfos relatedBusinessInfos = new org.uddi.api_v3.RelatedBusinessInfos();
- if (body.getFindRelatedBusinesses().getBusinessKey() != null ) {
- getRelatedBusinesses(em, Direction.FROM_KEY, frb.getBusinessKey(), frb.getKeyedReference(), relatedBusinessInfos);
- getRelatedBusinesses(em, Direction.TO_KEY, frb.getBusinessKey(), frb.getKeyedReference(), relatedBusinessInfos);
- }
- else if (body.getFindRelatedBusinesses().getFromKey() != null)
- getRelatedBusinesses(em, Direction.FROM_KEY, frb.getFromKey(), frb.getKeyedReference(), relatedBusinessInfos);
- else if (body.getFindRelatedBusinesses().getToKey() != null)
- getRelatedBusinesses(em, Direction.TO_KEY, frb.getToKey(), frb.getKeyedReference(), relatedBusinessInfos);
-
- List<String> relatedBusinessKeys = new ArrayList<String>(0);
- for (org.uddi.api_v3.RelatedBusinessInfo rbi : relatedBusinessInfos.getRelatedBusinessInfo())
- relatedBusinessKeys.add(rbi.getBusinessKey());
-
- keysFound = relatedBusinessKeys;
- }
-
- keysFound = FindBusinessByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), keysFound);
- keysFound = FindBusinessByIdentifierQuery.select(em, findQualifiers, body.getIdentifierBag(), keysFound);
- keysFound = FindBusinessByDiscoveryURLQuery.select(em, findQualifiers, body.getDiscoveryURLs(), keysFound);
- keysFound = FindBusinessByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
- keysFound = FindBusinessByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
- keysFound = FindBusinessByNameQuery.select(em, findQualifiers, body.getName(), keysFound);
+ List<?> keysFound = InquiryHelper.findBusiness(body, findQualifiers, em);
BusinessList result = new BusinessList();
ListDescription listDesc = new ListDescription();
@@ -215,14 +157,13 @@
new ValidateInquiry(null).validateFindRelatedBusinesses(body, false);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
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();
@@ -236,13 +177,13 @@
// found. Rather than use a query, it seems simpler to take advantage of the model's publisher assertion collections.
org.uddi.api_v3.RelatedBusinessInfos relatedBusinessInfos = new org.uddi.api_v3.RelatedBusinessInfos();
if (body.getBusinessKey() != null ) {
- getRelatedBusinesses(em, Direction.FROM_KEY, body.getBusinessKey(), body.getKeyedReference(), relatedBusinessInfos);
- getRelatedBusinesses(em, Direction.TO_KEY, body.getBusinessKey(), body.getKeyedReference(), relatedBusinessInfos);
+ InquiryHelper.getRelatedBusinesses(em, Direction.FROM_KEY, body.getBusinessKey(), body.getKeyedReference(), relatedBusinessInfos);
+ InquiryHelper.getRelatedBusinesses(em, Direction.TO_KEY, body.getBusinessKey(), body.getKeyedReference(), relatedBusinessInfos);
}
else if (body.getFromKey() != null)
- getRelatedBusinesses(em, Direction.FROM_KEY, body.getFromKey(), body.getKeyedReference(), relatedBusinessInfos);
+ InquiryHelper.getRelatedBusinesses(em, Direction.FROM_KEY, body.getFromKey(), body.getKeyedReference(), relatedBusinessInfos);
else if (body.getToKey() != null)
- getRelatedBusinesses(em, Direction.TO_KEY, body.getToKey(), body.getKeyedReference(), relatedBusinessInfos);
+ InquiryHelper.getRelatedBusinesses(em, Direction.TO_KEY, body.getToKey(), body.getKeyedReference(), relatedBusinessInfos);
if (relatedBusinessInfos.getRelatedBusinessInfo().size() > 0) {
// TODO: Do proper pagination!
@@ -260,85 +201,23 @@
}
- /*
- * Retrieves related businesses based on the focal business and the direction (fromKey or toKey). The focal business is retrieved and then the
- * appropriate publisher assertion collection is examined for matches. The assertion must be "completed" and if a keyedReference is passed, it must
- * match exactly. Successful assertion matches are mapped to a RelationBusinessInfo structure and added to the passed in RelationalBusinessInfos
- * structure.
- */
- private void getRelatedBusinesses(EntityManager em,
- Direction direction,
- String focalKey,
- org.uddi.api_v3.KeyedReference keyedRef,
- org.uddi.api_v3.RelatedBusinessInfos relatedBusinessInfos)
- throws DispositionReportFaultMessage {
- if (relatedBusinessInfos == null)
- relatedBusinessInfos = new org.uddi.api_v3.RelatedBusinessInfos();
-
- org.apache.juddi.model.BusinessEntity focalBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, focalKey);
- if (focalBusiness == null)
- throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BusinessNotFound", focalKey));
-
- List<org.apache.juddi.model.PublisherAssertion> pubAssertList = null;
- if (direction == Direction.FROM_KEY)
- pubAssertList = focalBusiness.getPublisherAssertionsForFromKey();
- else
- pubAssertList = focalBusiness.getPublisherAssertionsForToKey();
-
- if (pubAssertList != null) {
- for (org.apache.juddi.model.PublisherAssertion modelPublisherAssertion : pubAssertList) {
- if ("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && "true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
- if (keyedRef != null) {
- if(!keyedRef.getTModelKey().equals(modelPublisherAssertion.getTmodelKey()) ||
- !keyedRef.getKeyName().equals(modelPublisherAssertion.getKeyName()) ||
- !keyedRef.getKeyValue().equals(modelPublisherAssertion.getKeyValue())) {
- continue;
- }
- }
-
- org.apache.juddi.model.BusinessEntity modelRelatedBusiness = null;
- if (direction == Direction.FROM_KEY)
- modelRelatedBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, modelPublisherAssertion.getId().getToKey());
- else
- modelRelatedBusiness = em.find(org.apache.juddi.model.BusinessEntity.class, modelPublisherAssertion.getId().getFromKey());
-
- org.uddi.api_v3.RelatedBusinessInfo apiRelatedBusinessInfo = new org.uddi.api_v3.RelatedBusinessInfo();
-
- MappingModelToApi.mapRelatedBusinessInfo(modelPublisherAssertion, modelRelatedBusiness, direction, apiRelatedBusinessInfo);
-
- relatedBusinessInfos.getRelatedBusinessInfo().add(apiRelatedBusinessInfo);
- }
- }
- }
-
- }
public ServiceList findService(FindService body)
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateFindService(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
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());
- // First perform the embedded FindTModel search which will augment the tModel bag with any resulting tModel keys.
- if (body.getTModelBag() == null)
- body.setTModelBag(new TModelBag());
- doFindTModelEmbeddedSearch(em, body.getFindQualifiers(), body.getFindTModel(), body.getTModelBag());
-
- List<?> keysFound = null;
- FindServiceByTModelKeyQuery.select(em, findQualifiers, body.getTModelBag(), body.getBusinessKey(), keysFound);
- keysFound = FindServiceByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), body.getBusinessKey(), keysFound);
- keysFound = FindServiceByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), body.getBusinessKey(), keysFound);
- keysFound = FindServiceByNameQuery.select(em, findQualifiers, body.getName(), body.getBusinessKey(), keysFound);
+ List<?> keysFound = InquiryHelper.findService(body, findQualifiers, em);
ServiceList result = new ServiceList();
ListDescription listDesc = new ListDescription();
@@ -369,22 +248,17 @@
new ValidateInquiry(null).validateFindTModel(body, false);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
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 = null;
- keysFound = FindTModelByIdentifierQuery.select(em, findQualifiers, body.getIdentifierBag(), keysFound);
- keysFound = FindTModelByCategoryQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
- keysFound = FindTModelByCategoryGroupQuery.select(em, findQualifiers, body.getCategoryBag(), keysFound);
- keysFound = FindTModelByNameQuery.select(em, findQualifiers, body.getName(), keysFound);
+ List<?> keysFound = InquiryHelper.findTModel(body, findQualifiers, em);
TModelList result = new TModelList();
ListDescription listDesc = new ListDescription();
@@ -415,13 +289,12 @@
new ValidateInquiry(null).validateGetBindingDetail(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
BindingDetail result = new BindingDetail();
@@ -450,14 +323,13 @@
new ValidateInquiry(null).validateGetBusinessDetail(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
+
BusinessDetail result = new BusinessDetail();
List<String> businessKeyList = body.getBusinessKey();
@@ -484,15 +356,14 @@
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetOperationalInfo(body);
-
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
+
OperationalInfos result = new OperationalInfos();
List<String> entityKeyList = body.getEntityKey();
@@ -520,14 +391,13 @@
new ValidateInquiry(null).validateGetServiceDetail(body);
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
+
ServiceDetail result = new ServiceDetail();
List<String> serviceKeyList = body.getServiceKey();
@@ -554,15 +424,14 @@
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetTModelDetail(body);
-
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
+
TModelDetail result = new TModelDetail();
List<String> tmodelKeyList = body.getTModelKey();
@@ -586,6 +455,16 @@
return result;
}
+ private boolean isAuthenticated() {
+ boolean result = false;
+ try {
+ result = AppConfig.getConfiguration().getBoolean(Property.JUDDI_AUTHENTICATE_INQUIRY);
+ } catch (ConfigurationException e) {
+ log.error("Configuration exception occurred retrieving: " + Property.JUDDI_AUTHENTICATE_INQUIRY, e);
+ }
+ return result;
+ }
+
/*-------------------------------------------------------------------
Publisher functions are specific to jUDDI.
--------------------------------------------------------------------*/
@@ -597,15 +476,14 @@
throws DispositionReportFaultMessage {
new ValidateInquiry(null).validateGetPublisherDetail(body);
-
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+ if (isAuthenticated())
+ this.getEntityPublisher(em, body.getAuthInfo());
+
PublisherDetail result = new PublisherDetail();
List<String> publisherIdList = body.getPublisherId();
@@ -630,32 +508,5 @@
}
- /*
- * Performs the necessary queries for the find_tModel search and adds resulting tModel keys to the tModelBag provided.
- */
- private void doFindTModelEmbeddedSearch(EntityManager em,
- org.uddi.api_v3.FindQualifiers fq,
- FindTModel findTmodel,
- TModelBag tmodelBag)
- throws DispositionReportFaultMessage {
-
-
- if (findTmodel != null && tmodelBag != null) {
- org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
- findQualifiers.mapApiFindQualifiers(fq);
-
-
- List<?> tmodelKeysFound = null;
- tmodelKeysFound = FindTModelByIdentifierQuery.select(em, findQualifiers, findTmodel.getIdentifierBag(), tmodelKeysFound);
- tmodelKeysFound = FindTModelByCategoryQuery.select(em, findQualifiers, findTmodel.getCategoryBag(), tmodelKeysFound);
- tmodelKeysFound = FindTModelByCategoryGroupQuery.select(em, findQualifiers, findTmodel.getCategoryBag(), tmodelKeysFound);
- tmodelKeysFound = FindTModelByNameQuery.select(em, findQualifiers, findTmodel.getName(), tmodelKeysFound);
-
- if (tmodelKeysFound != null && tmodelKeysFound.size() > 0) {
- for (Object item : tmodelKeysFound)
- tmodelBag.getTModelKey().add((String)item);
- }
- }
- }
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java?rev=757957&r1=757956&r2=757957&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/config/Property.java Tue Mar 24 19:05:36 2009
@@ -15,7 +15,6 @@
public final static String JUDDI_MAX_TMODELS_PER_PUBLISHER ="juddi.maxTModelsPerPublisher";
public final static String JUDDI_CRYPTOR ="juddi.cryptor";
public final static String JUDDI_KEYGENERATOR ="juddi.keygenerator";
- public final static String JUDDI_VALIDATOR ="juddi.validator";
public final static String JUDDI_SECURITY_DOMAIN ="juddi.securityDomain";
public final static String JUDDI_USERSFILE ="juddi.usersfile";
public final static String JUDDI_MAX_ROWS ="juddi.maxRows";
@@ -23,6 +22,7 @@
public final static String JUDDI_ROOT_PARTITION ="juddi.rootPartition";
public final static String JUDDI_NODE_ID ="juddi.nodeId";
public final static String JUDDI_TRANSFER_EXPIRATION_DAYS ="juddi.transfer.expiration.days";
+ public final static String JUDDI_AUTHENTICATE_INQUIRY ="juddi.authenticate.Inquiry";
public final static String DEFAULT_CRYPTOR ="org.apache.juddi.cryptor.DefaultCryptor";
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/juddi.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/juddi.properties?rev=757957&r1=757956&r2=757957&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/juddi.properties (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/juddi.properties Tue Mar 24 19:05:36 2009
@@ -50,11 +50,12 @@
# jUDDI Cryptor implementation to use
juddi.cryptor = org.apache.juddi.cryptor.DefaultCryptor
#
-# jUDDI Validator to use
-juddi.validator=org.apache.juddi.validator.DefaultValidator
-#
# jUDDI Key Generator to use
juddi.keygeneratorr=org.apache.juddi.keygen.KeyGenerator
+#
+# Specifies whether the inquiry API requires authentication
+juddi.authenticate.Inquiry=false
+
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org