Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.9rc3
-
None
-
None
Description
If we look uddi_v2.xsd,
<xsd:complexType name="categoryBag">
<xsd:sequence>
<xsd:element ref="uddi:keyedReference" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="identifierBag">
<xsd:sequence>
<xsd:element ref="uddi:keyedReference" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
we need a keyedReference at least in categoryBag or identifierBag.
In fetchBusiness mathod of JDBCDataStore.java(src\java\org\apache\juddi\datastore\jdbc). jUDDI get infomation from database, and create the struct:
< IdentifierBag identifierBag = new IdentifierBag();
< identifierBag.setKeyedReferenceVector(BusinessIdentifierTable.select(businessKey,connection));
< business.setIdentifierBag(identifierBag);
<
< CategoryBag categoryBag = new CategoryBag();
< categoryBag.setKeyedReferenceVector(BusinessCategoryTable.select(businessKey,connection));
< business.setCategoryBag(categoryBag);
It's wrong if database table doesn't contain IdentifierTable and CategoryTable. It should be:
> Vector identVector = BusinessIdentifierTable.select(businessKey,connection);
> if (identVector.size() > 0)
>
> Vector categoryVector = BusinessCategoryTable.select(businessKey,connection);
> if (categoryVector.size() > 0)
>
and in fetchService method, we should do same thing:
< CategoryBag bag = new CategoryBag();
< bag.setKeyedReferenceVector(ServiceCategoryTable.select(serviceKey,connection));
< service.setCategoryBag(bag);
—
>
> Vector categoryVector = ServiceCategoryTable.select(serviceKey,connection);
> if (categoryVector.size() > 0)
>