private void copyResources(Source resourceSource) { for (Entry<String, Resource> resourceToCopy : resourceToCopyMap.entrySet()) { String sourcePath = resourceToCopy.getKey(); Resource targetResource = resourceToCopy.getValue(); try { InputStream inputStream = resourceSource.createInputStream(new Resource(sourcePath)); target.copyTo(targetResource, inputStream); } catch (IOException e) { throw new RuntimeException("Failed to copy " + sourcePath + " to target " + targetResource, e); } } }
@Override public boolean canFindSpecification(Resource resource) throws IOException { return specificationSource.canFind(resource); }
private void addDefaultStyling(Source resourceSource) { String stylesheetContent = resourceSource.readResourceAsString(EMBEDDED_STYLESHEET_RESOURCE); withEmbeddedCSS(stylesheetContent); }
public Specification readSpecification(Resource resource) throws IOException { InputStream inputStream = asHtmlStream(resource); Document document; try { document = xmlParser.parse(inputStream, SimpleFormatter.format("[%s: %s]", specificationSource, resource.getPath())); } catch (ParsingException e) { if (specificationConverter != null) { System.err.println("Error parsing generated HTML:\n" + specificationSource.readAsString(asHtmlStream(resource))); } throw e; } finally { inputStream.close(); } if (specificationConverter != null) { resource = new Resource(resource.getPath().replaceFirst("\\..*$", "\\.html")); } return documentParser.parse(document, resource); }
public Specification readSpecification(Resource resource) throws IOException { InputStream inputStream = asHtmlStream(resource); Document document; try { document = xmlParser.parse(inputStream, SimpleFormatter.format("[%s: %s]", specificationSource, resource.getPath())); } catch (ParsingException e) { if (specificationConverter != null) { System.err.println("Error parsing generated HTML:\n" + specificationSource.readAsString(asHtmlStream(resource))); } throw e; } finally { inputStream.close(); } if (specificationConverter != null) { resource = new Resource(resource.getPath().replaceFirst("\\..*$", "\\.html")); } return documentParser.parse(document, resource); }
private void copyResources(Source resourceSource) { for (Entry<String, Resource> resourceToCopy : resourceToCopyMap.entrySet()) { String sourcePath = resourceToCopy.getKey(); Resource targetResource = resourceToCopy.getValue(); try { InputStream inputStream = resourceSource.createInputStream(new Resource(sourcePath)); target.copyTo(targetResource, inputStream); } catch (IOException e) { throw new RuntimeException("Failed to copy " + sourcePath + " to target " + targetResource, e); } } }
private void addDefaultStyling(Source resourceSource) { String stylesheetContent = resourceSource.readResourceAsString(EMBEDDED_STYLESHEET_RESOURCE); withEmbeddedCSS(stylesheetContent); }
@Override public boolean canFindSpecification(Resource resource) throws IOException { return specificationSource.canFind(resource); }
public InputStream createInputStream(Resource resource) throws IOException { if (resource.getPath().startsWith(prefix)) { return new ByteArrayInputStream("x".getBytes("UTF-8")); } return source.createInputStream(resource); }
private void ensureDocumentHasTogglingScript(Element element) { Element rootElement = element.getRootElement(); if (!rootElementsWithScript.contains(rootElement)) { rootElementsWithScript.add(rootElement); Element head = rootElement.getFirstDescendantNamed("head"); if (head == null) { System.out.println(rootElement.toXML()); } Check.notNull(head, "Document <head> section is missing"); if (head != null) { Element script = new Element("script").addAttribute("type", "text/javascript"); head.prependChild(script); script.appendText(resourceSource.readResourceAsString(TOGGLING_SCRIPT_RESOURCE_PATH)); } } }
private void appendBreadcrumbsTo(Element breadcrumbSpan, Resource documentResource) { Resource packageResource = documentResource.getParent(); while (packageResource != null) { for (SpecificationType specificationType : specificationTypes) { Resource indexPageResource = packageResource.getRelativeResource(getIndexPageName(packageResource, specificationType.getTypeSuffix())); if (!indexPageResource.equals(documentResource) && specificationSource.canFind(indexPageResource)) { try { prependBreadcrumb(breadcrumbSpan, createBreadcrumbElement(documentResource, indexPageResource, specificationType.getConverter())); } catch (Exception e) { System.err.println("Failed to generate breadcrumb: " + e.getMessage()); } break; } } packageResource = packageResource.getParent(); } }
private InputStream asHtmlStream(Resource resource) throws IOException { InputStream inputStream = specificationSource.createInputStream(resource); if (specificationConverter != null) { inputStream = specificationConverter.convert(inputStream, resource.getName()); } if (copySourceHtmlTarget != null) { inputStream = copySourceHtml(resource, inputStream); } return inputStream; }
private void ensureDocumentHasTogglingScript(Element element) { Element rootElement = element.getRootElement(); if (!rootElementsWithScript.contains(rootElement)) { rootElementsWithScript.add(rootElement); Element head = rootElement.getFirstDescendantNamed("head"); if (head == null) { System.out.println(rootElement.toXML()); } Check.notNull(head, "Document <head> section is missing"); if (head != null) { Element script = new Element("script").addAttribute("type", "text/javascript"); head.prependChild(script); script.appendText(resourceSource.readResourceAsString(TOGGLING_SCRIPT_RESOURCE_PATH)); } } }
private void appendBreadcrumbsTo(Element breadcrumbSpan, Resource documentResource) { Resource packageResource = documentResource.getParent(); while (packageResource != null) { for (SpecificationType specificationType : specificationTypes) { Resource indexPageResource = packageResource.getRelativeResource(getIndexPageName(packageResource, specificationType.getTypeSuffix())); if (!indexPageResource.equals(documentResource) && specificationSource.canFind(indexPageResource)) { try { prependBreadcrumb(breadcrumbSpan, createBreadcrumbElement(documentResource, indexPageResource, specificationType.getConverter())); } catch (Exception e) { System.err.println("Failed to generate breadcrumb: " + e.getMessage()); } break; } } packageResource = packageResource.getParent(); } }
private InputStream asHtmlStream(Resource resource) throws IOException { InputStream inputStream = specificationSource.createInputStream(resource); if (specificationConverter != null) { inputStream = specificationConverter.convert(inputStream, resource.getName()); } if (copySourceHtmlTarget != null) { inputStream = copySourceHtml(resource, inputStream); } return inputStream; }
private void withResources(FixtureType fixtureType) { boolean includeDefaultStyling = true; Source resourceSource = sources.get(SourceType.RESOURCE); if (fixtureType.declaresResources()) { ResourceFinder resources = new ResourceFinder(fixtureType); List<ResourceToCopy> sourceFiles = resources.getResourcesToCopy(); for (ResourceToCopy sourceFile : sourceFiles) { if (sourceFile.isStyleSheet()) { if (sourceFile.insertType == InsertType.EMBEDDED) { withEmbeddedCSS(resourceSource.readResourceAsString(sourceFile.getResourceName())); } else { withLinkedCSS(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } else if (sourceFile.isScript()) { if (sourceFile.insertType == InsertType.EMBEDDED) { withEmbeddedJavaScript(resourceSource.readResourceAsString(sourceFile.getResourceName())); } else { withLinkedJavaScript(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } else { withResource(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } includeDefaultStyling = resources.includeDefaultStyling(); withDocumentParsingListener(new ResourceReferenceRemover(sourceFiles)); } if (includeDefaultStyling) { addDefaultStyling(resourceSource); } }
private String getBreadcrumbWordingForResource(Resource indexPageResource, SpecificationConverter specificationConverter) throws IOException { String breadcrumbWording = breadcrumbWordingCache.get(indexPageResource); if (breadcrumbWording == null) { InputStream inputStream = specificationSource.createInputStream(indexPageResource); try { if (specificationConverter != null) { inputStream = specificationConverter.convert(inputStream, indexPageResource.getName()); } Document document = xmlParser.parse(inputStream, SimpleFormatter.format("[%s: %s]", specificationSource, indexPageResource.getPath())); breadcrumbWording = getBreadcrumbWording(new Element(document.getRootElement()), indexPageResource); breadcrumbWordingCache.put(indexPageResource, breadcrumbWording); } finally { inputStream.close(); } } return breadcrumbWording; }
private void withResources(FixtureType fixtureType) { boolean includeDefaultStyling = true; Source resourceSource = sources.get(SourceType.RESOURCE); if (fixtureType.declaresResources()) { ResourceFinder resources = new ResourceFinder(fixtureType); List<ResourceToCopy> sourceFiles = resources.getResourcesToCopy(); for (ResourceToCopy sourceFile : sourceFiles) { if (sourceFile.isStyleSheet()) { if (sourceFile.insertType == InsertType.EMBEDDED) { withEmbeddedCSS(resourceSource.readResourceAsString(sourceFile.getResourceName())); } else { withLinkedCSS(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } else if (sourceFile.isScript()) { if (sourceFile.insertType == InsertType.EMBEDDED) { withEmbeddedJavaScript(resourceSource.readResourceAsString(sourceFile.getResourceName())); } else { withLinkedJavaScript(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } else { withResource(sourceFile.getResourceName(), new Resource(sourceFile.getResourceName())); } } includeDefaultStyling = resources.includeDefaultStyling(); withDocumentParsingListener(new ResourceReferenceRemover(sourceFiles)); } if (includeDefaultStyling) { addDefaultStyling(resourceSource); } }
private String getBreadcrumbWordingForResource(Resource indexPageResource, SpecificationConverter specificationConverter) throws IOException { String breadcrumbWording = breadcrumbWordingCache.get(indexPageResource); if (breadcrumbWording == null) { InputStream inputStream = specificationSource.createInputStream(indexPageResource); try { if (specificationConverter != null) { inputStream = specificationConverter.convert(inputStream, indexPageResource.getName()); } Document document = xmlParser.parse(inputStream, SimpleFormatter.format("[%s: %s]", specificationSource, indexPageResource.getPath())); breadcrumbWording = getBreadcrumbWording(new Element(document.getRootElement()), indexPageResource); breadcrumbWordingCache.put(indexPageResource, breadcrumbWording); } finally { inputStream.close(); } } return breadcrumbWording; }