/** * Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com) * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package com.gistlabs.mechanize.document.documentElements; import com.gistlabs.mechanize.Resource; import com.gistlabs.mechanize.document.node.Node; import com.gistlabs.mechanize.requestor.RequestBuilder; import com.gistlabs.mechanize.requestor.RequestBuilderFactory; /** * @author Martin Kersten<Martin.Kersten.mk@gmail.com> */ public abstract class AbstractDocumentElement implements RequestBuilderFactory<Resource> { protected final Resource page; protected final Node node; public AbstractDocumentElement(Resource page, Node node) { this.page = page; this.node = node; } public Node getNode() { return node; } @SuppressWarnings("unchecked") public <T extends Resource> T getResource() { return (T) page; } @Override public RequestBuilder<Resource> doRequest(String uri) { return getResource().doRequest(uri); } public boolean hasAttribute(String key) { return node.hasAttribute(key); } public String getAttribute(String key) { return node.getAttribute(key); } @Override public String absoluteUrl(String uri) { return getResource().absoluteUrl(uri); } }