/** * * @return The next number that is available for creation of unique file * names; this number is determined by taking the largest number * currently used and incrementing it by one. The method does not * attempt to reuse numbers in 'gaps' caused by deletions (that is, * if numbers 1, 2, 5, and 6 are used, the method returns 7, not 3). * */ protected int getNextFileNumber(String contextPath) { Map fileNumbersByEPR = (Map)getFileNumberTables().get(contextPath); if (fileNumbersByEPR.isEmpty()) return 1; // // create a binary tree of numbers, pick the last one (= largest) // TreeSet sortedNumbers = new TreeSet(fileNumbersByEPR.values()); Integer largest = (Integer)sortedNumbers.last(); return largest.intValue() + 1; }
/** * * Creates the proper file name for the given resource instance and then * delegates creation of the file's contents to the abstract method of * the same name. * * @param epr * @param resource * * @see #getNextFileNumber(String) * @see #createResourceFile(EndpointReference, Resource, File) * */ protected void createResourceFile(EndpointReference epr, Resource resource) throws SoapFault { String contextPath = resource.getContextPath(); int nextNumber = getNextFileNumber(contextPath); String nextFileName = getNextFileName(nextNumber); File resourceTypeDir = getResourceTypeDirectory(contextPath); File resourceFile = new File(resourceTypeDir, nextFileName); createResourceFile(epr, resource, resourceFile); Map fileNumbersByEPR = (Map)getFileNumberTables().get(contextPath); fileNumbersByEPR.put(epr, new Integer(nextNumber)); }
continue; getFileNumberTables().put(contextPath, new HashMap());
Integer fileNumber = getFileNumber(fileName); Map fileNumbersByEPR = (Map)getFileNumberTables().get(contextPath); fileNumbersByEPR.put(resource.getEndpointReference(), fileNumber);
Map fileNumbersByEPR = (Map)getFileNumberTables().get(contextPath); Integer fileNumber = (Integer)fileNumbersByEPR.get(epr); FileNumberFilter filter = new FileNumberFilter(fileNumber);