下面列出了org.apache.commons.io.monitor.FileAlterationListenerAdaptor#org.apache.wicket.request.resource.ResourceReference 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private Set<ResourceReference> includeSoleDependencies(Set<ResourceReference> dependents) {
while (true) {
Set<ResourceReference> newDependents = new HashSet<>(dependents);
for (ResourceReference dependent: dependents) {
for (ResourceReference dependency: dependencyMap.get(dependent).getDependencies()) {
if (!dependency.getClass().isAnnotationPresent(ResourceBundle.class)
&& dependents.containsAll(dependentMap.get(dependency))) {
newDependents.add(dependency);
}
}
}
if (!newDependents.equals(dependents)) {
dependents = newDependents;
} else {
break;
}
}
return dependents;
}
/** {@inheritDoc} */
@Override
public void mountResources(final WebApplication webApplication) {
if (resources != null) {
for (final Map.Entry<String, IResource> resource : resources.entrySet()) {
final String key = resource.getKey();
final IResource source = resource.getValue();
LOG.info("Mounting url '/{}' to resource '{}'", key, source.getClass().getCanonicalName());
webApplication.mountResource("/" + key, new ResourceReference(key){
@Override
public IResource getResource() {
return source;
}
});
}
}
}
@Override
public ResourceReference create(ResourceReference.Key key)
{
String name = key.getName();
String variation = key.getVariation();
if (ContextRelativeSassResourceReference.CONTEXT_RELATIVE_SASS_REFERENCE_VARIATION
.equals(variation)) {
return new ContextRelativeSassResourceReference(name); // TODO what about the min
// extension ?!
}
if (name != null && (name.endsWith(".scss") || name.endsWith(".sass"))) {
return new SassResourceReference(key);
}
else {
return delegate.create(key);
}
}
@Override
public ResourceReference create(Key key) {
if (PackageResource.exists(key)) {
return new PackageResourceReference(key);
} else {
for (ConcatResourceBundleReference<? extends IReferenceHeaderItem> bundle: bundles) {
if (bundle.getScope().getName().equals(key.getScope())) {
String bundleParentPath = getParentPath(bundle.getName());
String relativePath;
if (bundleParentPath != null)
relativePath = PathUtils.relativize(bundleParentPath, key.getName());
else
relativePath = key.getName();
for (IReferenceHeaderItem headerItem: bundle.getProvidedResources()) {
String referenceParentPath = getParentPath(headerItem.getReference().getName());
String possibleName;
if (referenceParentPath != null)
possibleName = PathUtils.resolve(referenceParentPath, relativePath);
else
possibleName = relativePath.toString();
possibleName = PathUtils.normalizeDots(possibleName);
if (possibleName != null) {
Key possibleKey = new Key(headerItem.getReference().getScope().getName(), possibleName,
key.getLocale(), key.getStyle(), key.getVariation());
if (PackageResource.exists(possibleKey)) {
return new PackageResourceReference(possibleKey);
}
}
}
}
}
return null;
}
}
private void createBundles(Class<?> scope, Set<ResourceReference> resourceReferences) {
/*
* Some bundled css file may contain resources relative to parent paths of the css url,
* for instance, a css may define below style:
*
* background: url(../images/clock.png)),
*
* if we use a resource name for instance "bundle" here, the generated resource
* path will be something like "http://<server>:<port>/wicket/resource/org.apache.wicket.Application/bundle-ver-1472816165384.css",
* and browser will resolve image url above as "http://<server>:<port>/wicket/resource/images/clock.png", which will cause Wicket
* resource loading not working at all. However if we use a long path here for resource name, for instance
* "a/l/o/n/g/p/a/t/h/bundle", the resolved image url will be "http://<server>:<port>/wicket/resource/org.apache.wicket.Application/a/l/o/n/g/p/a/t/clock.png",
* which will be resolved to the correct image with help of our BundleAwareResourceReferenceFactory
*/
String name = "a/l/o/n/g/p/a/t/h/bundle";
List<ResourceReference> resourceReferenceList = new ArrayList<>(resourceReferences);
resourceReferenceList.sort((o1, o2)->sorted.indexOf(o1)-sorted.indexOf(o2));
List<JavaScriptReferenceHeaderItem> javaScriptResourceReferences = new ArrayList<>();
List<CssReferenceHeaderItem> cssResourceReferences = new ArrayList<>();
for (ResourceReference resourceReference: resourceReferenceList) {
if (resourceReference instanceof JavaScriptResourceReference) {
javaScriptResourceReferences.add(JavaScriptReferenceHeaderItem.forReference(resourceReference));
} else if (resourceReference instanceof CssResourceReference) {
cssResourceReferences.add(CssReferenceHeaderItem.forReference(resourceReference));
}
}
if (!javaScriptResourceReferences.isEmpty()) {
javaScriptBundleReferences.add(new JavaScriptConcatResourceBundleReference(
scope, name + ".js", javaScriptResourceReferences));
}
if (!cssResourceReferences.isEmpty()) {
cssBundleReferences.add(new CssConcatResourceBundleReference(
scope, name + ".css", cssResourceReferences));
}
}
private DependencyAware<ResourceReference> getDependencyAware(ResourceReference resource) {
return new DependencyAware<ResourceReference>() {
@Override
public ResourceReference getId() {
return resource;
}
@Override
public int hashCode() {
return getId().hashCode();
}
@SuppressWarnings("unchecked")
@Override
public boolean equals(Object obj) {
return getId().equals(((DependencyAware<ResourceReference>)obj).getId());
}
@Override
public Set<ResourceReference> getDependencies() {
Set<ResourceReference> dependencies = new LinkedHashSet<>();
for (HeaderItem item: resource.getDependencies()) {
if (item instanceof IReferenceHeaderItem) {
ResourceReference reference = ((IReferenceHeaderItem) item).getReference();
if (reference.canBeRegistered()) {
dependencies.add(reference);
}
}
}
return dependencies;
}
};
}
public ImageLink(String aId, ResourceReference aImageRes, IModel<String> aUrl)
{
super(aId, aUrl);
ExternalLink link = new ExternalLink("link", aUrl);
link.add(new Image("image", aImageRes));
add(link);
}
public EmbeddableImage(String aComponentId, ResourceReference aResource)
{
super(aComponentId);
add(new Image("image", aResource) {
private static final long serialVersionUID = 1L;
@Override
protected boolean shouldAddAntiCacheParameter()
{
return false;
}
});
}
@Override
public Iterable<? extends HeaderItem> getDependencies() {
final ResourceReference backingLibraryReference;
if (Application.exists()) {
backingLibraryReference = Application.get().getJavaScriptLibrarySettings().getJQueryReference();
} else {
backingLibraryReference = JQueryResourceReference.get();
}
return Arrays.asList(CssHeaderItem.forReference(BOOTSTRAP_CSS), JavaScriptHeaderItem.forReference(backingLibraryReference));
}
@Override
public boolean isOurContent(RequestCycle cycle, IRequestHandler handler) {
if(handler instanceof ResourceReferenceRequestHandler)
{
ResourceReferenceRequestHandler rrrHandler = (ResourceReferenceRequestHandler)handler;
ResourceReference reference = rrrHandler.getResourceReference();
return !(reference instanceof PackageResourceReference);
}
return true;
}
protected static CharSequence urlFor(ResourceReference ref, ODocument document, String field, String contentType, Integer imageSize, Double imageQuality, boolean fullUrl) {
PageParameters params = new PageParameters();
params.add("rid", document.getIdentity().toString().substring(1));
params.add("field", field);
params.add("v", document.getVersion());
if(!Strings.isEmpty(contentType)) params.add("type", contentType);
if(imageSize!=null && imageSize>0) params.add("s", imageSize);
if(imageQuality!=null && imageQuality>0 && imageQuality<1.0) params.add("q", imageQuality);
if(fullUrl) {
return RequestCycle.get().getUrlRenderer()
.renderFullUrl(Url.parse(RequestCycle.get().urlFor(ref, params)));
} else {
return RequestCycle.get().mapUrlFor(ref, params).toString(StringMode.LOCAL);
}
}
@Override
public ResourceReference getIcon() {
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
@Override
public String getButtonImageUrl() {
ResourceReference logo = new PackageResourceReference(GitHubConnector.class, "octocat.png");
return RequestCycle.get().urlFor(logo, new PageParameters()).toString();
}
@Override
public IRequestHandler mapRequest(Request request)
{
Url url = request.getUrl();
if (canBeHandled(url))
{
final int segmentsSize = url.getSegments().size();
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, segmentsSize,
pageParametersEncoder);
String normalizedClassName = url.getSegments().get(2);
String className = classNames.get(normalizedClassName);
if (className == null)
className = normalizedClassName;
StringBuilder name = new StringBuilder(segmentsSize * 2);
for (int i = 3; i < segmentsSize; ++i)
{
String segment = url.getSegments().get(i);
// ignore invalid segments
if (segment.indexOf('/') > -1)
{
return null;
}
// remove caching information
if (i + 1 == segmentsSize && Strings.isEmpty(segment) == false)
{
// The filename + parameters eventually contain caching
// related information which needs to be removed
ResourceUrl resourceUrl = new ResourceUrl(segment, pageParameters);
getCachingStrategy().undecorateUrl(resourceUrl);
segment = resourceUrl.getFileName();
Checks.notEmpty(segment, "Caching strategy returned empty name for '%s'", resourceUrl);
}
if (name.length() > 0)
{
name.append('/');
}
name.append(segment);
}
ResourceReference.UrlAttributes attributes = ResourceUtil.decodeResourceReferenceAttributes(url);
Class<?> scope = resolveClass(className);
if (scope != null && scope.getPackage() != null)
{
ResourceReference res = getContext().getResourceReferenceRegistry()
.getResourceReference(scope, name.toString(), attributes.getLocale(),
attributes.getStyle(), attributes.getVariation(), true, true);
if (res != null)
{
return new ResourceReferenceRequestHandler(res, pageParameters);
}
}
}
return null;
}
public OneResourceMapper(String path, ResourceReference resourceReference) {
super(path, resourceReference);
}
@Override
public ResourceReference getJQueryReference() {
return JQueryResourceReference.get();
}
@Override
public ResourceReference getWicketEventReference() {
return WicketEventJQueryResourceReference.get();
}
@Override
public ResourceReference getWicketAjaxReference() {
return WicketAjaxJQueryResourceReference.get();
}
@Override
public ResourceReference getWicketAjaxDebugReference() {
return WicketAjaxDebugJQueryResourceReference.get();
}
private static CharSequence urlFor(final ResourceReference ref, PageParameters params) {
RequestCycle rc = RequestCycle.get();
ResourceReferenceRequestHandler handler = new ResourceReferenceRequestHandler(ref, params);
return rc.getUrlRenderer().renderContextRelativeUrl(rc.mapUrlFor(handler).toString());
}
@Override
public ResourceReference getIcon()
{
return ICON;
}
public StaticImage(String aId, final ResourceReference aResourceReference)
{
super(aId, aResourceReference);
}
public SidebarTab(IModel<String> aTitle, ResourceReference aIcon)
{
super(aTitle);
icon = aIcon;
}
public ResourceReference getIcon()
{
return icon;
}