List of usage examples for javax.xml.registry RegistryException RegistryException
public RegistryException(Throwable cause)
JAXRException
object initialized with the given Throwable
object. From source file:org.freebxml.omar.server.lcm.LifeCycleManagerImpl.java
public RegistryResponse relocateObjects(RequestContext context) throws RegistryException { context = ServerRequestContext.convert(context); RegistryResponse resp = null;// w ww . java 2 s . com RelocateObjectsRequest req = (RelocateObjectsRequest) ((ServerRequestContext) context) .getCurrentRegistryRequest(); Map idToRepositoryMap = ((ServerRequestContext) context).getRepositoryItemsMap(); UserType user = ((ServerRequestContext) context).getUser(); try { RelocationProcessor relocationMgr = new RelocationProcessor(((ServerRequestContext) context)); resp = relocationMgr.relocateObjects(); } catch (Exception e) { ((ServerRequestContext) context).rollback(); throw new RegistryException(e); } ((ServerRequestContext) context).commit(); return resp; }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
public boolean needToVersionRegistryObject(RegistryObjectType ro) throws RegistryException { boolean needToVersion = true; BindingUtility bu = BindingUtility.getInstance(); boolean newObject = false; try {// www. ja v a 2 s . co m needToVersion = isVersionableClass(ro); if (needToVersion) { HashMap slotsMap; // Honour dontVersion flag if specified on request if (!context.getRegistryRequestStack().empty()) { slotsMap = bu.getSlotsFromRequest(context.getCurrentRegistryRequest()); if (slotsMap.containsKey(bu.CANONICAL_SLOT_LCM_DONT_VERSION)) { String val = (String) slotsMap.get(bu.CANONICAL_SLOT_LCM_DONT_VERSION); if (val.trim().equalsIgnoreCase("true")) { needToVersion = false; } } } //Honour dontVersion flag if specified on ro slotsMap = bu.getSlotsFromRegistryObject(ro); if (slotsMap.containsKey(bu.CANONICAL_SLOT_LCM_DONT_VERSION)) { String val = (String) slotsMap.get(bu.CANONICAL_SLOT_LCM_DONT_VERSION); if (val.trim().equalsIgnoreCase("true")) { needToVersion = false; } } } //TODO: //Need to investigate case where not versioning and it is a new object. //Need unit test for this case. if (needToVersion) { versions = getAllRegistryObjectVersions(ro); if (versions.size() == 0) { // If there are any existing versions (ie. ro's with same LID) then we need to version //This is a new ro and therefor need not be versioned needToVersion = false; newObject = true; } } //Must set versionName to match latest versionName if existing object //or set to version 1.1 if new object. if (!needToVersion) { RegistryObjectType lastVersion = getLatestVersionOfRegistryObject(ro); String versionName = null; if (lastVersion == null) { versionName = "1.1"; } else { versionName = lastVersion.getVersionInfo().getVersionName(); //Must bump up versionName for new objects if (newObject) { versionName = nextVersion(versionName); } } VersionInfoType versionInfo = ro.getVersionInfo(); if (versionInfo == null) { versionInfo = bu.rimFac.createVersionInfoType(); ro.setVersionInfo(versionInfo); } versionInfo.setVersionName(versionName); if (!context.getRegistryRequestStack().empty()) { setVersionInfoComment(versionInfo); } } } catch (JAXBException e) { throw new RegistryException(e); } return needToVersion; }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
public void checkRegistryObjectLid(RegistryObjectType ro) throws RegistryException { String id = ro.getId();//w ww . j a v a 2 s. c o m String lid = ro.getLid(); String existingObjectLid = (String) context.getIdToLidMap().get(id); //Assign lid if not specified, validate lid if specified if (existingObjectLid != null) { if (lid == null) { ro.setLid(existingObjectLid); } else { //Validate that lid matches existing objects lid if (!lid.equals(existingObjectLid)) { throw new RegistryException(ServerResourceBundle.getInstance() .getString("message.idDoesNotMatch", new Object[] { lid, existingObjectLid, id })); } } } else { checkRegistryObjectLidOnNewObject(ro); } }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
public boolean needToVersionRepositoryItem(ExtrinsicObjectType eo, RepositoryItem riNew) throws RegistryException { boolean needToVersion = true; try {/*from w ww . j av a 2 s . c o m*/ //dontVersion eo imples dontVersion ro needToVersion = needToVersionRegistryObject(eo); if (needToVersion) { //This is an existing object not a newly submitted object //See if repository item has changed or not. HashMap slotsMap; //Honour dontVersion flag if specified on request if (!context.getRegistryRequestStack().empty()) { slotsMap = bu.getSlotsFromRequest(context.getCurrentRegistryRequest()); if (slotsMap.containsKey(bu.CANONICAL_SLOT_LCM_DONT_VERSION_CONTENT)) { String val = (String) slotsMap.get(bu.CANONICAL_SLOT_LCM_DONT_VERSION_CONTENT); if (val.trim().equalsIgnoreCase("true")) { needToVersion = false; } } } //Honour dontVersion flag if specified on ro slotsMap = bu.getSlotsFromRegistryObject(eo); if (slotsMap.containsKey(bu.CANONICAL_SLOT_LCM_DONT_VERSION_CONTENT)) { String val = (String) slotsMap.get(bu.CANONICAL_SLOT_LCM_DONT_VERSION_CONTENT); if (val.trim().equalsIgnoreCase("true")) { needToVersion = false; } } } if (needToVersion) { if (riNew == null) { needToVersion = false; return needToVersion; } else { RepositoryItem riOld = null; try { riOld = rm.getRepositoryItem(eo.getId()); } catch (RepositoryItemNotFoundException e) { //It is possible that there is no RepositoryItem yet. //Ignore the exception. } catch (ObjectNotFoundException e) { //It is possible that there is no RepositoryItem yet. //Ignore the exception. } if (riOld == null) { needToVersion = false; } else { if (repositoryItemsAreIdentical(riOld, riNew)) { needToVersion = false; } } } } //Must set contentVersionName to match latest versionName if existing object //or set to version 1.1 if new object. if (!needToVersion) { ExtrinsicObjectType lastVersion = (ExtrinsicObjectType) getLatestVersionOfRegistryObject(eo); VersionInfoType contentVersionInfo = eo.getContentVersionInfo(); if (contentVersionInfo == null) { contentVersionInfo = bu.rimFac.createVersionInfoType(); } if (lastVersion == null) { //This is the first ExtrinsicObject version. if (riNew != null) { //This is the first RepositoryItem version. Make sure versionName is "1.1" contentVersionInfo.setVersionName("1.1"); } else { //No repository item means that the contentVersionInfo MUST be set to null contentVersionInfo = null; } } else { //This is not the first ExtrinsicObject version. //Note that contentversionName is set even if no RI is submitted since //it is OK to update just the EO and have new version use last version of RO VersionInfoType lastContentVersionInfo = lastVersion.getContentVersionInfo(); if (lastContentVersionInfo == null) { //Previous version had no repository item String lastContentVersionName = rm.getLatestVersionName(context, eo.getLid()); if (lastContentVersionName != null) { contentVersionInfo.setVersionName(lastContentVersionName); } else { contentVersionInfo.setVersionName("1.1"); } } else { //Previous version had a repository item //Use the last contentVersionName contentVersionInfo.setVersionName(lastContentVersionInfo.getVersionName()); } } eo.setContentVersionInfo(contentVersionInfo); } } catch (JAXBException e) { throw new RegistryException(e); } return needToVersion; }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
/** * Creates a new version of the RepositoryItem associated with specified ExtrinsicObject. * Note that when the RepositoryItem is versioned its ExtrinsicObject must also be versioned. * *//*ww w . ja va 2 s. c o m*/ public RepositoryItem createRepositoryItemVersion(ExtrinsicObjectType eo) throws RegistryException { RepositoryItem riNew = null; try { ExtrinsicObjectType eoNew = (ExtrinsicObjectType) createRegistryObjectVersion(eo); String latestContentVersionName = rm.getLatestVersionName(context, eo.getLid()); String nextContentVersionName = nextVersion(latestContentVersionName); VersionInfoType nextContentVersionInfo = bu.rimFac.createVersionInfoType(); nextContentVersionInfo.setVersionName(nextContentVersionName); //Set the contentComment from the submitted object's contentVersionInfo VersionInfoType submittedContentVersionInfo = eo.getContentVersionInfo(); if (submittedContentVersionInfo != null) { nextContentVersionInfo.setComment(submittedContentVersionInfo.getComment()); } //Update the eo contentVersionName to match newContentVersionName eoNew.setContentVersionInfo(nextContentVersionInfo); RepositoryItem riOld = (RepositoryItem) context.getRepositoryItemsMap().get(eo.getId()); riNew = (RepositoryItem) riOld.clone(); //A new version must have a unique id that matches its new ExtrinsicObject eoNew riNew.setId(eoNew.getId()); //Now remeber in context.newRIVersionMap fro later replacement //Should we be using old or new eo.getId(). //Maybe we dont need newRIVersionMap and newROVersionMap //Lets see how to just use existing idMap and other structures. context.getNewRIVersionMap().put(context.getRepositoryItemsMap().get(eo.getId()), riNew); } catch (CloneNotSupportedException e) { //This cannot happen throw new RegistryException(e); } catch (JAXBException e) { throw new RegistryException(e); } return riNew; }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
private List getAllRegistryObjectVersions(RegistryObjectType ro) throws RegistryException { if (versions == null) { ServerRequestContext queryContext = null; //Note: ORDER BY versionName DESC is not safe because String(1.10) < String(1.9) String query = "SELECT ro.* FROM " + Utility.getInstance().mapTableName(ro) + " ro WHERE ro.lid = '" + ro.getLid() + "'"; try {/* w w w . j ava 2 s. co m*/ AdhocQueryRequest queryRequest = bu.createAdhocQueryRequest(query); queryContext = new ServerRequestContext("VersionProcessor.getAllRegistryObjectVersions", queryRequest); queryContext.setUser(ac.registryOperator); AdhocQueryResponseType queryResp = qm.submitAdhocQuery(queryContext); versions = queryResp.getRegistryObjectList().getIdentifiable(); queryContext.commit(); queryContext = null; } catch (JAXBException e) { throw (new RegistryException(e)); } catch (JAXRException e) { throw (new RegistryException(e)); } finally { if (queryContext != null) { queryContext.rollback(); } } } return (versions); }
From source file:org.freebxml.omar.server.lcm.versioning.VersionProcessor.java
public RegistryObjectType createRegistryObjectVersion(RegistryObjectType ro) throws RegistryException { RegistryObjectType roNew = null;/*from ww w .j av a 2 s. c om*/ try { Utility util = Utility.getInstance(); RegistryObjectType lastVersion = getLatestVersionOfRegistryObject(ro); String nextVersion = null; if (lastVersion == null) { nextVersion = "1.1"; } else { nextVersion = nextVersion(lastVersion.getVersionInfo().getVersionName()); } roNew = bu.cloneRegistryObject(ro); VersionInfoType nextVersionInfo = bu.rimFac.createVersionInfoType(); nextVersionInfo.setVersionName(nextVersion); //Set the comment from the request comment (per the spec) if (!context.getRegistryRequestStack().empty()) { nextVersionInfo.setComment(context.getCurrentRegistryRequest().getComment()); } roNew.setVersionInfo(nextVersionInfo); //A new version must have a unique id String id = ro.getId(); String lid = ro.getLid(); String idNew = id; //Only change id if it already exists in versions //Need to preserve client supplied id in the case where lid is an //existing lid but id is new if (isIdInVersions(id)) { //Make id of next version be lid with ":nextVersion" as suffix, if this id is already in use in a version idNew = lid + ":" + nextVersion; //Utility.getInstance().createId(); roNew.setId(idNew); //Add entry to idMap so old id and refs to it are mapped to idNew context.getIdMap().put(id, idNew); } //Add entry to context.newROVersionMap for later replacement context.getNewROVersionMap().put(ro, roNew); //Assign new ids to all composed RegistryObjects within roNew Set composedObjects = bu.getComposedRegistryObjects(roNew, -1); Iterator iter = composedObjects.iterator(); while (iter.hasNext()) { RegistryObjectType composedObject = (RegistryObjectType) iter.next(); //check for composed object if exist change the id and lid and //also update the idMap. if (objectExists(composedObject.getId())) { String oldId = composedObject.getId(); String newId = oldId + ":" + nextVersion; composedObject.setId(newId); composedObject.setLid(newId); context.getIdMap().put(oldId, newId); } String composedId = composedObject.getId(); String composedLid = composedObject.getLid(); String composedIdNew = composedId; if (!util.isValidRegistryId(composedId)) { // Replace the id if it's not a valid ID already composedIdNew = util.createId(); composedObject.setId(composedIdNew); // Add entry to idMap so old composedId and refs to it are mapped to composedIdNew context.getIdMap().put(composedId, composedIdNew); } if (composedLid == null || composedLid.trim().length() == 0) { composedObject.setLid(composedIdNew); } // Set the parent id of this composed object to point to the new parent bu.setParentIdForComposedObject(composedObject, idNew); } } catch (JAXRException e) { throw new RegistryException(e); } catch (JAXBException e) { throw new RegistryException(e); } return roNew; }
From source file:org.freebxml.omar.server.persistence.rdb.AbstractDAO.java
/** * Gets a List of binding objects from specified ResultSet. *//*from www .ja v a 2s . c om*/ public List getObjects(ResultSet rs, int startIndex, int maxResults) throws RegistryException { List res = new java.util.ArrayList(); try { if (startIndex > 0) { // calling rs.next() is a workaround for some drivers, such // as Derby's, that do not set the cursor during call to // rs.relative(...) rs.next(); boolean onRow = rs.relative(startIndex - 1); } int cnt = 0; while (rs.next()) { Object obj = createObject(); loadObject(obj, rs); res.add(obj); if (++cnt == maxResults) { break; } } } catch (SQLException e) { log.error(ServerResourceBundle.getInstance().getString("message.CaughtException1"), e); throw new RegistryException(e); } catch (JAXBException j) { log.error(ServerResourceBundle.getInstance().getString("message.CaughtException1"), j); throw new RegistryException(j); } return res; }
From source file:org.freebxml.omar.server.persistence.rdb.AbstractDAO.java
/** * Does a bulk delete of a Collection of objects that match the type for this persister. * *///from ww w. ja v a 2 s .co m public void delete(List objects) throws RegistryException { //Return immediatley if no objects to insert if (objects.size() == 0) { return; } log.trace(ServerResourceBundle.getInstance().getString("message.DeletingRowsInTable", new Object[] { new Integer(objects.size()), getTableName() })); action = DAO_ACTION_DELETE; Statement stmt = null; try { stmt = context.getConnection().createStatement(); Iterator iter = objects.iterator(); while (iter.hasNext()) { Object obj = iter.next(); prepareToDelete(obj); String str = getSQLStatementFragment(obj); log.trace("SQL = " + str); stmt.addBatch(str); // HIEOS/BHT (Added block to get rid of MySQL performance bug with DB views). String mirrorImageStr = this.getSQLStatementFragmentForMirrorImage(obj); if (mirrorImageStr != null) { log.trace("SQL = " + mirrorImageStr); // HIEOS/BHT (DEBUG) stmt.addBatch(mirrorImageStr); // Now, DELETE the mirror. } } int[] updateCounts = stmt.executeBatch(); iter = objects.iterator(); while (iter.hasNext()) { Object obj = iter.next(); onDelete(obj); } } catch (SQLException e) { log.error(ServerResourceBundle.getInstance().getString("message.CaughtException1"), e); throw new RegistryException(e); } finally { closeStatement(stmt); } }
From source file:org.freebxml.omar.server.persistence.rdb.AbstractDAO.java
/** * Does a bulk delete of objects based upon parent set for this DAO * *//*from w w w .j a v a 2 s . c om*/ public void deleteByParent() throws RegistryException { PreparedStatement stmt = null; try { if (!hasComposedObject()) { //Do simple deletion if there are no composed objects for this type String str = "DELETE from " + getTableName() + " WHERE " + getParentAttribute() + " = ? "; log.trace("SQL = " + str); stmt = context.getConnection().prepareStatement(str); stmt.setString(1, getParentId()); stmt.execute(); } else { //If there are composed objects for this type then //we must first fetch the objects and then use the //delete(List objects) method so that composed objects //are deleted. List objects = getByParent(); delete(objects); } } catch (SQLException e) { RegistryException exception = new RegistryException(e); throw exception; } catch (JAXRException e) { RegistryException exception = new RegistryException(e); throw exception; } finally { closeStatement(stmt); } }