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/04/22 04:20:50 UTC
svn commit: r767349 - in
/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi:
api/impl/ mapping/ validation/
Author: jfaath
Date: Wed Apr 22 02:20:49 2009
New Revision: 767349
URL: http://svn.apache.org/viewvc?rev=767349&view=rev
Log:
working on getSubscriptionResults, completed the find_* filters
Modified:
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java
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/api/impl/UDDISubscriptionImpl.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
Modified: 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=767349&r1=767348&r2=767349&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/InquiryHelper.java Wed Apr 22 02:20:49 2009
@@ -17,6 +17,7 @@
package org.apache.juddi.api.impl;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
@@ -24,6 +25,10 @@
import org.apache.juddi.error.ErrorMessage;
import org.apache.juddi.error.InvalidKeyPassedException;
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;
@@ -42,17 +47,22 @@
import org.apache.juddi.query.FindTModelByIdentifierQuery;
import org.apache.juddi.query.FindTModelByNameQuery;
import org.apache.juddi.query.util.FindQualifiers;
+import org.uddi.api_v3.BindingDetail;
+import org.uddi.api_v3.BusinessList;
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.ListDescription;
+import org.uddi.api_v3.ServiceList;
import org.uddi.api_v3.TModelBag;
+import org.uddi.api_v3.TModelList;
import org.uddi.v3_service.DispositionReportFaultMessage;
/**
- * Used to extrapolate out inquiry functionality as it is used in more than one spot.
+ * Used to factor out inquiry functionality as it is used in more than one spot.
*
* @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
*/
@@ -74,6 +84,36 @@
return keysFound;
}
+ public static BindingDetail getBindingDetailFromKeys(FindBinding body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound) throws DispositionReportFaultMessage {
+ return getBindingDetailFromKeys(body, findQualifiers, em, keysFound, null, null);
+ }
+
+ public static BindingDetail getBindingDetailFromKeys(FindBinding body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound, Date modifiedAfter, Date modifiedBefore) throws DispositionReportFaultMessage {
+ BindingDetail result = new BindingDetail();
+ ListDescription listDesc = new ListDescription();
+ result.setListDescription(listDesc);
+
+ // Sort and retrieve the final results with paging taken into account
+ List<?> queryResults = FetchBindingTemplatesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
+
+ for (Object item : queryResults) {
+ org.apache.juddi.model.BindingTemplate modelBindingTemplate = (org.apache.juddi.model.BindingTemplate)item;
+ org.uddi.api_v3.BindingTemplate apiBindingTemplate = new org.uddi.api_v3.BindingTemplate();
+
+ if (modifiedAfter != null && modifiedAfter.after(modelBindingTemplate.getModifiedIncludingChildren()))
+ continue;
+
+ if (modifiedBefore != null && modifiedBefore.before(modelBindingTemplate.getModifiedIncludingChildren()))
+ continue;
+
+ MappingModelToApi.mapBindingTemplate(modelBindingTemplate, apiBindingTemplate);
+
+ result.getBindingTemplate().add(apiBindingTemplate);
+ }
+
+ return result;
+ }
+
public static List<?> findBusiness(FindBusiness body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
List<?> keysFound = null;
@@ -115,6 +155,38 @@
return keysFound;
}
+ public static BusinessList getBusinessListFromKeys(FindBusiness body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound) throws DispositionReportFaultMessage {
+ return getBusinessListFromKeys(body, findQualifiers, em, keysFound, null, null);
+ }
+
+ public static BusinessList getBusinessListFromKeys(FindBusiness body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound, Date modifiedAfter, Date modifiedBefore) throws DispositionReportFaultMessage {
+ BusinessList result = new BusinessList();
+ ListDescription listDesc = new ListDescription();
+ result.setListDescription(listDesc);
+
+ // Sort and retrieve the final results taking paging into account
+ List<?> queryResults = FetchBusinessEntitiesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
+ if (queryResults != null && queryResults.size() > 0)
+ result.setBusinessInfos(new org.uddi.api_v3.BusinessInfos());
+
+ for (Object item : queryResults) {
+ org.apache.juddi.model.BusinessEntity modelBusinessEntity = (org.apache.juddi.model.BusinessEntity)item;
+ org.uddi.api_v3.BusinessInfo apiBusinessInfo = new org.uddi.api_v3.BusinessInfo();
+
+ if (modifiedAfter != null && modifiedAfter.after(modelBusinessEntity.getModifiedIncludingChildren()))
+ continue;
+
+ if (modifiedBefore != null && modifiedBefore.before(modelBusinessEntity.getModifiedIncludingChildren()))
+ continue;
+
+ MappingModelToApi.mapBusinessInfo(modelBusinessEntity, apiBusinessInfo);
+
+ result.getBusinessInfos().getBusinessInfo().add(apiBusinessInfo);
+ }
+
+ return result;
+ }
+
public static List<?> findService(FindService body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
List<?> keysFound = null;
@@ -132,6 +204,39 @@
return keysFound;
}
+
+ public static ServiceList getServiceListFromKeys(FindService body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound) throws DispositionReportFaultMessage {
+ return getServiceListFromKeys(body, findQualifiers, em, keysFound, null, null);
+ }
+
+ public static ServiceList getServiceListFromKeys(FindService body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound, Date modifiedAfter, Date modifiedBefore) throws DispositionReportFaultMessage {
+ ServiceList result = new ServiceList();
+ ListDescription listDesc = new ListDescription();
+ result.setListDescription(listDesc);
+
+ // Sort and retrieve the final results taking paging into account
+ List<?> queryResults = FetchBusinessServicesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
+ if (queryResults != null && queryResults.size() > 0)
+ result.setServiceInfos(new org.uddi.api_v3.ServiceInfos());
+
+ for (Object item : queryResults) {
+ org.apache.juddi.model.BusinessService modelBusinessService = (org.apache.juddi.model.BusinessService)item;
+
+ if (modifiedAfter != null && modifiedAfter.after(modelBusinessService.getModifiedIncludingChildren()))
+ continue;
+
+ if (modifiedBefore != null && modifiedBefore.before(modelBusinessService.getModifiedIncludingChildren()))
+ continue;
+
+ org.uddi.api_v3.ServiceInfo apiServiceInfo = new org.uddi.api_v3.ServiceInfo();
+
+ MappingModelToApi.mapServiceInfo(modelBusinessService, apiServiceInfo);
+
+ result.getServiceInfos().getServiceInfo().add(apiServiceInfo);
+ }
+
+ return result;
+ }
public static List<?> findTModel(FindTModel body, FindQualifiers findQualifiers, EntityManager em) throws DispositionReportFaultMessage {
List<?> keysFound = null;
@@ -143,6 +248,38 @@
return keysFound;
}
+
+ public static TModelList getTModelListFromKeys(FindTModel body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound) throws DispositionReportFaultMessage {
+ return getTModelListFromKeys(body, findQualifiers, em, keysFound, null, null);
+ }
+
+ public static TModelList getTModelListFromKeys(FindTModel body, FindQualifiers findQualifiers, EntityManager em, List<?> keysFound, Date modifiedAfter, Date modifiedBefore) throws DispositionReportFaultMessage {
+ TModelList result = new TModelList();
+ ListDescription listDesc = new ListDescription();
+ result.setListDescription(listDesc);
+
+ // Sort and retrieve the final results taking paging into account
+ List<?> queryResults = FetchTModelsQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
+ if (queryResults != null && queryResults.size() > 0)
+ result.setTModelInfos(new org.uddi.api_v3.TModelInfos());
+
+ for (Object item : queryResults) {
+ org.apache.juddi.model.Tmodel modelTModel = (org.apache.juddi.model.Tmodel)item;
+ org.uddi.api_v3.TModelInfo apiTModelInfo = new org.uddi.api_v3.TModelInfo();
+
+ if (modifiedAfter != null && modifiedAfter.after(modelTModel.getModifiedIncludingChildren()))
+ continue;
+
+ if (modifiedBefore != null && modifiedBefore.before(modelTModel.getModifiedIncludingChildren()))
+ continue;
+
+ MappingModelToApi.mapTModelInfo(modelTModel, apiTModelInfo);
+
+ result.getTModelInfos().getTModelInfo().add(apiTModelInfo);
+ }
+
+ return result;
+ }
/*
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=767349&r1=767348&r2=767349&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 Wed Apr 22 02:20:49 2009
@@ -24,10 +24,6 @@
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.PersistenceManager;
import org.apache.juddi.validation.ValidateInquiry;
import org.apache.juddi.config.AppConfig;
@@ -89,21 +85,7 @@
List<?> keysFound = InquiryHelper.findBinding(body, findQualifiers, em);
- BindingDetail result = new BindingDetail();
- ListDescription listDesc = new ListDescription();
- result.setListDescription(listDesc);
-
- // Sort and retrieve the final results with paging taken into account
- List<?> queryResults = FetchBindingTemplatesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
-
- for (Object item : queryResults) {
- org.apache.juddi.model.BindingTemplate modelBindingTemplate = (org.apache.juddi.model.BindingTemplate)item;
- org.uddi.api_v3.BindingTemplate apiBindingTemplate = new org.uddi.api_v3.BindingTemplate();
-
- MappingModelToApi.mapBindingTemplate(modelBindingTemplate, apiBindingTemplate);
-
- result.getBindingTemplate().add(apiBindingTemplate);
- }
+ BindingDetail result = InquiryHelper.getBindingDetailFromKeys(body, findQualifiers, em, keysFound);
tx.commit();
em.close();
@@ -128,23 +110,7 @@
List<?> keysFound = InquiryHelper.findBusiness(body, findQualifiers, em);
- BusinessList result = new BusinessList();
- ListDescription listDesc = new ListDescription();
- result.setListDescription(listDesc);
-
- // Sort and retrieve the final results taking paging into account
- List<?> queryResults = FetchBusinessEntitiesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
- if (queryResults != null && queryResults.size() > 0)
- result.setBusinessInfos(new org.uddi.api_v3.BusinessInfos());
-
- for (Object item : queryResults) {
- org.apache.juddi.model.BusinessEntity modelBusinessEntity = (org.apache.juddi.model.BusinessEntity)item;
- org.uddi.api_v3.BusinessInfo apiBusinessInfo = new org.uddi.api_v3.BusinessInfo();
-
- MappingModelToApi.mapBusinessInfo(modelBusinessEntity, apiBusinessInfo);
-
- result.getBusinessInfos().getBusinessInfo().add(apiBusinessInfo);
- }
+ BusinessList result = InquiryHelper.getBusinessListFromKeys(body, findQualifiers, em, keysFound);
tx.commit();
em.close();
@@ -198,9 +164,7 @@
em.close();
return result;
-
}
-
public ServiceList findService(FindService body)
throws DispositionReportFaultMessage {
@@ -219,23 +183,7 @@
List<?> keysFound = InquiryHelper.findService(body, findQualifiers, em);
- ServiceList result = new ServiceList();
- ListDescription listDesc = new ListDescription();
- result.setListDescription(listDesc);
-
- // Sort and retrieve the final results taking paging into account
- List<?> queryResults = FetchBusinessServicesQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
- if (queryResults != null && queryResults.size() > 0)
- result.setServiceInfos(new org.uddi.api_v3.ServiceInfos());
-
- for (Object item : queryResults) {
- org.apache.juddi.model.BusinessService modelBusinessService = (org.apache.juddi.model.BusinessService)item;
- org.uddi.api_v3.ServiceInfo apiServiceInfo = new org.uddi.api_v3.ServiceInfo();
-
- MappingModelToApi.mapServiceInfo(modelBusinessService, apiServiceInfo);
-
- result.getServiceInfos().getServiceInfo().add(apiServiceInfo);
- }
+ ServiceList result = InquiryHelper.getServiceListFromKeys(body, findQualifiers, em, keysFound);
tx.commit();
em.close();
@@ -260,23 +208,7 @@
List<?> keysFound = InquiryHelper.findTModel(body, findQualifiers, em);
- TModelList result = new TModelList();
- ListDescription listDesc = new ListDescription();
- result.setListDescription(listDesc);
-
- // Sort and retrieve the final results taking paging into account
- List<?> queryResults = FetchTModelsQuery.select(em, findQualifiers, keysFound, body.getMaxRows(), body.getListHead(), listDesc);
- if (queryResults != null && queryResults.size() > 0)
- result.setTModelInfos(new org.uddi.api_v3.TModelInfos());
-
- for (Object item : queryResults) {
- org.apache.juddi.model.Tmodel modelTModel = (org.apache.juddi.model.Tmodel)item;
- org.uddi.api_v3.TModelInfo apiTModelInfo = new org.uddi.api_v3.TModelInfo();
-
- MappingModelToApi.mapTModelInfo(modelTModel, apiTModelInfo);
-
- result.getTModelInfos().getTModelInfo().add(apiTModelInfo);
- }
+ TModelList result = InquiryHelper.getTModelListFromKeys(body, findQualifiers, em, keysFound);
tx.commit();
em.close();
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java?rev=767349&r1=767348&r2=767349&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISubscriptionImpl.java Wed Apr 22 02:20:49 2009
@@ -18,6 +18,7 @@
package org.apache.juddi.api.impl;
import java.util.ArrayList;
+import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
@@ -29,8 +30,17 @@
import javax.xml.datatype.DatatypeFactory;
import javax.xml.ws.Holder;
+import org.uddi.api_v3.BindingDetail;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.FindBinding;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.FindTModel;
+import org.uddi.api_v3.ServiceList;
+import org.uddi.api_v3.TModelList;
import org.uddi.sub_v3.DeleteSubscription;
import org.uddi.sub_v3.GetSubscriptionResults;
+import org.uddi.sub_v3.KeyBag;
import org.uddi.sub_v3.Subscription;
import org.uddi.sub_v3.SubscriptionFilter;
import org.uddi.sub_v3.SubscriptionResultsList;
@@ -84,20 +94,179 @@
public SubscriptionResultsList getSubscriptionResults(
GetSubscriptionResults body) throws DispositionReportFaultMessage {
-
- // TODO JUDDI-178: Perform necessary authentication logic
- @SuppressWarnings("unused")
- String authInfo = body.getAuthInfo();
-
+
EntityManager em = PersistenceManager.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
+
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+ new ValidateSubscription(publisher).validateGetSubscriptionResults(em, body);
+
+ org.apache.juddi.model.Subscription modelSubscription = em.find(org.apache.juddi.model.Subscription.class, body.getSubscriptionKey());
+ SubscriptionFilter subscriptionFilter = null;
+ try {
+ subscriptionFilter = (SubscriptionFilter)JAXBMarshaller.unmarshallFromString(modelSubscription.getSubscriptionFilter(), JAXBMarshaller.PACKAGE_SUBSCRIPTION);
+ }
+ catch (JAXBException e) {
+ logger.error("JAXB Exception while unmarshalling subscription filter", e);
+ throw new FatalErrorException(new ErrorMessage("errors.Unspecified"));
+ }
+
+ SubscriptionResultsList result = new SubscriptionResultsList();
+
+ if (subscriptionFilter.getFindBinding() != null) {
+ //Get the current matching keys
+ List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
+
+ // See if there's any missing keys by comparing against the previous matches. If so, they missing keys are added to the KeyBag and
+ // then added to the result
+ List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
+ if (missingKeys != null && missingKeys.size() > 0) {
+ KeyBag missingKeyBag = new KeyBag();
+ for (String key : missingKeys)
+ missingKeyBag.getBindingKey().add(key);
+
+ result.getKeyBag().add(missingKeyBag);
+ }
+
+ // Re-setting the subscription matches to the new matching key collection
+ modelSubscription.getSubscriptionMatches().clear();
+ for (Object key : currentMatchingKeys) {
+ SubscriptionMatch subMatch = new SubscriptionMatch(modelSubscription, (String)key);
+ modelSubscription.getSubscriptionMatches().add(subMatch);
+ }
+
+ // Now, finding the necessary entities, within the coverage period limits
+ FindBinding fb = subscriptionFilter.getFindBinding();
+ org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
+ findQualifiers.mapApiFindQualifiers(fb.getFindQualifiers());
+
+ Date startPointDate = new Date(body.getCoveragePeriod().getStartPoint().toGregorianCalendar().getTimeInMillis());
+ Date endPointDate = new Date(body.getCoveragePeriod().getEndPoint().toGregorianCalendar().getTimeInMillis());
+
+ BindingDetail bindingDetail = InquiryHelper.getBindingDetailFromKeys(fb, findQualifiers, em, currentMatchingKeys, startPointDate, endPointDate);
+
+ result.setBindingDetail(bindingDetail);
+
+ }
+ if (subscriptionFilter.getFindBusiness() != null) {
+ //Get the current matching keys
+ List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
+ List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
+ if (missingKeys != null && missingKeys.size() > 0) {
+ KeyBag missingKeyBag = new KeyBag();
+ for (String key : missingKeys)
+ missingKeyBag.getBusinessKey().add(key);
+
+ result.getKeyBag().add(missingKeyBag);
+ }
+
+ // Re-setting the subscription matches to the new matching key collection
+ modelSubscription.getSubscriptionMatches().clear();
+ for (Object key : currentMatchingKeys) {
+ SubscriptionMatch subMatch = new SubscriptionMatch(modelSubscription, (String)key);
+ modelSubscription.getSubscriptionMatches().add(subMatch);
+ }
+
+ // Now, finding the necessary entities, within the coverage period limits
+ FindBusiness fb = subscriptionFilter.getFindBusiness();
+ org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
+ findQualifiers.mapApiFindQualifiers(fb.getFindQualifiers());
+
+ Date startPointDate = new Date(body.getCoveragePeriod().getStartPoint().toGregorianCalendar().getTimeInMillis());
+ Date endPointDate = new Date(body.getCoveragePeriod().getEndPoint().toGregorianCalendar().getTimeInMillis());
+
+ BusinessList businessList = InquiryHelper.getBusinessListFromKeys(fb, findQualifiers, em, currentMatchingKeys, startPointDate, endPointDate);
+
+ result.setBusinessList(businessList);
+
+ }
+ if (subscriptionFilter.getFindService() != null) {
+ //Get the current matching keys
+ List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
+
+ List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
+ if (missingKeys != null && missingKeys.size() > 0) {
+ KeyBag missingKeyBag = new KeyBag();
+ for (String key : missingKeys)
+ missingKeyBag.getServiceKey().add(key);
+
+ result.getKeyBag().add(missingKeyBag);
+ }
+
+ // Re-setting the subscription matches to the new matching key collection
+ modelSubscription.getSubscriptionMatches().clear();
+ for (Object key : currentMatchingKeys) {
+ SubscriptionMatch subMatch = new SubscriptionMatch(modelSubscription, (String)key);
+ modelSubscription.getSubscriptionMatches().add(subMatch);
+ }
+
+ // Now, finding the necessary entities, within the coverage period limits
+ FindService fs = subscriptionFilter.getFindService();
+ org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
+ findQualifiers.mapApiFindQualifiers(fs.getFindQualifiers());
+
+ Date startPointDate = new Date(body.getCoveragePeriod().getStartPoint().toGregorianCalendar().getTimeInMillis());
+ Date endPointDate = new Date(body.getCoveragePeriod().getEndPoint().toGregorianCalendar().getTimeInMillis());
+
+ ServiceList serviceList = InquiryHelper.getServiceListFromKeys(fs, findQualifiers, em, currentMatchingKeys, startPointDate, endPointDate);
+
+ result.setServiceList(serviceList);
+ }
+ if (subscriptionFilter.getFindTModel() != null) {
+ //Get the current matching keys
+ List<?> currentMatchingKeys = getSubscriptionMatches(subscriptionFilter, em);
+
+ List<String> missingKeys = getMissingKeys(currentMatchingKeys, modelSubscription.getSubscriptionMatches());
+ if (missingKeys != null && missingKeys.size() > 0) {
+ KeyBag missingKeyBag = new KeyBag();
+ for (String key : missingKeys)
+ missingKeyBag.getTModelKey().add(key);
+
+ result.getKeyBag().add(missingKeyBag);
+ }
+
+ // Re-setting the subscription matches to the new matching key collection
+ modelSubscription.getSubscriptionMatches().clear();
+ for (Object key : currentMatchingKeys) {
+ SubscriptionMatch subMatch = new SubscriptionMatch(modelSubscription, (String)key);
+ modelSubscription.getSubscriptionMatches().add(subMatch);
+ }
+
+ // Now, finding the necessary entities, within the coverage period limits
+ FindTModel ft = subscriptionFilter.getFindTModel();
+ org.apache.juddi.query.util.FindQualifiers findQualifiers = new org.apache.juddi.query.util.FindQualifiers();
+ findQualifiers.mapApiFindQualifiers(ft.getFindQualifiers());
+
+ Date startPointDate = new Date(body.getCoveragePeriod().getStartPoint().toGregorianCalendar().getTimeInMillis());
+ Date endPointDate = new Date(body.getCoveragePeriod().getEndPoint().toGregorianCalendar().getTimeInMillis());
+
+ TModelList tmodelList = InquiryHelper.getTModelListFromKeys(ft, findQualifiers, em, currentMatchingKeys, startPointDate, endPointDate);
+
+ result.setTModelList(tmodelList);
+
+ }
+ if (subscriptionFilter.getFindRelatedBusinesses() != null) {
+ }
+ if (subscriptionFilter.getGetBindingDetail() != null) {
+ }
+ if (subscriptionFilter.getGetBusinessDetail() != null) {
+ }
+ if (subscriptionFilter.getGetServiceDetail() != null) {
+ }
+ if (subscriptionFilter.getGetTModelDetail() != null) {
+ }
+ if (subscriptionFilter.getGetAssertionStatusReport() != null) {
+ }
+
+
+
tx.commit();
em.close();
- return null;
- }
+ return result;
+ }
@SuppressWarnings("unchecked")
public List<Subscription> getSubscriptions(String authInfo)
@@ -287,4 +456,15 @@
}
+ private List<String> getMissingKeys(List<?> currentMatchingKeys, List<SubscriptionMatch> subscriptionMatches) {
+
+ List<String> result = new ArrayList<String>(subscriptionMatches.size());
+ for (SubscriptionMatch subMatch : subscriptionMatches)
+ result.add(subMatch.getEntityKey());
+
+ result.removeAll(currentMatchingKeys);
+
+ return result;
+ }
+
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java?rev=767349&r1=767348&r2=767349&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java Wed Apr 22 02:20:49 2009
@@ -744,7 +744,7 @@
apiSubscription.setNotificationInterval(converStringToDuration(modelSubscription.getNotificationInterval()));
try {
- SubscriptionFilter existingFilter = (SubscriptionFilter)JAXBMarshaller.unmarshallFromString(modelSubscription.getSubscriptionFilter(), "org.uddi.sub_v3");
+ SubscriptionFilter existingFilter = (SubscriptionFilter)JAXBMarshaller.unmarshallFromString(modelSubscription.getSubscriptionFilter(), JAXBMarshaller.PACKAGE_SUBSCRIPTION);
apiSubscription.setSubscriptionFilter(existingFilter);
}
catch (JAXBException e) {
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java?rev=767349&r1=767348&r2=767349&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java Wed Apr 22 02:20:49 2009
@@ -17,6 +17,8 @@
package org.apache.juddi.validation;
+import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
@@ -25,13 +27,16 @@
import org.apache.juddi.error.ErrorMessage;
import org.apache.juddi.error.FatalErrorException;
import org.apache.juddi.error.InvalidKeyPassedException;
+import org.apache.juddi.error.InvalidTimeException;
import org.apache.juddi.error.KeyUnavailableException;
import org.apache.juddi.error.UserMismatchException;
import org.apache.juddi.error.ValueNotAllowedException;
import org.apache.juddi.keygen.KeyGenerator;
import org.apache.juddi.keygen.KeyGeneratorFactory;
import org.apache.juddi.model.UddiEntityPublisher;
+import org.uddi.sub_v3.CoveragePeriod;
import org.uddi.sub_v3.DeleteSubscription;
+import org.uddi.sub_v3.GetSubscriptionResults;
import org.uddi.sub_v3.SubscriptionFilter;
import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -158,7 +163,6 @@
}
-
}
public void validateDeleteSubscription(EntityManager em, DeleteSubscription body) throws DispositionReportFaultMessage {
@@ -187,4 +191,37 @@
}
}
+
+ public void validateGetSubscriptionResults(EntityManager em, GetSubscriptionResults body) throws DispositionReportFaultMessage {
+ // No null input
+ if (body == null)
+ throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+
+ String subscriptionKey = body.getSubscriptionKey();
+ if (subscriptionKey == null || subscriptionKey.length() == 0)
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NullKey", subscriptionKey));
+
+ Object obj = em.find(org.apache.juddi.model.Subscription.class, subscriptionKey);
+ if (obj == null)
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscriptionNotFound", subscriptionKey));
+
+ Date expiresAfter = ((org.apache.juddi.model.Subscription)obj).getExpiresAfter();
+ Date now = new Date();
+ if (expiresAfter.getTime() < now.getTime())
+ throw new InvalidKeyPassedException(new ErrorMessage("errors.getsubscriptionresult.SubscriptionExpired", subscriptionKey));
+
+ CoveragePeriod coveragePeriod = body.getCoveragePeriod();
+ if (coveragePeriod == null)
+ throw new InvalidTimeException(new ErrorMessage("errors.getsubscriptionresult.NullCoveragePeriod"));
+
+ if (coveragePeriod.getStartPoint() == null || coveragePeriod.getEndPoint() == null)
+ throw new InvalidTimeException(new ErrorMessage("errors.getsubscriptionresult.InvalidDateInCoveragePeriod"));
+
+ GregorianCalendar startPoint = coveragePeriod.getStartPoint().toGregorianCalendar();
+ GregorianCalendar endPoint = coveragePeriod.getEndPoint().toGregorianCalendar();
+ if (startPoint.getTimeInMillis() > endPoint.getTimeInMillis())
+ throw new InvalidTimeException(new ErrorMessage("errors.getsubscriptionresult.StartPointAfterEndPoint", startPoint.toString()));
+
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org