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/08 02:37:50 UTC
svn commit: r763056 - in /webservices/juddi/branches/v3_trunk:
juddi-core/src/main/java/org/apache/juddi/api/impl/
juddi-core/src/main/java/org/apache/juddi/model/
juddi-core/src/main/java/org/apache/juddi/validation/
juddi-core/src/main/resources/ jud...
Author: jfaath
Date: Wed Apr 8 00:37:49 2009
New Revision: 763056
URL: http://svn.apache.org/viewvc?rev=763056&view=rev
Log:
working on subscription api: saving subscriptions
Added:
webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java (with props)
webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java (with props)
Removed:
webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriberSaveTest.java
webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriberSaveTest.java
Modified:
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/model/BusinessDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ContactDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDocDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/OverviewDocDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ServiceDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Subscription.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelInstanceInfoDescr.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/UddiEntityPublisher.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIApi.java
webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties
webservices/juddi/branches/v3_trunk/uddi-tck/src/main/java/org/uddi/api_v3/tck/TckSubscriber.java
webservices/juddi/branches/v3_trunk/uddi-tck/src/main/resources/uddi_data/subscription/subscription1.xml
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=763056&r1=763055&r2=763056&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 8 00:37:49 2009
@@ -32,13 +32,15 @@
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.uddi.v3_service.UDDISubscriptionPortType;
import org.apache.juddi.mapping.MappingApiToModel;
+import org.apache.juddi.model.UddiEntityPublisher;
import org.apache.juddi.query.PersistenceManager;
+import org.apache.juddi.validation.ValidateSubscription;
@WebService(serviceName="UDDISubscriptionService",
endpointInterface="org.uddi.v3_service.UDDISubscriptionPortType",
targetNamespace = "urn:uddi-org:sub_v3_portType")
-public class UDDISubscriptionImpl implements UDDISubscriptionPortType {
+public class UDDISubscriptionImpl extends AuthenticatedService implements UDDISubscriptionPortType {
public void deleteSubscription(DeleteSubscription body)
@@ -96,52 +98,21 @@
public void saveSubscription(String authInfo,
Holder<List<Subscription>> subscription)
throws DispositionReportFaultMessage {
- EntityManager em = PersistenceManager.getEntityManager();
- EntityTransaction tx = em.getTransaction();
- tx.begin();
-
- if (subscription != null) {
- List<org.uddi.sub_v3.Subscription> apiSubscriptionList = subscription.value;
- for (org.uddi.sub_v3.Subscription apiSubscription : apiSubscriptionList) {
- org.apache.juddi.model.Subscription modelSubscription = new org.apache.juddi.model.Subscription();
- if ((apiSubscription.getSubscriptionKey() != null)
- && (!"".equals(apiSubscription.getSubscriptionKey()))) {
- modelSubscription = em.find(org.apache.juddi.model.Subscription.class,
- apiSubscription.getSubscriptionKey());
- }
- MappingApiToModel.mapSubscription(apiSubscription, modelSubscription);
- em.persist(modelSubscription);
- }
- }
-
- tx.commit();
- em.close();
- }
-
- public void saveSubscription(String authInfo,
- SaveSubscription subscription)
- throws DispositionReportFaultMessage {
+ EntityManager em = PersistenceManager.getEntityManager();
+ EntityTransaction tx = em.getTransaction();
+ tx.begin();
- List<org.uddi.sub_v3.Subscription> apiSubscriptionList = subscription.getSubscription();
+ UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+ new ValidateSubscription(publisher).validateSubscriptions(em, subscription.value);
- EntityManager em = PersistenceManager.getEntityManager();
- EntityTransaction tx = em.getTransaction();
- tx.begin();
- if (apiSubscriptionList != null) {
- for (org.uddi.sub_v3.Subscription apiSubscription : apiSubscriptionList) {
- org.apache.juddi.model.Subscription modelSubscription = null;
- if ((apiSubscription.getSubscriptionKey() != null)
- && (!"".equals(apiSubscription.getSubscriptionKey()))) {
- modelSubscription = em.find(org.apache.juddi.model.Subscription.class,
- apiSubscription.getSubscriptionKey());
- }
- MappingApiToModel.mapSubscription(apiSubscription, modelSubscription);
- em.persist(modelSubscription);
- }
- }
-
- tx.commit();
- em.close();
+ List<org.uddi.sub_v3.Subscription> apiSubscriptionList = subscription.value;
+ for (org.uddi.sub_v3.Subscription apiSubscription : apiSubscriptionList) {
+
+ }
+
+ tx.commit();
+ em.close();
}
+
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessDescr.java Wed Apr 8 00:37:49 2009
@@ -80,7 +80,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ContactDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ContactDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ContactDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ContactDescr.java Wed Apr 8 00:37:49 2009
@@ -79,7 +79,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDescr.java Wed Apr 8 00:37:49 2009
@@ -79,7 +79,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDocDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDocDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDocDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/InstanceDetailsDocDescr.java Wed Apr 8 00:37:49 2009
@@ -83,7 +83,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/OverviewDocDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/OverviewDocDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/OverviewDocDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/OverviewDocDescr.java Wed Apr 8 00:37:49 2009
@@ -81,7 +81,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ServiceDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ServiceDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ServiceDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/ServiceDescr.java Wed Apr 8 00:37:49 2009
@@ -78,7 +78,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Subscription.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Subscription.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Subscription.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Subscription.java Wed Apr 8 00:37:49 2009
@@ -15,13 +15,19 @@
* limitations under the License.
*/
+import java.util.Date;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Lob;
import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
/**
* @author <a href="mailto:kurt@apache.org">Kurt T Stam</a>
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
*/
@Entity
@Table(name = "juddiv3_subscription")
@@ -29,8 +35,11 @@
private static final long serialVersionUID = 1L;
private String subscriptionKey;
+ private String subscriptionFilter;
private String bindingKey;
private String notificationInterval;
+ private Integer maxEntities;
+ private Date expiresAfter;
public Subscription() {
}
@@ -47,28 +56,50 @@
public String getSubscriptionKey() {
return this.subscriptionKey;
}
-
public void setSubscriptionKey(String subscriptionKey) {
this.subscriptionKey = subscriptionKey;
}
+ @Lob
+ @Column(name = "subscription_filter", nullable = false)
+ public String getSubscriptionFilter() {
+ return subscriptionFilter;
+ }
+ public void setSubscriptionFilter(String subscriptionFilter) {
+ this.subscriptionFilter = subscriptionFilter;
+ }
+
@Column(name = "binding_key", nullable = false, length = 255)
public String getBindingKey() {
return this.bindingKey;
}
-
public void setBindingKey(String bindingKey) {
this.bindingKey = bindingKey;
}
@Column(name = "notification_interval", nullable = false)
-
public String getNotificationInterval() {
return this.notificationInterval;
}
-
public void setNotificationInterval(String notificationInterval) {
this.notificationInterval = notificationInterval;
}
+ @Column(name = "max_entities")
+ public Integer getMaxEntities() {
+ return maxEntities;
+ }
+ public void setMaxEntities(Integer maxEntities) {
+ this.maxEntities = maxEntities;
+ }
+
+ @Temporal(TemporalType.TIMESTAMP)
+ @Column(name = "expires_after", length = 29)
+ public Date getExpiresAfter() {
+ return expiresAfter;
+ }
+ public void setExpiresAfter(Date expiresAfter) {
+ this.expiresAfter = expiresAfter;
+ }
+
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelDescr.java Wed Apr 8 00:37:49 2009
@@ -79,7 +79,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelInstanceInfoDescr.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelInstanceInfoDescr.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelInstanceInfoDescr.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/TmodelInstanceInfoDescr.java Wed Apr 8 00:37:49 2009
@@ -78,7 +78,7 @@
this.langCode = langCode;
}
- @Column(name = "descr", nullable = false)
+ @Column(name = "descr", nullable = false, length = 1024)
public String getDescr() {
return this.descr;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/UddiEntityPublisher.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/UddiEntityPublisher.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/UddiEntityPublisher.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/UddiEntityPublisher.java Wed Apr 8 00:37:49 2009
@@ -51,7 +51,7 @@
}
@Id
- @Column(name = "authorized_name", nullable = false, length = 20)
+ @Column(name = "authorized_name", nullable = false, length = 255)
public String getAuthorizedName() {
return this.authorizedName;
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java Wed Apr 8 00:37:49 2009
@@ -1,3 +1,20 @@
+/*
+ * 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.validation;
import java.util.ArrayList;
@@ -25,6 +42,9 @@
import org.uddi.custody_v3.TransferEntities;
import org.uddi.v3_service.DispositionReportFaultMessage;
+/**
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
public class ValidateCustodyTransfer extends ValidateUDDIApi {
public ValidateCustodyTransfer(UddiEntityPublisher publisher) {
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java Wed Apr 8 00:37:49 2009
@@ -304,7 +304,6 @@
}
}
}
-
public void validateBusinessEntity(EntityManager em, org.uddi.api_v3.BusinessEntity businessEntity) throws DispositionReportFaultMessage {
@@ -345,7 +344,7 @@
if (!entityExists) {
// Check to make sure key isn't used by another entity.
- if (em.find(UddiEntity.class, entityKey) != null)
+ if (!isUniqueKey(em, entityKey))
throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.KeyExists", entityKey));
}
@@ -498,7 +497,7 @@
if (!entityExists) {
// Check to make sure key isn't used by another entity.
- if (em.find(UddiEntity.class, entityKey) != null)
+ if (!isUniqueKey(em, entityKey))
throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.KeyExists", entityKey));
}
@@ -629,7 +628,7 @@
if (!entityExists) {
// Check to make sure key isn't used by another entity.
- if (em.find(UddiEntity.class, entityKey) != null)
+ if (!isUniqueKey(em, entityKey))
throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.KeyExists", entityKey));
}
@@ -698,7 +697,7 @@
if (!entityExists) {
// Check to make sure key isn't used by another entity.
- if (em.find(UddiEntity.class, entityKey) != null)
+ if (!isUniqueKey(em, entityKey))
throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.KeyExists", entityKey));
}
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=763056&r1=763055&r2=763056&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 8 00:37:49 2009
@@ -17,7 +17,20 @@
package org.apache.juddi.validation;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.error.ErrorMessage;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.KeyUnavailableException;
+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.SaveSubscription;
+import org.uddi.sub_v3.SubscriptionFilter;
+import org.uddi.v3_service.DispositionReportFaultMessage;
/**
* @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
@@ -28,4 +41,119 @@
super(publisher);
}
+ public void validateSubscriptions(EntityManager em, List<org.uddi.sub_v3.Subscription> entityList) throws DispositionReportFaultMessage {
+
+ // No null or empty list
+ if (entityList == null || entityList.size() == 0)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.savesubscription.NoInput"));
+
+ for (org.uddi.sub_v3.Subscription entity : entityList) {
+ validateSubscription(em, entity);
+ }
+ }
+
+ public void validateSubscription(EntityManager em, org.uddi.sub_v3.Subscription subscription) throws DispositionReportFaultMessage {
+
+ // A supplied subscription can't be null
+ if (subscription == null)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.NullInput"));
+
+ boolean entityExists = false;
+ String entityKey = subscription.getSubscriptionKey();
+ if (entityKey == null || entityKey.length() == 0) {
+ KeyGenerator keyGen = KeyGeneratorFactory.getKeyGenerator();
+ entityKey = keyGen.generate();
+ subscription.setSubscriptionKey(entityKey);
+ }
+ else {
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ subscription.setSubscriptionKey(entityKey);
+
+ Object obj = em.find(org.apache.juddi.model.Subscription.class, entityKey);
+ if (obj != null) {
+ entityExists = true;
+
+ // Subscriptions don't specify ownership. Therefore, anyone can change a subscription (if they have the key).
+ // This could be implemented by adding the authorizedName field to the model class.
+ // Make sure publisher owns this entity.
+ //if (!publisher.isOwner((UddiEntity)obj))
+ // throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
+ }
+ else {
+ // Inside this block, we have a key proposed by the publisher on a new entity
+
+ // Validate key and then check to see that the proposed key is valid for this publisher
+ ValidateUDDIKey.validateUDDIv3Key(entityKey);
+ if (!publisher.isValidPublisherKey(em, entityKey))
+ throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.BadPartition", entityKey));
+
+ }
+
+ }
+
+ if (!entityExists) {
+ // Check to make sure key isn't used by another entity.
+ if (!isUniqueKey(em, entityKey))
+ throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.KeyExists", entityKey));
+ }
+
+
+ validateSubscriptionFilter(subscription.getSubscriptionFilter(), entityExists);
+ }
+
+ public void validateSubscriptionFilter(SubscriptionFilter subscriptionFilter, boolean entityExists) throws DispositionReportFaultMessage {
+ if (!entityExists && subscriptionFilter == null)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.NoFilterOnNewSubscription"));
+
+ int filterCount = 0;
+ ValidateInquiry validateInquiry = new ValidateInquiry(publisher);
+ if (subscriptionFilter.getFindBinding() != null) {
+ filterCount++;
+ validateInquiry.validateFindBinding(subscriptionFilter.getFindBinding());
+ }
+ if (subscriptionFilter.getFindBusiness() != null) {
+ filterCount++;
+ validateInquiry.validateFindBusiness(subscriptionFilter.getFindBusiness());
+ }
+ if (subscriptionFilter.getFindService() != null) {
+ filterCount++;
+ validateInquiry.validateFindService(subscriptionFilter.getFindService());
+ }
+ if (subscriptionFilter.getFindTModel() != null) {
+ filterCount++;
+ validateInquiry.validateFindTModel(subscriptionFilter.getFindTModel(), false);
+ }
+ if (subscriptionFilter.getFindRelatedBusinesses() != null) {
+ filterCount++;
+ validateInquiry.validateFindRelatedBusinesses(subscriptionFilter.getFindRelatedBusinesses(), false);
+ }
+ if (subscriptionFilter.getGetBindingDetail() != null) {
+ filterCount++;
+ validateInquiry.validateGetBindingDetail(subscriptionFilter.getGetBindingDetail());
+ }
+ if (subscriptionFilter.getGetBusinessDetail() != null) {
+ filterCount++;
+ validateInquiry.validateGetBusinessDetail(subscriptionFilter.getGetBusinessDetail());
+ }
+ if (subscriptionFilter.getGetServiceDetail() != null) {
+ filterCount++;
+ validateInquiry.validateGetServiceDetail(subscriptionFilter.getGetServiceDetail());
+ }
+ if (subscriptionFilter.getGetTModelDetail() != null) {
+ filterCount++;
+ validateInquiry.validateGetTModelDetail(subscriptionFilter.getGetTModelDetail());
+ }
+ if (subscriptionFilter.getGetAssertionStatusReport() != null) {
+ filterCount++;
+ }
+
+ if (!entityExists && filterCount == 0)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.NoFilterOnNewSubscription"));
+
+ if (filterCount > 1)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.subscription.TooManyFilters", String.valueOf(filterCount)));
+
+ }
+
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIApi.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIApi.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIApi.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateUDDIApi.java Wed Apr 8 00:37:49 2009
@@ -18,8 +18,12 @@
package org.apache.juddi.validation;
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.model.Subscription;
import org.apache.juddi.error.ErrorMessage;
import org.apache.juddi.error.UnsupportedException;
+import org.apache.juddi.model.UddiEntity;
import org.apache.juddi.model.UddiEntityPublisher;
import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -46,4 +50,15 @@
throw new UnsupportedException(new ErrorMessage("errors.Unsupported"));
}
+ public static boolean isUniqueKey(EntityManager em, String entityKey) {
+ Object obj = em.find(UddiEntity.class, entityKey);
+ if (obj != null)
+ return false;
+
+ obj = em.find(Subscription.class, entityKey);
+ if (obj != null)
+ return false;
+
+ return true;
+ }
}
Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties Wed Apr 8 00:37:49 2009
@@ -146,6 +146,10 @@
errors.transferentities.TokenNotFound=The supplied transfer token was not found
errors.transferentities.TokenExpired=The supplied transfer token has expired
errors.transferentities.KeyMismatch=A supplied key does not match a key associated with the transfer request
+errors.savesubscription.NoInput=At least one Subscription must be provided
+errors.subscription.NullInput=The subscription structure cannot be blank
+errors.subscription.NoFilterOnNewSubscription=No subscription filter was provided on this new subscription request
+errors.subscription.TooManyFilters=Only one filter is allowed per subscription request
#-- jUDDI-specific publisher messages
errors.savepublisher.NoInput=At least one Publisher must be provided
Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java?rev=763056&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java Wed Apr 8 00:37:49 2009
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2001-2009 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 org.apache.log4j.Logger;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.uddi.api_v3.tck.TckBusiness;
+import org.uddi.api_v3.tck.TckPublisher;
+import org.uddi.api_v3.tck.TckPublisherAssertion;
+import org.uddi.api_v3.tck.TckSecurity;
+import org.uddi.api_v3.tck.TckSubscriber;
+import org.uddi.api_v3.tck.TckTModel;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * @author <a href="mailto:tcunningh@apache.org">Tom Cunningham</a>
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+public class API_080_SubscriptionTest
+{
+ private TckSubscriber tckSubscriber = new TckSubscriber(new UDDISubscriptionImpl(), new UDDISecurityImpl());
+ private static Logger logger = Logger.getLogger(API_060_PublisherAssertionTest.class);
+
+ private static API_080_SubscriptionTest api010 = new API_080_SubscriptionTest();
+
+ @Test
+ public void saveSubscriber() {
+ tckSubscriber.saveSubscription();
+ }
+
+ @Test
+ public void deleteSubscriber() {
+ tckSubscriber.deleteSubscription();
+ }
+}
Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_080_SubscriptionTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java?rev=763056&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java (added)
+++ webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java Wed Apr 8 00:37:49 2009
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2001-2009 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.client;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.helpers.Loader;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.uddi.api_v3.client.config.ClientConfig;
+import org.uddi.api_v3.client.config.Property;
+import org.uddi.api_v3.client.transport.Transport;
+import org.uddi.api_v3.tck.TckSubscriber;
+import org.uddi.v3_service.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * @author <a href="mailto:tcunningh@apache.org">Tom Cunningham</a>
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+public class UDDI_080_SubscriptionTest
+{
+ private static Logger logger = Logger.getLogger(UDDI_080_SubscriptionTest.class);
+ private static TckSubscriber tckSubscriber = null;
+
+ @BeforeClass
+ public static void setup() {
+ logger.debug("Getting subscriber proxy..");
+ try {
+ String clazz = ClientConfig.getConfiguration().getString(Property.UDDI_PROXY_TRANSPORT,Property.DEFAULT_UDDI_PROXY_TRANSPORT);
+ Class<?> transportClass = Loader.loadClass(clazz);
+ if (transportClass!=null) {
+ Transport transport = (Transport) transportClass.newInstance();
+
+ UDDISecurityPortType security = transport.getSecurityService();
+ UDDISubscriptionPortType subscriber = transport.getSubscriptionService();
+ tckSubscriber = new TckSubscriber(subscriber, security);
+ } else {
+ Assert.fail();
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ Assert.fail("Could not obtain authInfo token.");
+ }
+ }
+
+ @Test
+ public void saveSubscription() {
+ tckSubscriber.saveSubscription();
+ }
+
+ @Test
+ public void deleteSubscription() {
+ tckSubscriber.deleteSubscription();
+ }
+}
Propchange: webservices/juddi/branches/v3_trunk/uddi-client/src/test/java/org/apache/juddi/client/UDDI_080_SubscriptionTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: webservices/juddi/branches/v3_trunk/uddi-tck/src/main/java/org/uddi/api_v3/tck/TckSubscriber.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/uddi-tck/src/main/java/org/uddi/api_v3/tck/TckSubscriber.java?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/uddi-tck/src/main/java/org/uddi/api_v3/tck/TckSubscriber.java (original)
+++ webservices/juddi/branches/v3_trunk/uddi-tck/src/main/java/org/uddi/api_v3/tck/TckSubscriber.java Wed Apr 8 00:37:49 2009
@@ -14,6 +14,11 @@
*/
package org.uddi.api_v3.tck;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.ws.Holder;
+
import org.junit.Assert;
import org.junit.Test;
import org.uddi.sub_v3.SaveSubscription;
@@ -37,24 +42,25 @@
this.security = security;
}
- public void saveSubscriber() {
+ public void saveSubscription() {
try {
String authInfo = TckSecurity.getAuthToken(security, "root", "");
-
- SaveSubscription ss = new SaveSubscription();
- ss.setAuthInfo(authInfo);
Subscription subIn = (Subscription)EntityCreator.buildFromDoc(SUBSCRIPTION_XML, "org.uddi.sub_v3");
- ss.getSubscription().add(subIn);
- subscription.saveSubscription(authInfo, null);
+ List<Subscription> subscriptionList = new ArrayList<Subscription>();
+ subscriptionList.add(subIn);
+ Holder<List<Subscription>> subscriptionHolder = new Holder<List<Subscription>>();
+ subscriptionHolder.value = subscriptionList;
+
+ subscription.saveSubscription(authInfo, subscriptionHolder);
+
} catch (Exception e) {
e.printStackTrace();
Assert.fail("No exception should be thrown");
}
}
- @Test
- public void deleteSubscriber() {
+ public void deleteSubscription() {
try {
String authInfo = TckSecurity.getAuthToken(security, "root", "");
System.out.println("AUTHINFO=" + authInfo);
Modified: webservices/juddi/branches/v3_trunk/uddi-tck/src/main/resources/uddi_data/subscription/subscription1.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/uddi-tck/src/main/resources/uddi_data/subscription/subscription1.xml?rev=763056&r1=763055&r2=763056&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/uddi-tck/src/main/resources/uddi_data/subscription/subscription1.xml (original)
+++ webservices/juddi/branches/v3_trunk/uddi-tck/src/main/resources/uddi_data/subscription/subscription1.xml Wed Apr 8 00:37:49 2009
@@ -14,23 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- */ -->
-<subscription xmlns="urn:uddi-org:sub_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace"
- subscriptionKey="uddi:juddi.apache.org:joepublisher:subscription">
- <subscriptionFilter>
- <find_service xmlns="urn:uddi-org:api_v3">
- <findQualifiers>
- <findQualifier> uddi:uddi.org:findqualifier:sql99:like
- </findQualifier>
- </findQualifiers>
- <categoryBag>
- <keyedReference tModeKey="uddi:uddi.org:ubr:taxonomy:naics"
- keyName="Motor Vehicle Parts" keyValue="42112_" />
- </categoryBag>
- </find_service>
- </subscriptionFilter>
- <bindingKey> bindingKeyOfTheClientsNotifySubscriptionListenerService
- </bindingKey>
- <notificationInterval>P5D</notificationInterval>
- <maxEntities>1000</maxEntities>
+ */
+-->
+<subscription xmlns="urn:uddi-org:sub_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" subscriptionKey="uddi:juddi.apache.org:joepublisher:subscription">
+ <subscriptionFilter>
+ <find_service xmlns="urn:uddi-org:api_v3">
+ <findQualifiers>
+ <findQualifier>uddi:uddi.org:findqualifier:sql99:like</findQualifier>
+ </findQualifiers>
+ <categoryBag>
+ <keyedReference tModelKey="uddi:uddi.org:ubr:taxonomy:naics" keyName="Motor Vehicle Parts" keyValue="42112_" />
+ </categoryBag>
+ </find_service>
+ </subscriptionFilter>
+ <bindingKey>bindingKeyOfTheClientsNotifySubscriptionListenerService</bindingKey>
+ <notificationInterval>P5D</notificationInterval>
+ <maxEntities>1000</maxEntities>
</subscription>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org