dasnervtdoch
11.01.2009, 20:46
Hallo Leute,
ich bin gerade mal wieder am Basteln und mir stellt sich eine wichtige Frage:
Wenn ich also ein RemoteObject habe, dann wird genau ein Object dieser Klasse (Java) erzeugt, richtig?
Also ich versuche die Verzeichnisstruktur (Files & Ordner) ab einem beliebigen Rootverzeichnis in meiner Flexapplication abzubilden.
Dafür hab ich einigen Java-Code, der die Hierarchy einliest und solche Späße. Jetzt hab ich eine Klasse geschrieben, die als Schnittstelle zwischen meiner (Java) Hierarchy und Flex via RemoteObject dienen soll:
public class FileAgent {
FileHierarchy hierarchy;
Iterator childIter;
Tree.Node actual;
public FileAgent() {
}
public ArrayList<Descriptor> buildHierarchy(String userRootFolder) {
hierarchy = new FileHierarchy(userRootFolder);
actual = hierarchy.getRoot();
setChildIter();
return getContent();
}
public ArrayList<Descriptor> folderUp() {
if(actual.hasParent()) {
actual = actual.getParent();
setChildIter();
}
return getContent();
}
public ArrayList<Descriptor> folderDown(String name) {
boolean found = false;
while(childIter.hasNext() && !found) {
Tree.Node node = (Tree.Node) childIter.next();
Descriptor desc = (Descriptor) node.getElement();
if(desc.name.equals(name)) {
actual = node;
found = true;
setChildIter();
}
}
return getContent();
}
private ArrayList<Descriptor> getContent() {
return hierarchy.getFolderContent(actual);
}
private void setChildIter() {
childIter = hierarchy.treeIter(actual);
}
}
Das RO:
<mx:RemoteObject id="hierarchyRO"
destination="HierarchyRemoteAccess">
<mx:method name="buildHierarchy"
result="handler(event)">
</mx:method>
<mx:method name="folderDown"
result="handler(event)">
</mx:method>
<mx:method name="folderUp"
result="handler(event)"/>
</mx:RemoteObject>
Das Problem ist jetzt: In einer Funktion auf die nach "creationComplete" aufgerufen wird, rufe ich also "hierarchyRO.buildHierarchy(Folder:String)" auf.
Das funktioniert ja noch, wenn ich dann aber eine der anderen Funktionen "folderUp, folderDown" aufrufe, bekomme ich eine Java:NullPointerException.
Ich schlussfolgere also, dass es sich um eine andere Instanz des RO handelt und damit um eine weitere Instanz von "FileAgent", die natürlich nicht mehr weiss, worum es geht.
Kann jemand folgen? Wie ist also die Antwort auf meine Ausgangsfrage?
Danke,
dasnervtdoch!
ich bin gerade mal wieder am Basteln und mir stellt sich eine wichtige Frage:
Wenn ich also ein RemoteObject habe, dann wird genau ein Object dieser Klasse (Java) erzeugt, richtig?
Also ich versuche die Verzeichnisstruktur (Files & Ordner) ab einem beliebigen Rootverzeichnis in meiner Flexapplication abzubilden.
Dafür hab ich einigen Java-Code, der die Hierarchy einliest und solche Späße. Jetzt hab ich eine Klasse geschrieben, die als Schnittstelle zwischen meiner (Java) Hierarchy und Flex via RemoteObject dienen soll:
public class FileAgent {
FileHierarchy hierarchy;
Iterator childIter;
Tree.Node actual;
public FileAgent() {
}
public ArrayList<Descriptor> buildHierarchy(String userRootFolder) {
hierarchy = new FileHierarchy(userRootFolder);
actual = hierarchy.getRoot();
setChildIter();
return getContent();
}
public ArrayList<Descriptor> folderUp() {
if(actual.hasParent()) {
actual = actual.getParent();
setChildIter();
}
return getContent();
}
public ArrayList<Descriptor> folderDown(String name) {
boolean found = false;
while(childIter.hasNext() && !found) {
Tree.Node node = (Tree.Node) childIter.next();
Descriptor desc = (Descriptor) node.getElement();
if(desc.name.equals(name)) {
actual = node;
found = true;
setChildIter();
}
}
return getContent();
}
private ArrayList<Descriptor> getContent() {
return hierarchy.getFolderContent(actual);
}
private void setChildIter() {
childIter = hierarchy.treeIter(actual);
}
}
Das RO:
<mx:RemoteObject id="hierarchyRO"
destination="HierarchyRemoteAccess">
<mx:method name="buildHierarchy"
result="handler(event)">
</mx:method>
<mx:method name="folderDown"
result="handler(event)">
</mx:method>
<mx:method name="folderUp"
result="handler(event)"/>
</mx:RemoteObject>
Das Problem ist jetzt: In einer Funktion auf die nach "creationComplete" aufgerufen wird, rufe ich also "hierarchyRO.buildHierarchy(Folder:String)" auf.
Das funktioniert ja noch, wenn ich dann aber eine der anderen Funktionen "folderUp, folderDown" aufrufe, bekomme ich eine Java:NullPointerException.
Ich schlussfolgere also, dass es sich um eine andere Instanz des RO handelt und damit um eine weitere Instanz von "FileAgent", die natürlich nicht mehr weiss, worum es geht.
Kann jemand folgen? Wie ist also die Antwort auf meine Ausgangsfrage?
Danke,
dasnervtdoch!