forked from apache/nifi
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
NIFI-8206: Added identifiesExternalResource() method to PropertyDescr…
…iptor.Builder and implemented functionality. - Updated components to make use of new feature NIFI-8206: Added a ResourceType of TEXT. This requires that the ResourceReferenceFactory know which types are allowed in order to create the ResourceReference. PropertyValue needs to then have the PropertyDescriptor available to it. This resulted in highlighting many bugs in unit tests where components were not exposing property descriptors via getSupportedPropertyDescriptors() or were evaluating Expression Language using the wrong scope, so fixed many unit tests/components to properly declare Expression Language scope when using it NIFI-8206: Removed problematic unit test that required directory names with special characters that are not allowed on some operating systems This closes apache#4890. Signed-off-by: Bryan Bende <[email protected]>
- Loading branch information
Showing
136 changed files
with
2,720 additions
and
1,821 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
nifi-api/src/main/java/org/apache/nifi/components/resource/FileResourceReference.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one or more | ||
* contributor license agreements. See the NOTICE file distributed with | ||
* this work for additional information regarding copyright ownership. | ||
* The ASF licenses this file to You under the Apache License, Version 2.0 | ||
* (the "License"); you may not use this file except in compliance with | ||
* the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.apache.nifi.components.resource; | ||
|
||
import java.io.File; | ||
import java.io.FileInputStream; | ||
import java.io.FileNotFoundException; | ||
import java.io.IOException; | ||
import java.io.InputStream; | ||
import java.net.MalformedURLException; | ||
import java.net.URL; | ||
import java.util.Objects; | ||
|
||
public class FileResourceReference implements ResourceReference { | ||
private final File file; | ||
private final ResourceType resourceType; | ||
|
||
public FileResourceReference(final File file) { | ||
this.file = Objects.requireNonNull(file); | ||
this.resourceType = file.isDirectory() ? ResourceType.DIRECTORY : ResourceType.FILE; | ||
} | ||
|
||
@Override | ||
public File asFile() { | ||
return file; | ||
} | ||
|
||
@Override | ||
public URL asURL() { | ||
try { | ||
return file.toURI().toURL(); | ||
} catch (final MalformedURLException e) { | ||
throw new AssertionError("File " + file.getAbsolutePath() + " cannot be represented as a URL"); // we won't encounter this. | ||
} | ||
} | ||
|
||
@Override | ||
public InputStream read() throws IOException { | ||
if (resourceType != ResourceType.FILE) { | ||
throw new FileNotFoundException("Could not read from file with name " + file.getAbsolutePath() + " because that references a directory"); | ||
} | ||
|
||
return new FileInputStream(file); | ||
} | ||
|
||
@Override | ||
public boolean isAccessible() { | ||
return file.exists() && file.canRead(); | ||
} | ||
|
||
@Override | ||
public String getLocation() { | ||
return file.getAbsolutePath(); | ||
} | ||
|
||
@Override | ||
public ResourceType getResourceType() { | ||
return resourceType; | ||
} | ||
|
||
@Override | ||
public boolean equals(final Object o) { | ||
if (this == o) { | ||
return true; | ||
} | ||
|
||
if (o == null || getClass() != o.getClass()) { | ||
return false; | ||
} | ||
|
||
final FileResourceReference that = (FileResourceReference) o; | ||
return Objects.equals(file, that.file) | ||
&& resourceType == that.resourceType; | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return Objects.hash(file, resourceType); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "FileResourceReference[file=" + file + ", resourceType=" + resourceType + "]"; | ||
} | ||
} |
Oops, something went wrong.