Author: jochen
Date: Mon Aug 31 00:50:49 2009
New Revision: 809441
URL: http://svn.apache.org/viewvc?rev=809441&view=rev
Log:
Added support for custom object types.
Added:
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
Modified:
labs/jaxmas/trunk/JaxMas/pom.xml
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ClassificationSchemeAccessor.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/OrganizationAccessor.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ROAccessors.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessLifeCycleManagerImpl.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessQueryManagerImpl.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ConceptImpl.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/LifeCycleManagerImpl.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryEntryImpl.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/DerbyDbDriver.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/StmtUser.java
Modified: labs/jaxmas/trunk/JaxMas/pom.xml
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/pom.xml?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/pom.xml (original)
+++ labs/jaxmas/trunk/JaxMas/pom.xml Mon Aug 31 00:50:49 2009
@@ -67,11 +67,6 @@
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
</dependency>
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- <version>10.3.2.1</version>
- </dependency>
</dependencies>
<build>
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ClassificationSchemeAccessor.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ClassificationSchemeAccessor.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ClassificationSchemeAccessor.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ClassificationSchemeAccessor.java
Mon Aug 31 00:50:49 2009
@@ -25,6 +25,7 @@
import java.util.List;
import javax.xml.registry.BusinessQueryManager;
+import javax.xml.registry.FindQualifier;
import javax.xml.registry.JAXRException;
import javax.xml.registry.RegistryService;
import javax.xml.registry.infomodel.ClassificationScheme;
@@ -92,7 +93,11 @@
Collection<?> pExternalLinks) throws JAXRException {
final List<Predicate> predicates = new ArrayList<Predicate>();
if (pFindQualifiers != null && !pFindQualifiers.isEmpty()) {
- throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pFindQualifiers")); //$NON-NLS-1$
+ for (Object o : pFindQualifiers) {
+ if (!FindQualifier.EXACT_NAME_MATCH.equals(o)) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pFindQualifiers")); //$NON-NLS-1$
+ }
+ }
}
if (pNamePatterns != null && !pNamePatterns.isEmpty()) {
predicates.add(new
NamePredicate(asStringCollection(pNamePatterns)));
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/OrganizationAccessor.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/OrganizationAccessor.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/OrganizationAccessor.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/OrganizationAccessor.java
Mon Aug 31 00:50:49 2009
@@ -20,13 +20,22 @@
import java.lang.reflect.UndeclaredThrowableException;
import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import javax.xml.registry.BusinessQueryManager;
+import javax.xml.registry.FindQualifier;
import javax.xml.registry.JAXRException;
+import javax.xml.registry.RegistryService;
import javax.xml.registry.infomodel.Key;
import javax.xml.registry.infomodel.Organization;
+import org.apache.labs.jaxmas.registry.infomodel.NLSStrings;
import org.apache.labs.jaxmas.registry.infomodel.OrganizationImpl;
import org.apache.labs.jaxmas.registry.infomodel.RegistryServiceImpl;
+import org.apache.labs.jaxmas.registry.sql.NamePredicate;
+import org.apache.labs.jaxmas.registry.sql.Predicate;
import org.apache.labs.jaxmas.registry.sql.RegistryObjectLoader;
@@ -75,4 +84,48 @@
public int getRegistryObjectType() {
return ROAccessors.ObjectTypes.ORGANIZATION.ordinal();
}
+
+ @SuppressWarnings("unchecked")
+ private static Collection<String> asStringCollection(Collection<?>
pCollection) {
+ return (Collection<String>) pCollection;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static List<Organization> asOrganizationList(List<?> pList) {
+ return (List<Organization>) pList;
+ }
+
+ /**
+ * Implementation of {...@link
BusinessQueryManager#findOrganizations(Collection, Collection, Collection,
Collection, Collection, Collection)}.
+ */
+ public List<Organization> findOrganizations(
+ final RegistryService pRegistryService, Collection<?>
pFindQualifiers,
+ Collection<?> pNamePatterns, Collection<?>
pClassifications,
+ Collection<?> pSpecifications, Collection<?>
pExternalIdentifiers,
+ Collection<?> pExternalLinks) throws JAXRException {
+ final List<Predicate> predicates = new ArrayList<Predicate>();
+ if (pFindQualifiers != null && !pFindQualifiers.isEmpty()) {
+ for (Object o : pFindQualifiers) {
+ if (!FindQualifier.EXACT_NAME_MATCH.equals(o)) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pFindQualifiers")); //$NON-NLS-1$
+ }
+ }
+ }
+ if (pNamePatterns != null && !pNamePatterns.isEmpty()) {
+ predicates.add(new
NamePredicate(asStringCollection(pNamePatterns)));
+ }
+ if (pClassifications != null && !pClassifications.isEmpty()) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pClassifications")); //$NON-NLS-1$
+ }
+ if (pSpecifications != null && !pSpecifications.isEmpty()) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pSpecifications")); //$NON-NLS-1$
+ }
+ if (pExternalIdentifiers != null &&
!pExternalIdentifiers.isEmpty()) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pExternalIdentifiers")); //$NON-NLS-1$
+ }
+ if (pExternalLinks != null && !pExternalLinks.isEmpty()) {
+ throw new
JAXRException(RegistryServiceImpl.getNLSStrings(pRegistryService).format(NLSStrings.UNSUPPORTED_PARAMETER,
"pExternalLinks")); //$NON-NLS-1$
+ }
+ return asOrganizationList(rol.getResultList(pRegistryService,
predicates));
+ }
}
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ROAccessors.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ROAccessors.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ROAccessors.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/accessor/ROAccessors.java
Mon Aug 31 00:50:49 2009
@@ -29,7 +29,38 @@
* {...@link ROAccessor}.
*/
public class ROAccessors {
- /**
+ /**
+ * The enumeration of builtin taxonomies.
+ */
+ public enum ClassificationSchemes {
+ /**
+ * A classification scheme: ObjectType
+ */
+ OBJECT_TYPE("00000000000000000000000000000001", "ObjectType"),
//$NON-NLS-1$//$NON-NLS-2$
+ /**
+ * A classification scheme: ObjectType
+ */
+ ASSOCIATION_TYPE("00000000000000000000000000000002",
"AssociationType"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ private final String id;
+ private final String name;
+
+ ClassificationSchemes(String pId, String pName) {
+ id = pId;
+ name = pName;
+ }
+
+ /**
+ * Returns the classification schemes id.
+ */
+ public String getId() { return id; }
+ /**
+ * Returns the classification schemes name.
+ */
+ public String getName() { return name; }
+ }
+
+ /**
* The enumeration of available object types.
*/
public enum ObjectTypes {
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessLifeCycleManagerImpl.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessLifeCycleManagerImpl.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessLifeCycleManagerImpl.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessLifeCycleManagerImpl.java
Mon Aug 31 00:50:49 2009
@@ -87,7 +87,7 @@
@SuppressWarnings("unchecked")
@Override
public BulkResponse deleteOrganizations(Collection pOrganizationKeys)
throws JAXRException {
- throw new JAXRException(NLSStrings.OPERATION_NOT_IMPLEMENTED);
+ return deleteObjects(pOrganizationKeys);
}
@SuppressWarnings("unchecked")
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessQueryManagerImpl.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessQueryManagerImpl.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessQueryManagerImpl.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/BusinessQueryManagerImpl.java
Mon Aug 31 00:50:49 2009
@@ -30,9 +30,11 @@
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Key;
+import javax.xml.registry.infomodel.Organization;
import org.apache.labs.jaxmas.registry.accessor.AssociationAccessor;
import org.apache.labs.jaxmas.registry.accessor.ClassificationSchemeAccessor;
+import org.apache.labs.jaxmas.registry.accessor.OrganizationAccessor;
import org.apache.labs.jaxmas.registry.sql.AssociationSourcePredicate;
import org.apache.labs.jaxmas.registry.sql.AssociationTargetPredicate;
import org.apache.labs.jaxmas.registry.sql.AssociationTypePredicate;
@@ -163,7 +165,11 @@
Collection pNamePatterns, Collection pClassifications,
Collection pSpecifications, Collection
pExternalIdentifiers,
Collection pExternalLinks) throws JAXRException {
- throw new JAXRException(NLSStrings.OPERATION_NOT_IMPLEMENTED);
+ final List<Organization> list =
OrganizationAccessor.getInstance().findOrganizations(getRegistryService(),
+ pFindQualifiers, pNamePatterns,
pClassifications,
+ pSpecifications, pExternalIdentifiers,
+ pExternalLinks);
+ return new BulkResponseImpl(list);
}
@SuppressWarnings("unchecked")
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ConceptImpl.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ConceptImpl.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ConceptImpl.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ConceptImpl.java
Mon Aug 31 00:50:49 2009
@@ -82,8 +82,7 @@
@Override
public RegistryObject getParent() throws JAXRException {
- final RegistryObject owner = getOwner();
- return (owner instanceof ClassificationScheme) ? null : owner;
+ return getOwner();
}
@Override
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/LifeCycleManagerImpl.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/LifeCycleManagerImpl.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/LifeCycleManagerImpl.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/LifeCycleManagerImpl.java
Mon Aug 31 00:50:49 2009
@@ -266,7 +266,7 @@
if (LifeCycleManager.TELEPHONE_NUMBER.equals(pInterfaceName)) {
return new TelephoneNumberImpl();
}
- if (LifeCycleManager.VERSIONABLE.equals(pInterfaceName)) {
+ if (LifeCycleManager.VERSIONABLE.equals(pInterfaceName) ||
LifeCycleManager.REGISTRY_ENTRY.equals(pInterfaceName)) {
return
ROAccessors.getROAccessor(ROAccessors.ObjectTypes.REGISTRY_ENTRY).create(getRegistryService());
}
throw new UnsupportedCapabilityException("Not implemented: " +
pInterfaceName); //$NON-NLS-1$
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryEntryImpl.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryEntryImpl.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryEntryImpl.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryEntryImpl.java
Mon Aug 31 00:50:49 2009
@@ -21,10 +21,13 @@
import java.util.Date;
import javax.xml.registry.JAXRException;
+import javax.xml.registry.infomodel.Classification;
+import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Key;
import javax.xml.registry.infomodel.RegistryEntry;
import org.apache.labs.jaxmas.registry.accessor.ROAccessor;
+import org.apache.labs.jaxmas.registry.accessor.ROAccessors;
import org.apache.labs.jaxmas.registry.accessor.RegistryEntryAccessor;
@@ -34,7 +37,8 @@
public class RegistryEntryImpl<RE extends RegistryEntry> extends
RegistryObjectImpl<RE> implements RegistryEntry {
private Date expiration;
private int stability, majorVersion, minorVersion, status;
- private String userVersion;
+ private String userVersion, customType;
+ private Concept customTypeObject;
/**
* Creates a new instance with the given registry service.
@@ -45,56 +49,67 @@
@Override
public Date getExpiration() throws JAXRException {
+ ensureLoaded();
return expiration;
}
@Override
public int getStability() throws JAXRException {
+ ensureLoaded();
return stability;
}
@Override
public int getStatus() throws JAXRException {
+ ensureLoaded();
return status;
}
@Override
public void setExpiration(Date pExpiration) throws JAXRException {
+ ensureLoaded();
expiration = pExpiration;
}
@Override
public void setStability(int pStability) throws JAXRException {
+ ensureLoaded();
stability = pStability;
}
@Override
public int getMajorVersion() throws JAXRException {
+ ensureLoaded();
return majorVersion;
}
@Override
public int getMinorVersion() throws JAXRException {
+ ensureLoaded();
return minorVersion;
}
@Override
public String getUserVersion() throws JAXRException {
+ ensureLoaded();
return userVersion;
}
@Override
public void setMajorVersion(int pVersion) throws JAXRException {
+ ensureLoaded();
majorVersion = pVersion;
}
@Override
public void setMinorVersion(int pVersion) throws JAXRException {
+ ensureLoaded();
minorVersion = pVersion;
}
@Override
public void setUserVersion(String pVersion) throws JAXRException {
+ ensureLoaded();
userVersion = pVersion;
}
@@ -103,4 +118,37 @@
public ROAccessor<RE> getROLoader() {
return (ROAccessor<RE>) RegistryEntryAccessor.getInstance();
}
+
+ public String getCustomType() throws JAXRException {
+ ensureLoaded();
+ return customType;
+ }
+
+ public void setCustomType(String pCustomType) throws JAXRException {
+ ensureLoaded();
+ customType = pCustomType;
+ customTypeObject = null;
+ }
+
+ @Override
+ public void addClassification(Classification pClassification) throws
JAXRException {
+ final Concept concept = pClassification.getConcept();
+ if
(concept.getParent().getKey().getId().equals(ROAccessors.ClassificationSchemes.OBJECT_TYPE.getId()))
{
+ setCustomType(concept.getKey().getId());
+ } else {
+ super.addClassification(pClassification);
+ }
+ }
+
+ @Override
+ public Concept getObjectType() throws JAXRException {
+ final String type = getCustomType();
+ if (type == null) {
+ return super.getObjectType();
+ }
+ if (customTypeObject == null) {
+ customTypeObject = (Concept)
getRegistryService().getBusinessQueryManager().getRegistryObject(type);
+ }
+ return customTypeObject;
+ }
}
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
Mon Aug 31 00:50:49 2009
@@ -18,13 +18,23 @@
--
+DROP TABLE RegistryEntries;
+DROP TABLE Classifications;
+DROP TABLE Associations;
+DROP TABLE Concepts;
+DROP TABLE Ids;
+DROP TABLE RegistryObjectSlotValues;
+DROP TABLE RegistryObjectSlots;
+DROP TABLE LocalizedStrings;
+DROP TABLE RegistryObjects;
DROP TABLE DbInfo;
+
+
CREATE TABLE DbInfo (
version INT NOT NULL
);
-DROP TABLE RegistryObjects;
CREATE TABLE RegistryObjects (
roKey VARCHAR(32) NOT NULL PRIMARY KEY,
roOwnerRestricting VARCHAR(32),
@@ -35,7 +45,6 @@
CONSTRAINT FK_RegistryObjects_OwnerRestricting FOREIGN KEY
(roOwnerRestricting) REFERENCES RegistryObjects ON DELETE RESTRICT
);
-DROP TABLE LocalizedStrings;
CREATE TABLE LocalizedStrings (
roKey VARCHAR(32) NOT NULL,
lsType INT NOT NULL,
@@ -46,19 +55,6 @@
);
CREATE INDEX LocalizedStrings_roKey_locale ON LocalizedStrings (roKey, locale);
-DROP TABLE RegistryEntries;
-CREATE TABLE RegistryEntries (
- roKey VARCHAR(32) NOT NULL PRIMARY KEY,
- expiration TIMESTAMP,
- status INT NOT NULL,
- stability INT NOT NULL,
- majorVersion INT NOT NULL,
- minorVersion INT NOT NULL,
- userVersion VARCHAR(255),
- CONSTRAINT FK_RegistryEntries_RO FOREIGN KEY (roKey) REFERENCES
RegistryObjects ON DELETE CASCADE
-);
-
-DROP TABLE RegistryObjectSlots;
CREATE TABLE RegistryObjectSlots (
id BIGINT NOT NULL PRIMARY KEY,
roKey VARCHAR(32) NOT NULL,
@@ -67,27 +63,23 @@
CONSTRAINT FK_RegistryObjectSlots_RO FOREIGN KEY (roKey) REFERENCES
RegistryObjects ON DELETE CASCADE
);
-DROP TABLE RegistryObjectSlotValues;
CREATE TABLE RegistryObjectSlotValues (
id BIGINT NOT NULL,
val ${CLOB} NOT NULL,
CONSTRAINT FK_RegistryObjectSlotValues_Slot FOREIGN KEY (id) REFERENCES
RegistryObjectSlots ON DELETE CASCADE
);
-DROP TABLE Ids;
CREATE TABLE Ids (
name VARCHAR(32) NOT NULL PRIMARY KEY,
nextValue BIGINT NOT NULL
);
-DROP TABLE Concepts;
CREATE TABLE Concepts (
roKey VARCHAR(32) NOT NULL PRIMARY KEY,
value ${CLOB},
CONSTRAINT FK_Concepts_RO FOREIGN KEY (roKey) REFERENCES RegistryObjects
ON DELETE CASCADE
);
-DROP TABLE Associations;
CREATE TABLE Associations (
roKey VARCHAR(32) NOT NULL PRIMARY KEY,
roKeyTarget VARCHAR(32) NOT NULL,
@@ -96,7 +88,6 @@
CONSTRAINT FK_Associations_Target FOREIGN KEY (roKeyTarget) REFERENCES
RegistryObjects ON DELETE RESTRICT
);
-DROP TABLE Classifications;
CREATE TABLE Classifications (
roKey VARCHAR(32) NOT NULL PRIMARY KEY,
roKeyConcept VARCHAR(32) NOT NULL,
@@ -104,6 +95,19 @@
CONSTRAINT FK_Classifications_Concept FOREIGN KEY (roKeyConcept)
REFERENCES RegistryObjects ON DELETE RESTRICT
);
+CREATE TABLE RegistryEntries (
+ roKey VARCHAR(32) NOT NULL PRIMARY KEY,
+ customType VARCHAR(32),
+ expiration TIMESTAMP,
+ status INT NOT NULL,
+ stability INT NOT NULL,
+ majorVersion INT NOT NULL,
+ minorVersion INT NOT NULL,
+ userVersion VARCHAR(255),
+ CONSTRAINT FK_RegistryEntries_RO FOREIGN KEY (roKey) REFERENCES
RegistryObjects ON DELETE CASCADE,
+ CONSTRAINT FK_ObjectType FOREIGN KEY (customType) REFERENCES Concepts
+);
+
INSERT INTO Ids (name, nextValue) VALUES ('keys', 8000);
INSERT INTO Ids (name, nextValue) VALUES ('Slots', 0);
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
Mon Aug 31 00:50:49 2009
@@ -266,7 +266,7 @@
final Key key = pObject.getKey();
final Key ownerRestricting, ownerCascading;
final Integer pos;
- if (ro instanceof OwnedRegistryObject) {
+ if (ro instanceof OwnedRegistryObject<?>) {
final OwnedRegistryObject<?> oro = (OwnedRegistryObject<?>)
ro;
final RegistryObject roOwner = oro.getOwner();
final Key owner = roOwner == null ? null : roOwner.getKey();
@@ -292,10 +292,10 @@
if (pObject instanceof RegistryEntry) {
RegistryEntryImpl<?> re = (RegistryEntryImpl<?>)
pObject;
- run("INSERT INTO RegistryEntries (roKey, expiration,
status, stability, majorVersion, minorVersion, userVersion) VALUES (?, ?, ?, ?,
?, ?, ?)", //$NON-NLS-1$
- key, re.getExpiration(), new
Integer(re.getStatus()), new Integer(re.getStability()),
- new Integer(re.getMajorVersion()), new
Integer(re.getMinorVersion()),
- re.getUserVersion());
+ run("INSERT INTO RegistryEntries (roKey, customType,
expiration, status, stability, majorVersion, minorVersion, userVersion) VALUES
(?, ?, ?, ?, ?, ?, ?, ?)", //$NON-NLS-1$
+ key, re.getCustomType(),
re.getExpiration(), new Integer(re.getStatus()),
+ new Integer(re.getStability()), new
Integer(re.getMajorVersion()),
+ new Integer(re.getMinorVersion()),
re.getUserVersion());
}
if (pObject instanceof Concept) {
@@ -348,11 +348,11 @@
this.saveSlots(pObject);
if (pObject instanceof RegistryEntry) {
- RegistryEntry re = (RegistryEntry) pObject;
- run("UPDATE RegistryEntries SET expiration=?, status=?,
stability=?, majorVersion=?, minorVersion=?, userVersion=? WHERE roKey=?",
//$NON-NLS-1$
- re.getExpiration(), new
Integer(re.getStatus()), new Integer(re.getStability()),
- new Integer(re.getMajorVersion()), new
Integer(re.getMinorVersion()),
- re.getUserVersion(), key);
+ RegistryEntryImpl<?> re = (RegistryEntryImpl<?>)
pObject;
+ run("UPDATE RegistryEntries SET customType=?,
expiration=?, status=?, stability=?, majorVersion=?, minorVersion=?,
userVersion=? WHERE roKey=?", //$NON-NLS-1$
+ re.getCustomType(), re.getExpiration(),
new Integer(re.getStatus()),
+ new Integer(re.getStability()), new
Integer(re.getMajorVersion()),
+ new Integer(re.getMinorVersion()),
re.getUserVersion(), key);
}
if (pObject instanceof Concept) {
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/DerbyDbDriver.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/DerbyDbDriver.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/DerbyDbDriver.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/DerbyDbDriver.java
Mon Aug 31 00:50:49 2009
@@ -59,7 +59,8 @@
@Override
public boolean isUnknownTableError(SQLException pException) {
- return "42Y55".equals(pException.getSQLState()); //$NON-NLS-1$
+ return "42X05".equals(pException.getSQLState()) //$NON-NLS-1$
+ || "42Y55".equals(pException.getSQLState()); //$NON-NLS-1$
}
@Override
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java
Mon Aug 31 00:50:49 2009
@@ -46,6 +46,9 @@
if ("S0002".equals(pException.getSQLState()) &&
pException.getErrorCode() == -22) { //$NON-NLS-1$
return true;
}
+ if ("S1000".equals(pException.getSQLState()) &&
pException.getErrorCode() == -35) { //$NON-NLS-1$
+ return true;
+ }
return false;
}
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
Mon Aug 31 00:50:49 2009
@@ -167,8 +167,8 @@
@Override
protected int addColumns(StringBuilder pBuilder, int pIndex) {
- pBuilder.append(", re.expiration, re.status, re.stability,
re.majorVersion, re.minorVersion, re.userVersion"); //$NON-NLS-1$
- return pIndex + 6;
+ pBuilder.append(", re.customType, re.expiration, re.status,
re.stability, re.majorVersion, re.minorVersion, re.userVersion"); //$NON-NLS-1$
+ return pIndex + 7;
}
@Override
@@ -191,11 +191,12 @@
throws SQLException, JAXRException {
if (pRegistryObject instanceof RegistryEntry) {
final RegistryEntryImpl<?> re = (RegistryEntryImpl<?>)
pRegistryObject;
- re.setExpiration(pResultSet.getDate(pIndex));
- re.setStability(pResultSet.getInt(pIndex+2));
- re.setMajorVersion(pResultSet.getInt(pIndex+3));
- re.setMinorVersion(pResultSet.getInt(pIndex+4));
- re.setUserVersion(pResultSet.getString(pIndex+5));
+ re.setCustomType(pResultSet.getString(pIndex));
+ re.setExpiration(pResultSet.getDate(pIndex+1));
+ re.setStability(pResultSet.getInt(pIndex+3));
+ re.setMajorVersion(pResultSet.getInt(pIndex+4));
+ re.setMinorVersion(pResultSet.getInt(pIndex+5));
+ re.setUserVersion(pResultSet.getString(pIndex+6));
}
}
}
@@ -518,7 +519,7 @@
final RegistryObjectImpl<?> ro = (RegistryObjectImpl<?>)
pRegistryObject;
ro.setState(ROState.loaded);
- if (pRegistryObject instanceof OwnedRegistryObject) {
+ if (pRegistryObject instanceof OwnedRegistryObject<?>) {
final OwnedRegistryObject<?> oro = (OwnedRegistryObject<?>) ro;
final String ownerKeyRestricting = pResultSet.getString(2);
final String ownerKeyCascading = pResultSet.getString(3);
Modified:
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/StmtUser.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/StmtUser.java?rev=809441&r1=809440&r2=809441&view=diff
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/StmtUser.java
(original)
+++
labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/StmtUser.java
Mon Aug 31 00:50:49 2009
@@ -95,7 +95,7 @@
pStmt.setTimestamp(i+1, ts, cal);
} else if (o instanceof Key) {
pStmt.setString(i+1, ((Key) o).getId());
- } else if (o instanceof Enum) {
+ } else if (o instanceof Enum<?>) {
pStmt.setInt(i+1, ((Enum<?>) o).ordinal());
} else {
throw new
IllegalStateException("Invalid parameter type: " + o.getClass().getName());
//$NON-NLS-1$
Added:
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java?rev=809441&view=auto
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java
(added)
+++
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java
Mon Aug 31 00:50:49 2009
@@ -0,0 +1,90 @@
+package org.apache.labs.jaxmas.registry;
+
+import java.util.Collections;
+
+import javax.xml.registry.Connection;
+import javax.xml.registry.JAXRException;
+import javax.xml.registry.LifeCycleManager;
+import javax.xml.registry.infomodel.Classification;
+import javax.xml.registry.infomodel.ClassificationScheme;
+import javax.xml.registry.infomodel.Concept;
+import javax.xml.registry.infomodel.RegistryEntry;
+import javax.xml.registry.infomodel.RegistryObject;
+
+import org.junit.Test;
+
+
+/**
+ * Test case for custom object types.
+ */
+public class CustomTypeTest extends AbstractInitializedJaxMasTestCase {
+ private static final String MY_TYPE1 =
"{http://namespaces.foo.com/jaxr}MyType1"; //$NON-NLS-1$
+ private static final String MY_TYPE2 =
"{http://namespaces.foo.com/jaxr}MyType2"; //$NON-NLS-1$
+
+ private Concept findObjectType(Connection pConnection, String pName,
String pValue) throws JAXRException {
+ final ClassificationScheme objectTypes =
findClassificationScheme("ObjectType"); //$NON-NLS-1$
+ Concept concept = findConcept(objectTypes, pValue);
+ if (concept == null) {
+ concept =
pConnection.getRegistryService().getBusinessLifeCycleManager().createConcept(objectTypes,
pName, pValue);
+
pConnection.getRegistryService().getBusinessLifeCycleManager().saveConcepts(Collections.singleton(concept));
+ }
+ return concept;
+ }
+
+ @Test public void testCreateCustomObjectType() throws Exception {
+ final Concept myType1, myType2;
+ final RegistryEntry registryEntry;
+ Connection conn = newConnection();
+ try {
+ myType1 = findObjectType(conn, "My Type 1", MY_TYPE1);
//$NON-NLS-1$
+ assertEquals(MY_TYPE1, myType1.getValue());
+
+ myType2 = findObjectType(conn, "My Type 2", MY_TYPE2);
//$NON-NLS-1$
+ assertEquals(MY_TYPE2, myType2.getValue());
+ assertTrue(!myType1.equals(myType2));
+ assertEquals(myType1.getParent(), myType2.getParent());
+
+ registryEntry = (RegistryEntry)
conn.getRegistryService().getBusinessLifeCycleManager().createObject(LifeCycleManager.REGISTRY_ENTRY);
+ final Concept registryEntryType =
registryEntry.getObjectType();
+ assertTrue(!registryEntryType.equals(myType1));
+ assertTrue(!registryEntryType.equals(myType2));
+ assertEquals(registryEntryType.getParent(),
myType1.getParent());
+ assertEquals(registryEntryType.getParent(),
myType2.getParent());
+
+ final Classification cl1 =
conn.getRegistryService().getBusinessLifeCycleManager().createClassification(myType1);
+ registryEntry.addClassification(cl1);
+ assertEquals(myType1, registryEntry.getObjectType());
+
conn.getRegistryService().getBusinessLifeCycleManager().saveObjects(Collections.singleton(registryEntry));
+ conn.close();
+ conn = null;
+ } finally {
+ if (conn != null) { try { conn.close(); } catch
(Throwable t) { /* Ignore me */ } }
+ }
+
+ conn = newConnection();
+ try {
+ final RegistryObject ro1 =
conn.getRegistryService().getBusinessQueryManager().getRegistryObject(registryEntry.getKey().getId());
+ assertEquals(myType1, ro1.getObjectType());
+
+ final Classification cl2 =
conn.getRegistryService().getBusinessLifeCycleManager().createClassification(myType2);
+ ro1.addClassification(cl2);
+ assertEquals(myType2, ro1.getObjectType());
+
conn.getRegistryService().getBusinessLifeCycleManager().saveObjects(Collections.singleton(ro1));
+ conn.close();
+ conn = null;
+ } finally {
+ if (conn != null) { try { conn.close(); } catch
(Throwable t) { /* Ignore me */ } }
+ }
+
+ conn = newConnection();
+ try {
+ final RegistryObject ro2 =
conn.getRegistryService().getBusinessQueryManager().getRegistryObject(registryEntry.getKey().getId());
+ assertEquals(myType2, ro2.getObjectType());
+
+ conn.close();
+ conn = null;
+ } finally {
+ if (conn != null) { try { conn.close(); } catch
(Throwable t) { /* Ignore me */ } }
+ }
+ }
+}
Added:
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
URL:
http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java?rev=809441&view=auto
==============================================================================
---
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
(added)
+++
labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
Mon Aug 31 00:50:49 2009
@@ -0,0 +1,58 @@
+package org.apache.labs.jaxmas.registry;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import javax.xml.registry.BulkResponse;
+import javax.xml.registry.BusinessQueryManager;
+import javax.xml.registry.Connection;
+import javax.xml.registry.FindQualifier;
+import javax.xml.registry.JAXRException;
+import javax.xml.registry.RegistryService;
+import javax.xml.registry.infomodel.Organization;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+
+/**
+ * Test case for handling of organizations.
+ */
+public class OrganizationTestCase extends AbstractJaxMasTestCase {
+ private Organization findOrganization(BusinessQueryManager pBqm, String
pName) throws JAXRException {
+ final BulkResponse br =
pBqm.findOrganizations(Collections.singleton(FindQualifier.EXACT_NAME_MATCH),
+ Collections.singleton(pName), null, null, null,
null);
+ final Collection<?> list = br.getCollection();
+ return (Organization) (list.isEmpty() ? null :
list.iterator().next());
+ }
+
+ /**
+ * Tests creating and deleting an organization.
+ */
+ @Test public void testCreateOrganization() throws Exception {
+ final String name = OrganizationTestCase.class.getName() +
System.currentTimeMillis();
+ Connection conn = newConnection();
+ try {
+ RegistryService service = conn.getRegistryService();
+ Organization org =
findOrganization(service.getBusinessQueryManager(), name);
+ Assert.assertNull(org);
+ org =
service.getBusinessLifeCycleManager().createOrganization(name);
+ Assert.assertNotNull(org);
+
service.getBusinessLifeCycleManager().saveOrganizations(Collections.singleton(org));
+ conn.close();
+ conn = null;
+ conn = newConnection();
+ service = conn.getRegistryService();
+ org =
findOrganization(service.getBusinessQueryManager(), name);
+ Assert.assertNotNull(org);
+
service.getBusinessLifeCycleManager().deleteOrganizations(Collections.singleton(org.getKey()));
+ org =
findOrganization(service.getBusinessQueryManager(), name);
+ Assert.assertNull(org);
+ conn.close();
+ conn = null;
+ } finally {
+ if (conn != null) { try { conn.close(); } catch
(Throwable t) { /* Ignore me */ } }
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]