List of usage examples for org.springframework.core.io InputStreamResource InputStreamResource
public InputStreamResource(InputStream inputStream, @Nullable String description)
From source file:edu.internet2.middleware.shibboleth.common.config.SpringConfigurationUtils.java
/** * Loads a set of spring configuration resources into a given application context. * /*from w w w . j a va 2 s. c o m*/ * @param beanRegistry registry of spring beans to be populated with information from the given configurations * @param configurationResources list of spring configuration resources * * @throws ResourceException thrown if there is a problem reading the spring configuration resources into the * registry */ public static void populateRegistry(BeanDefinitionRegistry beanRegistry, List<Resource> configurationResources) throws ResourceException { XmlBeanDefinitionReader configReader = new XmlBeanDefinitionReader(beanRegistry); configReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD); configReader.setDocumentLoader(new SpringDocumentLoader()); int numOfResources = configurationResources.size(); Resource configurationResource; org.springframework.core.io.Resource[] configSources = new org.springframework.core.io.Resource[numOfResources]; for (int i = 0; i < numOfResources; i++) { configurationResource = configurationResources.get(i); if (configurationResource != null && configurationResource.exists()) { configSources[i] = new InputStreamResource(configurationResources.get(i).getInputStream(), configurationResource.getLocation()); } else { log.warn("Configuration resource not loaded because it does not exist: {}", configurationResource.getLocation()); } } try { configReader.loadBeanDefinitions(configSources); } catch (BeanDefinitionStoreException e) { throw new ResourceException("Unable to load Spring bean registry with configuration resources", e); } }
From source file:de.langmi.spring.batch.examples.readers.file.archive.ArchiveMultiResourceItemReader.java
/** * Tries to extract all files in the archives and adds them as resources to * the normal MultiResourceItemReader. Overwrites the Comparator from * the super class to get it working with itemstreams. * * @param executionContext/*from w w w . j av a 2 s . c o m*/ * @throws ItemStreamException */ @Override public void open(ExecutionContext executionContext) throws ItemStreamException { // really used with archives? if (archives != null) { // overwrite the comparator to use description instead of filename this.setComparator(new Comparator<Resource>() { /** Compares resource descriptions. */ @Override public int compare(Resource r1, Resource r2) { return r1.getDescription().compareTo(r2.getDescription()); } }); // get the inputStreams from all files inside the archives wrappedArchives = new TFile[archives.length]; List<Resource> extractedResources = new ArrayList<Resource>(); try { for (int i = 0; i < archives.length; i++) { wrappedArchives[i] = new TFile(archives[i].getFile()); // iterate over each TFile and get the file list // extract only the files, ignore directories List<TFile> fileList = new ArrayList<TFile>(); runNestedDirs(wrappedArchives[i], fileList, filenameFilter); for (TFile tFile : fileList) { extractedResources .add(new InputStreamResource(new TFileInputStream(tFile), tFile.getName())); LOG.info("using extracted file:" + tFile.getName()); } } } catch (Exception ex) { throw new ItemStreamException(ex); } // propagate extracted resources this.setResources(extractedResources.toArray(new Resource[extractedResources.size()])); } super.open(executionContext); }
From source file:de.langmi.spring.batch.examples.readers.file.zip.ZipMultiResourceItemReader.java
/** * Extract only files from the zip archive. * * @param currentZipFile/* w ww . j av a2 s .com*/ * @param extractedResources * @throws IOException */ private static void extractFiles(final ZipFile currentZipFile, final List<Resource> extractedResources) throws IOException { Enumeration<? extends ZipEntry> zipEntryEnum = currentZipFile.entries(); while (zipEntryEnum.hasMoreElements()) { ZipEntry zipEntry = zipEntryEnum.nextElement(); LOG.info("extracting:" + zipEntry.getName()); // traverse directories if (!zipEntry.isDirectory()) { // add inputStream extractedResources .add(new InputStreamResource(currentZipFile.getInputStream(zipEntry), zipEntry.getName())); LOG.info("using extracted file:" + zipEntry.getName()); } } }
From source file:org.jahia.services.importexport.ImportExportBaseService.java
/** * Import a full site zip into a newly created site. * <p/>//from w w w . j av a 2s .co m * zip file can contain all kind of legacy jahia import files or jcr import format. * * @param file Zip file * @param site The new site where to import * @param infos site infos * @param legacyMappingFilePath path to the legacy mappings * @param legacyDefinitionsFilePath path for the legacy definitions * @param session the current JCR session to use for the import * @throws RepositoryException * @throws IOException */ public void importSiteZip(Resource file, JahiaSite site, Map<Object, Object> infos, Resource legacyMappingFilePath, Resource legacyDefinitionsFilePath, JCRSessionWrapper session) throws RepositoryException, IOException { long timerSite = System.currentTimeMillis(); logger.info("Start import for site {}", site != null ? site.getSiteKey() : ""); final CategoriesImportHandler categoriesImportHandler = new CategoriesImportHandler(); final UsersImportHandler usersImportHandler = new UsersImportHandler(site, session); boolean legacyImport = false; List<String[]> catProps = null; List<String[]> userProps = null; Map<String, Long> sizes = new HashMap<String, Long>(); List<String> fileList = new ArrayList<String>(); logger.info("Start analyzing import file {}", file); long timer = System.currentTimeMillis(); getFileList(file, sizes, fileList); logger.info("Done analyzing import file {} in {}", file, DateUtils.formatDurationWords(System.currentTimeMillis() - timer)); Map<String, String> pathMapping = session.getPathMapping(); for (JahiaTemplatesPackage pkg : templatePackageRegistry.getRegisteredModules().values()) { String key = "/modules/" + pkg.getId() + "/"; if (!pathMapping.containsKey(key)) { pathMapping.put(key, "/modules/" + pkg.getId() + "/" + pkg.getVersion() + "/"); } } ZipInputStream zis; if (sizes.containsKey(USERS_XML)) { // Import users first zis = getZipInputStream(file); try { while (true) { ZipEntry zipentry = zis.getNextEntry(); if (zipentry == null) break; String name = zipentry.getName(); if (name.equals(USERS_XML)) { userProps = importUsers(zis, usersImportHandler); break; } zis.closeEntry(); } } finally { closeInputStream(zis); } } // Check if it is an 5.x or 6.1 import : for (Map.Entry<String, Long> entry : sizes.entrySet()) { if (entry.getKey().startsWith("export_")) { legacyImport = true; break; } } if (sizes.containsKey(SITE_PROPERTIES)) { zis = getZipInputStream(file); try { while (true) { ZipEntry zipentry = zis.getNextEntry(); if (zipentry == null) break; String name = zipentry.getName(); if (name.equals(SITE_PROPERTIES)) { importSiteProperties(zis, site, session); break; } zis.closeEntry(); } } finally { closeInputStream(zis); } } if (sizes.containsKey(REPOSITORY_XML)) { // Parse import file to detect sites zis = getZipInputStream(file); try { while (true) { ZipEntry zipentry = zis.getNextEntry(); if (zipentry == null) break; String name = zipentry.getName(); if (name.equals(REPOSITORY_XML)) { timer = System.currentTimeMillis(); logger.info("Start importing " + REPOSITORY_XML); DocumentViewValidationHandler h = new DocumentViewValidationHandler(); h.setSession(session); List<ImportValidator> validators = new ArrayList<ImportValidator>(); SitesValidator sitesValidator = new SitesValidator(); validators.add(sitesValidator); h.setValidators(validators); handleImport(zis, h, name); Map<String, Properties> sites = ((SitesValidatorResult) sitesValidator.getResult()) .getSitesProperties(); for (String s : sites.keySet()) { // Only the first site returned is mapped (if its not the systemsite, which is always the same key) if (!s.equals("systemsite") && !site.getSiteKey().equals("systemsite")) { // Map to the new sitekey pathMapping.put("/sites/" + s + "/", "/sites/" + site.getSiteKey() + "/"); break; } } if (!sizes.containsKey(SITE_PROPERTIES)) { // todo : site properties can be removed and properties get from here } logger.info("Done importing " + REPOSITORY_XML + " in {}", DateUtils.formatDurationWords(System.currentTimeMillis() - timer)); break; } zis.closeEntry(); } } finally { closeInputStream(zis); } importZip(null, file, DocumentViewImportHandler.ROOT_BEHAVIOUR_IGNORE, session, Sets.newHashSet(USERS_XML, CATEGORIES_XML), true); } else { // No repository descriptor - prepare to import files directly pathMapping.put("/", "/sites/" + site.getSiteKey() + "/files/"); } NodeTypeRegistry reg = NodeTypeRegistry.getInstance(); DefinitionsMapping mapping = null; // Import additional files - site.properties, old cateogries.xml , sitepermissions.xml // and eventual plain file from 5.x imports if (!sizes.containsKey(REPOSITORY_XML) || sizes.containsKey(SITE_PROPERTIES) || sizes.containsKey(CATEGORIES_XML) || sizes.containsKey(SITE_PERMISSIONS_XML) || sizes.containsKey(DEFINITIONS_CND) || sizes.containsKey(DEFINITIONS_MAP)) { zis = getZipInputStream(file); try { while (true) { ZipEntry zipentry = zis.getNextEntry(); if (zipentry == null) break; String name = zipentry.getName(); if (name.indexOf('\\') > -1) { name = name.replace('\\', '/'); } if (name.indexOf('/') > -1) { if (!sizes.containsKey(REPOSITORY_XML) && !sizes.containsKey(FILESACL_XML)) { // No repository descriptor - Old import format only name = "/" + name; if (name.startsWith("/content/sites")) { name = pathMapping.get("/") + StringUtils .stripStart(name.replaceFirst("/content/sites/[^/]+/files/", ""), "/"); } else if (name.startsWith("/users")) { Matcher m = Pattern.compile("/users/([^/]+)(/.*)?").matcher(name); if (m.matches()) { name = ServicesRegistry.getInstance().getJahiaUserManagerService() .getUserSplittingRule().getPathForUsername(m.group(1)); name = name + "/files" + ((m.group(2) != null) ? m.group(2) : ""); } } else if (name.startsWith("/content/users")) { Matcher m = Pattern.compile("/content/users/([^/]+)(/.*)?").matcher(name); if (m.matches()) { name = ServicesRegistry.getInstance().getJahiaUserManagerService() .getUserSplittingRule().getPathForUsername(m.group(1)); name = name + ((m.group(2) != null) ? m.group(2) : ""); } } else { name = pathMapping.get("/") + StringUtils.stripStart(name, "/"); } if (!zipentry.isDirectory()) { try { String filename = name.substring(name.lastIndexOf('/') + 1); ensureFile(session, name, zis, JCRContentUtils.getMimeType(filename), site); } catch (Exception e) { logger.error("Cannot upload file " + zipentry.getName(), e); } } else { ensureDir(session, name, site); } } } else if (name.equals(CATEGORIES_XML)) { catProps = importCategoriesAndGetUuidProps(zis, categoriesImportHandler); } else if (name.equals(DEFINITIONS_CND)) { reg = new NodeTypeRegistry(); // this is fishy: a new instance is created here when NodeTypeRegistry is meant to be used as a singleton try { for (Map.Entry<String, File> entry : NodeTypeRegistry.getSystemDefinitionsFiles() .entrySet()) { reg.addDefinitionsFile(entry.getValue(), entry.getKey()); } if (legacyImport) { JahiaCndReaderLegacy r = new JahiaCndReaderLegacy( new InputStreamReader(zis, Charsets.UTF_8), zipentry.getName(), file.getURL().getPath(), reg); r.parse(); } else { reg.addDefinitionsFile(new InputStreamResource(zis, zipentry.getName()), file.getURL().getPath()); } } catch (RepositoryException | ParseException e) { logger.error(e.getMessage(), e); } } else if (name.equals(DEFINITIONS_MAP)) { mapping = new DefinitionsMapping(); mapping.load(zis); } zis.closeEntry(); } } finally { closeInputStream(zis); } } // Import legacy content from 5.x and 6.x if (legacyImport) { long timerLegacy = System.currentTimeMillis(); final String originatingJahiaRelease = (String) infos.get("originatingJahiaRelease"); logger.info("Start legacy import, source version is " + originatingJahiaRelease); if (legacyMappingFilePath != null) { mapping = new DefinitionsMapping(); final InputStream fileInputStream = legacyMappingFilePath.getInputStream(); try { mapping.load(fileInputStream); } finally { IOUtils.closeQuietly(fileInputStream); } } if (legacyDefinitionsFilePath != null) { reg = new NodeTypeRegistry(); if ("6.1".equals(originatingJahiaRelease)) { logger.info("Loading the built in 6.1 definitions before processing the provided custom ones"); final List<String> builtInLegacyDefs = Arrays.asList("01-system-nodetypes.cnd", "02-jahiacore-nodetypes.cnd", "03-files-nodetypes.cnd", "04-jahiacontent-nodetypes.cnd", "05-standard-types.cnd", "10-extension-nodetypes.cnd", "11-preferences-nodetypes.cnd"); for (String builtInLegacyDefsFile : builtInLegacyDefs) { InputStreamReader inputStreamReader = null; try { final InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream( "org/jahia/migration/legacyDefinitions/jahia6/" + builtInLegacyDefsFile); if (inputStream != null) { inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); final JahiaCndReaderLegacy r = new JahiaCndReaderLegacy(inputStreamReader, builtInLegacyDefsFile, file.getURL().getPath(), reg); r.parse(); } else { logger.error("Couldn't load " + builtInLegacyDefsFile); } } catch (ParseException e) { logger.error(e.getMessage(), e); } finally { IOUtils.closeQuietly(inputStreamReader); } } } else { try { for (Map.Entry<String, File> entry : NodeTypeRegistry.getSystemDefinitionsFiles() .entrySet()) { reg.addDefinitionsFile(entry.getValue(), entry.getKey()); } } catch (ParseException e) { logger.error("Cannot parse definitions : " + e.getMessage(), e); } } InputStreamReader streamReader = null; try { streamReader = new InputStreamReader(legacyDefinitionsFilePath.getInputStream(), "UTF-8"); JahiaCndReaderLegacy r = new JahiaCndReaderLegacy(streamReader, legacyDefinitionsFilePath.getFilename(), file.getURL().getPath(), reg); r.parse(); } catch (ParseException e) { logger.error(e.getMessage(), e); } finally { IOUtils.closeQuietly(streamReader); } } // Old import JCRNodeWrapper siteFolder = session.getNode("/sites/" + site.getSiteKey()); zis = new NoCloseZipInputStream(new BufferedInputStream(file.getInputStream())); try { int legacyImportHandlerCtnId = 1; while (true) { ZipEntry zipentry = zis.getNextEntry(); if (zipentry == null) break; String name = zipentry.getName(); if (name.equals(FILESACL_XML)) { logger.info("Importing file " + FILESACL_XML); importFilesAcl(site, file, zis, mapping, fileList); } else if (name.startsWith("export")) { logger.info("Importing file " + name); String languageCode; if (name.indexOf("_") != -1) { languageCode = name.substring(7, name.lastIndexOf(".")); } else { languageCode = site.getLanguagesAsLocales().iterator().next().toString(); } zipentry.getSize(); LegacyImportHandler importHandler = new LegacyImportHandler(session, siteFolder, reg, mapping, LanguageCodeConverters.languageCodeToLocale(languageCode), infos != null ? originatingJahiaRelease : null, legacyPidMappingTool, legacyImportHandlerCtnId); Map<String, List<String>> references = new LinkedHashMap<String, List<String>>(); importHandler.setReferences(references); InputStream documentInput = zis; if (this.xmlContentTransformers != null && this.xmlContentTransformers.size() > 0) { documentInput = new ZipInputStream(file.getInputStream()); while (!name.equals(((ZipInputStream) documentInput).getNextEntry().getName())) ; byte[] buffer = new byte[2048]; final File tmpDirectoryForSite = new File( new File(System.getProperty("java.io.tmpdir"), "jahia-migration"), FastDateFormat.getInstance("yyyy_MM_dd-HH_mm_ss_SSS").format(timerSite) + "_" + site.getSiteKey()); tmpDirectoryForSite.mkdirs(); File document = new File(tmpDirectoryForSite, "export_" + languageCode + "_00_extracted.xml"); final OutputStream output = new BufferedOutputStream(new FileOutputStream(document), 2048); int count = 0; while ((count = documentInput.read(buffer, 0, 2048)) > 0) { output.write(buffer, 0, count); } output.flush(); output.close(); documentInput.close(); for (XMLContentTransformer xct : xmlContentTransformers) { document = xct.transform(document, tmpDirectoryForSite); } documentInput = new FileInputStream(document); } handleImport(documentInput, importHandler, name); legacyImportHandlerCtnId = importHandler.getCtnId(); ReferencesHelper.resolveCrossReferences(session, references); siteFolder.getSession().save(JCRObservationManager.IMPORT); } zis.closeEntry(); } ReferencesHelper.resolveReferencesKeeper(session); siteFolder.getSession().save(JCRObservationManager.IMPORT); } finally { closeInputStream(zis); } logger.info("Done legacy import in {}", DateUtils.formatDurationWords(System.currentTimeMillis() - timerLegacy)); } categoriesImportHandler.setUuidProps(catProps); usersImportHandler.setUuidProps(userProps); // session.save(); session.save(JCRObservationManager.IMPORT); cleanFilesList(fileList); if (legacyImport && this.postImportPatcher != null) { final long timerPIP = System.currentTimeMillis(); logger.info("Executing post import patches"); this.postImportPatcher.executePatches(site); logger.info("Executed post import patches in {}", DateUtils.formatDurationWords(System.currentTimeMillis() - timerPIP)); } logger.info("Done importing site {} in {}", site != null ? site.getSiteKey() : "", DateUtils.formatDurationWords(System.currentTimeMillis() - timerSite)); }
From source file:org.lilyproject.runtime.module.build.ModuleBuilder.java
private Module buildInt(ModuleConfig cfg, ClassLoader classLoader, LilyRuntime runtime) throws ArtifactNotFoundException, MalformedURLException { infolog.info("Starting module " + cfg.getId() + " - " + cfg.getLocation()); ClassLoader previousContextClassLoader = Thread.currentThread().getContextClassLoader(); try {/*from w w w .ja va2s . c o m*/ Thread.currentThread().setContextClassLoader(classLoader); GenericApplicationContext applicationContext = new GenericApplicationContext(); applicationContext.setDisplayName(cfg.getId()); applicationContext.setClassLoader(classLoader); // Note: before loading any beans in the spring container: // * the spring build context needs access to the module, for possible injection & module-protocol resolving during bean initialization // * the module also needs to have the reference to the applicationcontext, as there might be beans trying to get while initializing ModuleImpl module = new ModuleImpl(classLoader, applicationContext, cfg.getDefinition(), cfg.getModuleSource()); SpringBuildContext springBuildContext = new SpringBuildContext(runtime, module, classLoader); SPRING_BUILD_CONTEXT.set(springBuildContext); XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(applicationContext); xmlReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD); xmlReader.setBeanClassLoader(classLoader); for (ModuleSource.SpringConfigEntry entry : cfg.getModuleSource().getSpringConfigs(runtime.getMode())) { InputStream is = entry.getStream(); try { xmlReader.loadBeanDefinitions(new InputStreamResource(is, entry.getLocation() + " in " + cfg.getDefinition().getFile().getAbsolutePath())); } finally { IOUtils.closeQuietly(is, entry.getLocation()); } } applicationContext.refresh(); // Handle the service exports for (SpringBuildContext.JavaServiceExport entry : springBuildContext.getExportedJavaServices()) { Class serviceType = entry.serviceType; if (!serviceType.isInterface()) { throw new LilyRTException("Exported service is not an interface: " + serviceType.getName()); } String beanName = entry.beanName; Object component; try { component = applicationContext.getBean(beanName); } catch (NoSuchBeanDefinitionException e) { throw new LilyRTException("Bean not found for service to export, service type " + serviceType.getName() + ", bean name " + beanName, e); } if (!serviceType.isAssignableFrom(component.getClass())) { throw new LilyRTException( "Exported service does not implemented specified type interface. Bean = " + beanName + ", interface = " + serviceType.getName()); } infolog.debug(" exporting bean " + beanName + " for service " + serviceType.getName()); Object service = shieldJavaService(serviceType, component, module, classLoader); runtime.getJavaServiceManager().addService(serviceType, cfg.getId(), entry.name, service); } module.start(); return module; } catch (Throwable e) { // TODO module source and classloader handle might need disposing! // especially important if the lily runtime is launched as part of a longer-living VM throw new LilyRTException( "Error constructing module defined at " + cfg.getDefinition().getFile().getAbsolutePath(), e); } finally { Thread.currentThread().setContextClassLoader(previousContextClassLoader); SPRING_BUILD_CONTEXT.set(null); } }