JavaTM Platform
Standard Ed. 6

java.util.prefs
클래스 AbstractPreferences

java.lang.Object 
  상위를 확장 java.util.prefs.Preferences 
      상위를 확장 java.util.prefs.AbstractPreferences


public abstract class AbstractPreferences
extends Preferences

이 클래스는,Preferences 클래스의 스켈리턴 구현을 제공합니다. 이 클래스를 사용하면, 간단하게 구현할 수가 있습니다.

이 클래스는,Preferences 를 구현할 경우에만 사용합니다. Preferences 의 기능을 사용할 뿐(만큼)의 사용자는, 이 문서를 참조할 필요는 없습니다. Preferences 의 문서를 참조해 주세요.

Preferences 를 구현할 때는,getSpi(String) ,putSpi(String, String) ,removeSpi(String) ,childSpi(String) ,removeNodeSpi() ,keysSpi() ,childrenNamesSpi() ,syncSpi() , 및 flushSpi() 의 9 개의 abstract 서비스 프로바이더 인터페이스 (SPI) 메소드를 오버라이드(override) 할 필요가 있습니다. 오버라이드(override) 하는 구상 메소드에는, 이러한 SPI 메소드상에 구현하는 방법을 정확하게 지정할 필요가 있습니다. 퍼포먼스등의 이유로써 디폴트의 구현으로 변경을 더하고 싶은 경우는, 임의의 구상 메소드를 오버라이드(override) 합니다.

SPI 메소드는, 예외 처리에 대해 3 개의 그룹으로 분류됩니다. getSpi 메소드는, 예외를 throw 하지 않습니다. 이것은 문제는 아니고, 이 메소드가 throw 하는 예외는 모두 get(String, String) 에 의해 포획 되어 지정된 디폴트 값가 호출해 측에 돌려주어집니다. removeNodeSpi,keysSpi,childrenNamesSpi,syncSpi, 및 flushSpi 메소드는,BackingStoreException 를 throw 하도록(듯이) 지정되고 있습니다. Preferences 의 구현은, 조작을 실행할 수 없는 경우에 이 체크가 끝난 예외를 throw 할 필요가 있습니다. throw 된 예외는 외부에 보내져 대응하는 API 메소드가 실패합니다.

나머지의 SPI 메소드 (putSpi(String, String) ,removeSpi(String) , 및 childSpi(String) )는, 보다 복잡한 예외 처리를 실시합니다. 이러한 메소드는 일반적으로, 배킹 스토어를 이용할 수 없는 경우에서도 그 규약에 따라 동작할 수 있기 (위해)때문에,BackingStoreException 를 throw 하도록(듯이) 지정되고 있지 않습니다. 이러한 메소드는,Preferences.flush() 또는 Preferences.sync() 가 다음에 불려 갔을 때에, 정보를 돌려주어, 효과가 적용되기 (위해)때문에입니다. 일반적으로, 이러한 SPI 메소드는 예외를 throw 하지 않습니다. 일부의 구현에서는, 이러한 호출이 요구한 조작을, 나중에 처리하기 위해서 큐에 넣을 수가 없는 경우가 있습니다. 이러한 경우에서도, 일반적으로은 예외를 throw 하지 않고 , 호출이나 반환값을 무시해 주세요. 다만, 후속의 flush()sync 의 호출에서는 false 를 돌려줄 필요가 있습니다. true 를 돌려주었을 때에, 지금까지의 모든 조작이 정상적으로 적용되고 있는 것을 나타내기 (위해)때문에입니다.

putSpi,removeSpi, 및 childSpi 가 예외를 throw 할 필요가 있는 경우가 1 개만 있습니다. 기본이 되는 operating system상에서, 요구한 조작의 실행에 필요한 특권을 호출해 옆이 가지고 있지 않은 경우입니다. 예를 들어, 대부분의 시스템에서는, 비특권 사용자가 시스템 설정을 변경하려고 하면(자) 예외가 발생합니다. 필요한 특권은, 구현 마다 다릅니다. 예를 들어, 파일 시스템내의 디렉토리의 내용을 변경하는 권한이 필요한 경우나, 레지스트리내의 키의 내용을 변경하는 권한이 필요한 경우가 있습니다. 이러한 환경의 경우, 프로그램의 실행은 속행하지 말아 주세요. 속행해도, 이러한 조작은 적용되는 것이 없기 때문입니다. 이러한 환경에서는, 가능한 한 예외를 throw 하는 것을 추천합니다. 그 경우,SecurityException 를 throw 해 주세요.

대부분의 SPI 메소드의 구현에서는, 설정 노드로 정보의 읽어들여 또는 기입을 실시할 필요가 있습니다. 설정 노드는, 다른 VM 에 의해 배킹 스토어로부터 병행해 삭제되고 있는 경우가 있습니다. 이 노드가 삭제되고 있는 경우는, 구현하는 사용자가 재작성해 주세요.

구현상의 주의 :Sun 의 디폴트의 Preferences 구현에서는, 사용자 ID 는 기본이 되는 operating system로부터 상속되어 가상 머신의 수명중으로 바뀔 것은 없습니다. 서버측의 Preferences 구현에서는, 요구 마다 사용자 ID 가 바뀌어, 정적인 ThreadLocal 인스턴스를 사용해 Preferences 메소드에 암묵적으로 건네받습니다. 서버측의 구현의 작성자는, 설정에 액세스 할 경우에, 예를 들어 get(String, String)put(String, String) 메소드등을 사용해 사용자를 판단하는 것을 강하게 추천합니다. 가능한 한, 사용자와 각 Preferences 인스턴스를 영속적으로 관련짓지 말아 주세요. 사용자를 영속적으로 관련지었을 경우,Preferences 의 정상적인 사용법에 준거하고 있지 않기 때문에, 큰 혼란을 부르게 됩니다.

도입된 버젼:
1.4
관련 항목:
Preferences

필드의 개요
protected  Object lock
          이 객체에는, 이 노드를 잠그었을 때에 사용되는 모니터가 짜넣어지고 있습니다.
protected  boolean newNode
          이 객체를 작성하기 전에 이 노드가 배킹 스토어에 존재하지 않았던 경우, 이 필드는 true 로 해 주세요.
 
클래스 java.util.prefs. Preferences 로부터 상속된 필드
MAX_KEY_LENGTH , MAX_NAME_LENGTH , MAX_VALUE_LENGTH
 
생성자 의 개요
protected AbstractPreferences (AbstractPreferences  parent, String  name)
          지정된 부모와 그 부모를 기점으로서 상대명을 사용해, 설정 노드를 작성합니다.
 
메소드의 개요
 String absolutePath ()
          Preferences.absolutePath() 의 스펙에 따라,absolutePath 메소드를 구현합니다.
 void addNodeChangeListener (NodeChangeListener  ncl)
          지정된 청취자가 이 노드의 「노드 변경 이벤트」를 수신하도록(듯이) 등록합니다.
 void addPreferenceChangeListener (PreferenceChangeListener  pcl)
          지정된 청취자가 이 설정 노드에 대한 「설정 변경 이벤트」를 수신하도록(듯이) 등록합니다.
protected  AbstractPreferences [] cachedChildren ()
          이 노드의 삭제되어 있지 않은 기존의 아이를 모두 돌려줍니다.
 String [] childrenNames ()
          Preferences.childrenNames() 의 스펙에 따라,children 메소드를 구현합니다.
protected abstract  String [] childrenNamesSpi ()
          이 설정 노드의 아이의 이름을 돌려줍니다.
protected abstract  AbstractPreferences childSpi (String  name)
          이 설정 노드의 이름 첨부의 아이를 돌려줍니다.
 void clear ()
          Preferences.clear() , 의 스펙에 따라,clear 메소드를 구현합니다.
 void exportNode (OutputStream  os)
          Preferences.exportNode(OutputStream) 의 스펙에 따라,exportNode 메소드를 구현합니다.
 void exportSubtree (OutputStream  os)
          Preferences.exportSubtree(OutputStream) 의 스펙에 따라,exportSubtree 메소드를 구현합니다.
 void flush ()
          Preferences.flush() 의 스펙에 따라,flush 메소드를 구현합니다.
protected abstract  void flushSpi ()
          이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.
 String get (String  key, String  def)
          Preferences.get(String, String) 의 스펙에 따라,get 메소드를 구현합니다.
 boolean getBoolean (String  key, boolean def)
          이 구현에서는 get(key, null) 를 호출합니다.
 byte[] getByteArray (String  key, byte[] def)
          Preferences.getByteArray(String, byte[]) 의 스펙에 따라,getByteArray 메소드를 구현합니다.
protected  AbstractPreferences getChild (String  nodeName)
          이름 첨부의 아이가 존재하는 경우는 그것을 돌려주어, 존재하지 않는 경우는 null 를 돌려줍니다.
 double getDouble (String  key, double def)
          Preferences.getDouble(String, double) 의 스펙에 따라,getDouble 메소드를 구현합니다.
 float getFloat (String  key, float def)
          Preferences.getFloat(String, float) 의 스펙에 따라,getFloat 메소드를 구현합니다.
 int getInt (String  key, int def)
          Preferences.getInt(String, int) 의 스펙에 따라,getInt 메소드를 구현합니다.
 long getLong (String  key, long def)
          Preferences.getLong(String, long) 의 스펙에 따라,getLong 메소드를 구현합니다.
protected abstract  String getSpi (String  key)
          이 설정 노드의 지정된 키에 관련지을 수 있었던 값을 돌려줍니다.
protected  boolean isRemoved ()
          이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우에,true 를 돌려줍니다.
 boolean isUserNode ()
          Preferences.isUserNode() 의 스펙에 따라,isUserNode 메소드를 구현합니다.
 String [] keys ()
          Preferences.keys() 의 스펙에 따라,keys 메소드를 구현합니다.
protected abstract  String [] keysSpi ()
          이 설정 노드내에 관련지을 수 있었던 값을 가지는 키를 모두 돌려줍니다.
 String name ()
          Preferences.name() 의 스펙에 따라,name 메소드를 구현합니다.
 Preferences node (String  path)
          Preferences.node(String) 의 스펙에 따라,node 메소드를 구현합니다.
 boolean nodeExists (String  path)
          Preferences.nodeExists(String) 의 스펙에 따라,nodeExists 메소드를 구현합니다.
 Preferences parent ()
          Preferences.parent() 의 스펙에 따라,parent 메소드를 구현합니다.
 void put (String  key, String  value)
          Preferences.put(String, String) 의 스펙에 따라,put 메소드를 구현합니다.
 void putBoolean (String  key, boolean value)
          Preferences.putBoolean(String, boolean) 의 스펙에 따라,putBoolean 메소드를 구현합니다.
 void putByteArray (String  key, byte[] value)
          Preferences.putByteArray(String, byte[]) 의 스펙에 따라,putByteArray 메소드를 구현합니다.
 void putDouble (String  key, double value)
          Preferences.putDouble(String, double) 의 스펙에 따라,putDouble 메소드를 구현합니다.
 void putFloat (String  key, float value)
          Preferences.putFloat(String, float) 의 스펙에 따라,putFloat 메소드를 구현합니다.
 void putInt (String  key, int value)
          Preferences.putInt(String, int) 의 스펙에 따라,putInt 메소드를 구현합니다.
 void putLong (String  key, long value)
          Preferences.putLong(String, long) 의 스펙에 따라,putLong 메소드를 구현합니다.
protected abstract  void putSpi (String  key, String  value)
          지정된 키와 값의 페어를 이 설정 노드에 관련짓습니다.
 void remove (String  key)
          removeSpi(String) 의 스펙에 따라,remove(String) 메소드를 구현합니다.
 void removeNode ()
          Preferences.removeNode() 의 스펙에 따라,removeNode() 메소드를 구현합니다.
 void removeNodeChangeListener (NodeChangeListener  ncl)
          지정된 NodeChangeListener 를 삭제해, 이벤트의 수신을 정지합니다.
protected abstract  void removeNodeSpi ()
          이 호출을 실시하면, 이름 첨부의 아이의 하위 노드가 모두 삭제됩니다.
 void removePreferenceChangeListener (PreferenceChangeListener  pcl)
          지정된 설정 변경 청취자를 삭제해, 설정 변경 이벤트의 수신을 정지합니다.
protected abstract  void removeSpi (String  key)
          이 설정 노드의 지정된 키에 관련짓고가 있는 경우는, 그것을 삭제합니다.
 void sync ()
          Preferences.sync() 의 스펙에 따라,sync 메소드를 구현합니다.
protected abstract  void syncSpi ()
          이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.
 String toString ()
          이 설정 노드의 절대 경로명을 돌려줍니다.
 
클래스 java.util.prefs. Preferences 로부터 상속된 메소드
importPreferences , systemNodeForPackage , systemRoot , userNodeForPackage , userRoot
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

필드의 상세

newNode

protected boolean newNode
이 객체를 작성하기 전에 이 노드가 배킹 스토어에 존재하지 않았던 경우, 이 필드는 true 로 해 주세요. 이 필드의 초기치는 false 입니다만, 서브 클래스의 생성자 에 의해 true 로 설정됩니다 (그 이후는 변경하지 말아 주세요). 이 필드에는, 객체의 작성이 완료했을 때에 노드 변경 이벤트를 트리거할 필요가 있을지 어떨지를 지정합니다.


lock

protected final Object  lock
이 객체에는, 이 노드를 잠그었을 때에 사용되는 모니터가 짜넣어지고 있습니다. 이 객체는, 그 노드 자체보다 우선되어 노드가 락 되었을 때에 의도적 또는 비의도적으로 서비스가 거부될 가능성을 감소합니다. 데드락을 회피하기 위해서, 하위 노드의 락을 보관 유지하고 있는 thread에 의해 상위 노드가 락 될 것은 없습니다.

생성자 의 상세

AbstractPreferences

protected AbstractPreferences(AbstractPreferences  parent,
                              String  name)
지정된 부모와 그 부모를 기점으로서 상대명을 사용해, 설정 노드를 작성합니다.

파라미터:
parent - 이 설정 노드의 부모. 이 노드가 루트의 경우는 null
name - 이 설정 노드의 부모에 대한 상대명. 이것이 루트의 경우는「」
예외:
IllegalArgumentException - name 에 slash (「/」)가 포함되어 있는지,parentnull 로 name 가「」이 아닌 경우
메소드의 상세

put

public void put(String  key,
                String  value)
Preferences.put(String, String) 의 스펙에 따라,put 메소드를 구현합니다.

이 구현에서는, 키와 값이 정당한 것을 확인해, 이 설정 노드의 락을 취득해, 설정 노드가 삭제되어 있지 않은 것을 확인해,putSpi(String, String) 를 호출합니다. 또, 설정 변경 청취자가 있는 경우는, 이벤트발송쓰레드에 건네주기 위해서(때문에) 통지 이벤트를 큐에 넣습니다.

정의:
클래스 Preferences 내의 put
파라미터:
key - 지정된 값을 관련지을 수 있는 키
value - 지정된 키에 관련지을 수 있는 값
예외:
NullPointerException - 키 또는 값이 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우, 또는 value.lengthMAX_VALUE_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

get

public String  get(String  key,
                  String  def)
Preferences.get(String, String) 의 스펙에 따라,get 메소드를 구현합니다.

이 구현은 우선,keynull 화도인지를 체크해, 그런 경우는 NullPointerException 를 throw 합니다. 다음에, 이 설정 노드의 락을 취득해, 그 노드가 삭제되어 있지 않은 것을 확인해,getSpi(String) 를 호출합니다. getSpi 의 호출이 정상 종료했을 경우는, 그 결과를 돌려줍니다. null 가 돌려주어질까 예외가 throw 되었을 경우는,def 를 돌려줍니다.

정의:
클래스 Preferences 내의 get
파라미터:
key - 관련지을 수 있었던 값이 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는 경우에 돌려주어야 할 값
반환값:
key 에 관련지을 수 있었던 값. key 에 관련지을 수 있었던 값이 존재하지 않는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - key 가 null 의 경우 (null 디폴트는 허가된다. )

remove

public void remove(String  key)
removeSpi(String) 의 스펙에 따라,remove(String) 메소드를 구현합니다.

이 구현에서는, 이 설정 노드의 락을 취득해, 설정 노드가 삭제되어 있지 않은 것을 확인해,removeSpi(String) 를 호출합니다. 또, 설정 변경 청취자가 있는 경우는, 이벤트발송쓰레드에 건네주기 위해서(때문에) 통지 이벤트를 큐에 넣습니다.

정의:
클래스 Preferences 내의 remove
파라미터:
key - 매핑이 설정 노드로부터 삭제되는 키
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

clear

public void clear()
           throws BackingStoreException 
Preferences.clear() , 의 스펙에 따라,clear 메소드를 구현합니다.

이 구현에서는, 이 설정 노드의 락을 취득해,keys() 를 호출해 키의 배열을 가져옵니다. 다음에, 각 키에 대해서 반복해 remove(String) 를 호출합니다.

정의:
클래스 Preferences 내의 clear
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.removeNode()

putInt

public void putInt(String  key,
                   int value)
Preferences.putInt(String, int) 의 스펙에 따라,putInt 메소드를 구현합니다.

이 구현에서는,Integer.toString(int) 를 사용해 value 를 캐릭터 라인으로 변환해, 그 결과에 대해서 put(String, String) 를 호출합니다.

정의:
클래스 Preferences 내의 putInt
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키가 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getInt(String, int)

getInt

public int getInt(String  key,
                  int def)
Preferences.getInt(String, int) 의 스펙에 따라,getInt 메소드를 구현합니다.

이 구현은,get(key, null) 를 호출합니다. 반환값이 null 가 아닌 경우는,Integer.parseInt(String) 를 사용해 그 값을 int 로 변환하려고 합니다. 정상적으로 변환되었을 경우는, 이 메소드에 의해 반환값이 돌려주어집니다. 정상적으로 변환되지 않았던 경우는,def 가 돌려주어집니다.

정의:
클래스 Preferences 내의 getInt
파라미터:
key - 관련지을 수 있었던 값이 int 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 int 로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 int 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 int 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
Preferences.putInt(String, int) , Preferences.get(String, String)

putLong

public void putLong(String  key,
                    long value)
Preferences.putLong(String, long) 의 스펙에 따라,putLong 메소드를 구현합니다.

이 구현에서는,Long.toString(long) 를 사용해 value 를 캐릭터 라인으로 변환해, 그 결과에 대해서 put(String, String) 를 호출합니다.

정의:
클래스 Preferences 내의 putLong
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키가 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getLong(String, long)

getLong

public long getLong(String  key,
                    long def)
Preferences.getLong(String, long) 의 스펙에 따라,getLong 메소드를 구현합니다.

이 구현은,get(key, null) 를 호출합니다. 반환값이 null 가 아닌 경우는,Long.parseLong(String) 를 사용해 그 값을 long 로 변환하려고 합니다. 정상적으로 변환되었을 경우는, 이 메소드에 의해 반환값이 돌려주어집니다. 정상적으로 변환되지 않았던 경우는,def 가 돌려주어집니다.

정의:
클래스 Preferences 내의 getLong
파라미터:
key - 관련지을 수 있었던 값이 long 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 long 로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 long 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 long 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
Preferences.putLong(String, long) , Preferences.get(String, String)

putBoolean

public void putBoolean(String  key,
                       boolean value)
Preferences.putBoolean(String, boolean) 의 스펙에 따라,putBoolean 메소드를 구현합니다.

이 구현에서는,String.valueOf(boolean) 를 사용해 value 를 캐릭터 라인으로 변환해, 그 결과에 대해서 put(String, String) 를 호출합니다.

정의:
클래스 Preferences 내의 putBoolean
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키가 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getBoolean(String, boolean) , Preferences.get(String, String)

getBoolean

public boolean getBoolean(String  key,
                          boolean def)
이 구현에서는 get(key, null) 를 호출합니다.

이 구현은,get(key, null) 를 호출합니다. 반환값이 null 이외의 경우, 그 값이 String.equalsIgnoreCase(String) 를 사용해「true」라고 비교됩니다. 이 비교에 의해 true 가 돌려주어졌을 경우, 이 호출에 의해 true 가 돌려주어집니다. 그렇지 않은 경우는, 재차 String.equalsIgnoreCase(String) 를 사용해 원의 반환값이 "false" 라고 비교됩니다. 이 비교에 의해 true 가 돌려주어졌을 경우, 이 호출에 의해 false 가 돌려주어집니다. 그렇지 않은 경우는,def 가 돌려주어집니다.

정의:
클래스 Preferences 내의 getBoolean
파라미터:
key - 관련지을 수 있었던 값이 boolean 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 boolean 로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 boolean 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 boolean 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
Preferences.get(String, String) , Preferences.putBoolean(String, boolean)

putFloat

public void putFloat(String  key,
                     float value)
Preferences.putFloat(String, float) 의 스펙에 따라,putFloat 메소드를 구현합니다.

이 구현에서는,Float.toString(float) 를 사용해 value 를 캐릭터 라인으로 변환해, 그 결과에 대해서 put(String, String) 를 호출합니다.

정의:
클래스 Preferences 내의 putFloat
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키가 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getFloat(String, float)

getFloat

public float getFloat(String  key,
                      float def)
Preferences.getFloat(String, float) 의 스펙에 따라,getFloat 메소드를 구현합니다.

이 구현은,get(key, null) 를 호출합니다. 반환값이 null 가 아닌 경우는,Float.parseFloat(String) 를 사용해 그 값을 float 로 변환하려고 합니다. 정상적으로 변환되었을 경우는, 이 메소드에 의해 반환값이 돌려주어집니다. 정상적으로 변환되지 않았던 경우는,def 가 돌려주어집니다.

정의:
클래스 Preferences 내의 getFloat
파라미터:
key - 관련지을 수 있었던 값이 float 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 float 로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 float 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 float 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
Preferences.putFloat(String, float) , Preferences.get(String, String)

putDouble

public void putDouble(String  key,
                      double value)
Preferences.putDouble(String, double) 의 스펙에 따라,putDouble 메소드를 구현합니다.

이 구현에서는,Double.toString(double) 를 사용해 value 를 캐릭터 라인으로 변환해, 그 결과에 대해서 put(String, String) 를 호출합니다.

정의:
클래스 Preferences 내의 putDouble
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키가 null 의 경우
IllegalArgumentException - key.length()MAX_KEY_LENGTH 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getDouble(String, double)

getDouble

public double getDouble(String  key,
                        double def)
Preferences.getDouble(String, double) 의 스펙에 따라,getDouble 메소드를 구현합니다.

이 구현은,get(key, null) 를 호출합니다. 반환값이 null 가 아닌 경우는,Double.parseDouble(String) 를 사용해 그 값을 double 로 변환하려고 합니다. 정상적으로 변환되었을 경우는, 이 메소드에 의해 반환값이 돌려주어집니다. 정상적으로 변환되지 않았던 경우는,def 가 돌려주어집니다.

정의:
클래스 Preferences 내의 getDouble
파라미터:
key - 관련지을 수 있었던 값이 double 로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 double 로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 double 치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 double 로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우
관련 항목:
Preferences.putDouble(String, double) , Preferences.get(String, String)

putByteArray

public void putByteArray(String  key,
                         byte[] value)
Preferences.putByteArray(String, byte[]) 의 스펙에 따라,putByteArray 메소드를 구현합니다.

정의:
클래스 Preferences 내의 putByteArray
파라미터:
key - 캐릭터 라인 형식의 값을 관련지을 수 있는 키
value - 키에 관련지을 수 있는 캐릭터 라인 형식의 값
예외:
NullPointerException - 키 또는 값이 null 의 경우
IllegalArgumentException - key.length()가 MAX_KEY_LENGTH 를 넘는 경우, 또는 value.length 가 MAX_VALUE_LENGTH*3/4 를 넘는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.getByteArray(String, byte[]) , Preferences.get(String, String)

getByteArray

public byte[] getByteArray(String  key,
                           byte[] def)
Preferences.getByteArray(String, byte[]) 의 스펙에 따라,getByteArray 메소드를 구현합니다.

정의:
클래스 Preferences 내의 getByteArray
파라미터:
key - 관련지을 수 있었던 값이 바이트 배열로서 반환되는 키
def - 이 설정 노드를 key 에 관련지을 수 있었던 값을 가지지 않는가, 관련지을 수 있었던 값을 바이트 배열로서 해석할 수 없는 경우에 돌려주어야 할 값
반환값:
이 설정 노드내의 key 에 관련지을 수 있었던 캐릭터 라인이 나타내는 바이트 배열치. 관련지을 수 있었던 값이 존재하지 않는지, 그 값을 바이트 배열로서 해석할 수 없는 경우는 def
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
NullPointerException - keynull 의 경우 (def 에는 null 치를 지정할 수 있다. )
관련 항목:
Preferences.get(String, String) , Preferences.putByteArray(String, byte[])

keys

public String [] keys()
              throws BackingStoreException 
Preferences.keys() 의 스펙에 따라,keys 메소드를 구현합니다.

이 구현에서는, 이 설정 노드의 락을 취득해, 그 노드가 삭제되어 있지 않은 것을 확인해,keysSpi() 를 호출합니다.

정의:
클래스 Preferences 내의 keys
반환값:
이 설정 노드내에 관련지을 수 있었던 값을 가지는 키의 배열
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

childrenNames

public String [] childrenNames()
                       throws BackingStoreException 
Preferences.childrenNames() 의 스펙에 따라,children 메소드를 구현합니다.

이 구현에서는, 이 설정 노드의 락을 취득해, 그 노드가 삭제되어 있지 않은 것을 확인해, 캐쉬 끝난 아이 (이 노드의 「아이 캐쉬」에 포함되고 있는 아이)의 이름에 초기화되고 있는 TreeSet 를 구축해,childrenNamesSpi() 를 호출해, 반환된 모든 아이의 이름을 그 세트내에 추가합니다. 다음에,childrenNamesSpi() 를 호출해, 반환된 아이의 이름을 모두 그 트리 세트에 추가합니다. 트리 세트의 요소는 toArray 메소드를 사용해 String 배열에 덤프 되어 이 배열이 돌려주어집니다.

정의:
클래스 Preferences 내의 childrenNames
반환값:
이 설정 노드의 아이의 이름
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
cachedChildren()

cachedChildren

protected final AbstractPreferences [] cachedChildren()
이 노드의 삭제되어 있지 않은 기존의 아이를 모두 돌려줍니다.

반환값:
이 노드의 삭제되어 있지 않은 기존의 모든 아이

parent

public Preferences  parent()
Preferences.parent() 의 스펙에 따라,parent 메소드를 구현합니다.

이 구현에서는, 이 설정 노드의 락을 취득해, 설정 노드가 삭제되어 있지 않은 것을 확인해, 이 노드의 생성자 에게 건네진 부모의 값을 돌려줍니다.

정의:
클래스 Preferences 내의 parent
반환값:
이 설정 노드의 부모
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우

node

public Preferences  node(String  path)
Preferences.node(String) 의 스펙에 따라,node 메소드를 구현합니다.

이 구현은, 이 설정 노드의 락을 취득해, 설정 노드가 삭제되어 있지 않은 것을 확인합니다. path"" 의 경우는, 이 노드가 돌려주어집니다. path"/" 의 경우는, 이 노드의 루트가 돌려주어집니다. path 의 최초의 문자가 '/' 가 아닌 경우는,path 를 몇개의 토큰에 분할해, 이 노드로부터 이름 첨부 노드까지 패스를 재귀적으로 횡단(traverse) 합니다. path 는, 이름과 slash의 단위로 횡단(traverse) 됩니다. 횡단(traverse) 할 때는, 현재의 노드를 잠그어, 그 노드의 아이 캐쉬에 이름 첨부 노드가 있을지 어떨지를 확인합니다. 이름 첨부 노드가 발견되지 않는 경우는, 그 이름의 길이가 MAX_NAME_LENGTH 를 넘지 않은지 어떤지를 확인합니다. 다음에 childSpi(String) 메소드를 호출해, 그 결과를 이 노드의 아이 캐쉬에 포함합니다. 새롭게 작성한 Preferences 객체의 newNode 필드가 true 로, 노드 변경 청취자가 있는 경우는, 이벤트발송쓰레드에 건네주기 위해서(때문에) 통지 이벤트를 큐에 넣습니다.

토큰이 없어지면(자), 아이 캐쉬에 마지막에 발견된 값 또는 childSpi 로부터 마지막에 반환된 값을 돌려줍니다. 횡단(traverse)시에 2 개의 것 "/" 이 연속해 발생했을 경우, 또는 마지막 토큰이 이름은 아니고 "/" 의 경우는, 적절한 IllegalArgumentException 를 throw 합니다.

path 의 최초의 문자가 '/' (절대 경로명을 나타낸다)의 경우는, 이 설정 노드의 락을 해제하고 나서,path 를 몇개의 토큰에 분할해, 패스를 루트로부터 (이 노드로부터는 아니게) 재귀적으로 횡단(traverse) 합니다. 최초의 문자가 '/' 이외의 경우는, 상대 경로명과 같은 횡단(traverse)을 실시합니다. 루트 노드로 횡단(traverse)을 개시할 때는, 이 노드의 락을 반드시 해제해 주세요. 데드락의 발생을 막기 위해입니다 (locking invariant 를 참조).

정의:
클래스 Preferences 내의 node
파라미터:
path - 반환되는 설정 노드의 경로명
반환값:
지정된 설정 노드
예외:
IllegalArgumentException - 경로명이 무효인 경우 (즉, 경로명에 연속한 복수의 slash 문자가 포함되어 있는지, 경로명이 slash 문자로 끝나 있어 그 길이가 2 문자 이상의 경우)
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
Preferences.flush()

nodeExists

public boolean nodeExists(String  path)
                   throws BackingStoreException 
Preferences.nodeExists(String) 의 스펙에 따라,nodeExists 메소드를 구현합니다.

이 구현은,node(String) 와 닮아 있습니다만,childSpi(String) 는 아니고 getChild(String) 가 사용됩니다.

정의:
클래스 Preferences 내의 nodeExists
파라미터:
path - 존재가 확인되는 노드의 경로명
반환값:
지정된 노드가 존재하는 경우에 true
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalArgumentException - 경로명이 무효인 경우 (즉, 경로명에 연속한 복수의 slash 문자가 포함되어 있는지, 경로명이 slash 문자로 끝나 있어 그 길이가 2 문자 이상의 경우)
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되고 있어pathname 가 빈 상태(empty)의 캐릭터 라인 (「」)이 아닌 경우

removeNode

public void removeNode()
                throws BackingStoreException 
Preferences.removeNode() 의 스펙에 따라,removeNode() 메소드를 구현합니다.

이 구현은, 이 노드가 루트일지 어떨지를 확인합니다. 루트인 경우는, 해당하는 예외를 throw 합니다. 다음에, 이 노드의 부모를 잠그어, 이 노드를 루트로 한 서브 트리를 횡단(traverse) 하는 재귀적 헬퍼 메소드를 호출합니다. 이 재귀적 메소드는, 그 호출원의 노드를 잠그어, 그 노드가 삭제되어 있지 않은 것을 확인한 후에, 그 노드의 아이가 모두 캐쉬되고 있는 것을 확인합니다. 즉,childrenNamesSpi() 메소드를 호출해, 반환된 아이의 이름이 아이 캐쉬에 포함되고 있는지 어떤지를 확인합니다. 아이가 캐쉬되어 있지 않은 경우는,childSpi(String) 메소드를 호출해 Preferences 인스턴스를 작성해, 아이 캐쉬에 포함합니다. 이 헬퍼 메소드는, 그 아이 캐쉬에 포함되어 있는 노드 마다 자신을 재귀적으로 호출합니다. 다음에,removeNodeSpi() 를 호출해, 그 노드 자체를 삭제가 끝난 상태로서 지정해, 그 부모의 아이 캐쉬로부터 삭제합니다. 마지막으로, 노드 변경 청취자가 있는 경우는, 이벤트발송쓰레드에 건네주기 위해서(때문에) 통지 이벤트를 큐에 넣습니다.

헬퍼 메소드가 불려 갈 때는, 「삭제되어 있지 않은 것도 와도 가까운 상위 노드」까지의 모든 상위 노드가 항상 락 됩니다.

정의:
클래스 Preferences 내의 removeNode
예외:
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 벌써 삭제되고 있는 경우
UnsupportedOperationException - 이 메소드가 루트 노드상에서 불려 갔을 경우
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
관련 항목:
Preferences.flush()

name

public String  name()
Preferences.name() 의 스펙에 따라,name 메소드를 구현합니다.

이 구현은, 노드의 생성자 에게 건네진 이름만을 돌려줍니다.

정의:
클래스 Preferences 내의 name
반환값:
이 설정 노드의 이름 (그 부모를 기점으로 한 상대명)

absolutePath

public String  absolutePath()
Preferences.absolutePath() 의 스펙에 따라,absolutePath 메소드를 구현합니다.

이 구현은, 이 노드가 구축되었을 때에 산출된 절대 경로명만을 돌려줍니다 (이 노드의 생성자 에게 건네진 이름과 이 노드의 상위 노드의 생성자 에게 건네진 이름에 근거해 산출된다).

정의:
클래스 Preferences 내의 absolutePath
반환값:
이 설정 노드의 절대 경로명

isUserNode

public boolean isUserNode()
Preferences.isUserNode() 의 스펙에 따라,isUserNode 메소드를 구현합니다.

이 구현은, 이 노드의 루트 노드 (private 필드에 포함되고 있다)와 Preferences.userRoot() 로부터 반환된 값을 비교합니다. 2 개의 객체 참조가 일치하는 경우는, true 를 돌려줍니다.

정의:
클래스 Preferences 내의 isUserNode
반환값:
이 설정 노드가 사용자 설정 트리에 있는 경우는 true, 시스템 설정 트리에 있는 경우는 false

addPreferenceChangeListener

public void addPreferenceChangeListener(PreferenceChangeListener  pcl)
클래스 Preferences 의 기술:
지정된 청취자가 이 설정 노드에 대한 「설정 변경 이벤트」를 수신하도록(듯이) 등록합니다. 설정 변경 이벤트는, 설정이 이 노드에 추가되었을 때, 설정이 이 노드로부터 삭제되었을 때, 또는 설정에 관련지을 수 있었던 값이 변경되었을 때에 생성됩니다. 설정 변경 이벤트는,Preferences.removeNode() 메소드에서는 생성되지 않습니다. 이 메소드에서는, 「노드 변경 이벤트」가 생성됩니다. 설정 변경 이벤트는 clear 메소드에 의해 생성됩니다.

노드 변경 이벤트는, 등록된 청취자와 같은 JVM 내에서 변경을 했을 때에만, 생성됩니다. 다만, 일부의 구현에서는, 현재의 JVM 의 외부에서 행해진 변경에 대해서, 이벤트가 생성되는 일이 있습니다. 이벤트가 생성된 시점에서, 변경이 지속적으로 되어 있지 않은 것이 있습니다. 현재의 노드의 하위 노드로 설정이 변경되었을 때는, 이벤트는 생성되지 않습니다. 그러한 이벤트가 필요한 경우는, 그 노드를 등록할 필요가 있습니다.

정의:
클래스 Preferences 내의 addPreferenceChangeListener
파라미터:
pcl - 추가하는 설정 변경 청취자
관련 항목:
Preferences.removePreferenceChangeListener(PreferenceChangeListener) , Preferences.addNodeChangeListener(NodeChangeListener)

removePreferenceChangeListener

public void removePreferenceChangeListener(PreferenceChangeListener  pcl)
클래스 Preferences 의 기술:
지정된 설정 변경 청취자를 삭제해, 설정 변경 이벤트의 수신을 정지합니다.

정의:
클래스 Preferences 내의 removePreferenceChangeListener
파라미터:
pcl - 삭제하는 설정 변경 청취자
관련 항목:
Preferences.addPreferenceChangeListener(PreferenceChangeListener)

addNodeChangeListener

public void addNodeChangeListener(NodeChangeListener  ncl)
클래스 Preferences 의 기술:
지정된 청취자가 이 노드의 「노드 변경 이벤트」를 수신하도록(듯이) 등록합니다. 노드 변경 이벤트는, 자식(child) 노드가 이 노드에 추가되었을 때, 또는 이 노드로부터 삭제되었을 때에 생성됩니다. 1 회의 Preferences.removeNode() 호출에 의해, 복수의 「노드 변경 이벤트」가 생성됩니다. 즉, 삭제된 노드를 루트로 하는 서브 트리내의 각 노드에 1 개씩 생성됩니다.

노드 변경 이벤트는, 등록된 청취자와 같은 JVM 내에서 변경을 했을 때에만, 생성됩니다. 다만, 일부의 구현에서는, 현재의 JVM 의 외부에서 행해진 변경에 대해서, 이벤트가 생성되는 일이 있습니다. 이벤트가 생성된 시점에서, 변경이 지속적으로 되어 있지 않은 것이 있습니다. 현재의 노드의 부하에 없는 하위 노드가 추가 또는 삭제되었을 때는, 이벤트는 생성되지 않습니다. 그러한 이벤트가 필요한 경우는, 그 노드를 등록할 필요가 있습니다.

작성된 노드는, 즉시 유효하게 되지 않습니다. 이러한 노드는, 액세스 되었을 때에 암묵적으로 작성됩니다. 이 때문에, 액세스 되기 전에, 자식(child) 노드가 배킹 스토어에 존재할지 어떨지를 구현이 판단할 수 없는 경우가 있습니다 (예를 들어, 배킹 스토어가 도달 불능인 경우나, 캐쉬된 정보가 최신이 아닌 경우 등). 이러한 상황에서의 노드 변경 이벤트의 생성은, 특히 정의되고 있지 않습니다.

정의:
클래스 Preferences 내의 addNodeChangeListener
파라미터:
ncl - 추가하는 NodeChangeListener
관련 항목:
Preferences.removeNodeChangeListener(NodeChangeListener) , Preferences.addPreferenceChangeListener(PreferenceChangeListener)

removeNodeChangeListener

public void removeNodeChangeListener(NodeChangeListener  ncl)
클래스 Preferences 의 기술:
지정된 NodeChangeListener 를 삭제해, 이벤트의 수신을 정지합니다.

정의:
클래스 Preferences 내의 removeNodeChangeListener
파라미터:
ncl - 삭제하는 NodeChangeListener
관련 항목:
Preferences.addNodeChangeListener(NodeChangeListener)

putSpi

protected abstract void putSpi(String  key,
                               String  value)
지정된 키와 값의 페어를 이 설정 노드에 관련짓습니다. keyvalue 가 null 이외로, 정당한 길이인 것이 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 구현할 경우에, 이러한 것을 확인할 필요는 없습니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.


getSpi

protected abstract String  getSpi(String  key)
이 설정 노드의 지정된 키에 관련지을 수 있었던 값을 돌려줍니다. 이 키에 관련짓고가 없는 경우, 또는 돌려줄 때 관련짓고를 판단할 수 없는 경우는,null 를 돌려줍니다. key 가 null 이외인 것이 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

이 메소드는, 대부분의 상황으로 예외를 throw 하지 않습니다. 예외를 throw 했을 경우에서도, 그 예외는 포획 되어null 반환값으로서 다루어집니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

반환값:
이 설정 노드의 지정된 키에 관련지을 수 있었던 값. 이 키에 관련짓고가 없는 경우, 또는 돌려줄 때 관련짓고를 판단할 수 없는 경우는 null

removeSpi

protected abstract void removeSpi(String  key)
이 설정 노드의 지정된 키에 관련짓고가 있는 경우는, 그것을 삭제합니다. key 가 null 이외인 것이 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.


removeNodeSpi

protected abstract void removeNodeSpi()
                               throws BackingStoreException 
이 호출을 실시하면, 이름 첨부의 아이의 하위 노드가 모두 삭제됩니다. 즉,Preferences.removeNode() 메소드는, 노드의 최하정도 노드로부터 상위 노드 방향으로 이 메소드를 반복해 호출해, 하위 노드를 모두 삭제하고 나서, 노드 자체를 삭제합니다.

이 메소드가 불려 갈 때는, 이 노드와 그 친 ( 및 1 회의 Preferences.removeNode() ) 호출에 의해 삭제되는 모든 상위 노드)가 락 됩니다.

노드의 삭제는, 이 노드 (또는 상위 노드) 상에서 flush 메소드가 불려 갈 때까지, 지속적이 될 필요는 없습니다.

이 노드가 throw 한 BackingStoreException 예외는, 내포 하고 있는 removeNode() 의 호출을 넘어 보내집니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

keysSpi

protected abstract String [] keysSpi()
                             throws BackingStoreException 
이 설정 노드내에 관련지을 수 있었던 값을 가지는 키를 모두 돌려줍니다. 이 노드로 설정이 없는 경우, 반환되는 배열의 사이즈는 제로가 됩니다. 이 노드가 삭제되어 있지 않은 것이 보증되고 있습니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

이 노드가 throw 한 BackingStoreException 예외는, 내포 하고 있는 keys() 의 호출을 넘어 보내집니다.

반환값:
이 설정 노드내에 관련지을 수 있었던 값을 가지는 키의 배열
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

childrenNamesSpi

protected abstract String [] childrenNamesSpi()
                                      throws BackingStoreException 
이 설정 노드의 아이의 이름을 돌려줍니다. 이 노드에 아이가 없는 경우, 반환되는 배열의 사이즈는 제로가 됩니다. 이 메소드에서는, 캐쉬 끝난 노드의 이름을 돌려줄 필요는 없습니다만, 돌려주어도 괜찮습니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

이 노드가 throw 한 BackingStoreException 예외는, 내포 하고 있는 childrenNames() 의 호출을 넘어 보내집니다.

반환값:
설정 노드의 아이의 이름이 포함되어 있는 배열
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

getChild

protected AbstractPreferences  getChild(String  nodeName)
                                throws BackingStoreException 
이름 첨부의 아이가 존재하는 경우는 그것을 돌려주어, 존재하지 않는 경우는 null 를 돌려줍니다. nodeName 가 null 및 빈 상태(empty)이 아니고, slash 문자 ('/')를 포함하지 않고,Preferences.MAX_NAME_LENGTH 문자 이하인 것이 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 이 메소드를 오버라이드(override) 할 경우에, 이러한 것을 확인할 필요는 없습니다.

또, 이름 첨부 노드가 마지막에 삭제된 후에, 이 메소드 또는 childSpi(java.lang.String) 가 전회 불려 갔을 때에, 그 노드가 돌려주어지지 않은 것도 보증되고 있습니다. 즉, 이 메소드가 불려 가기 전에, 캐쉬된 값이 항상 우선해 사용됩니다. 이 메소드를 오버라이드(override) 하는 경우, 이전에 반환된 아이의 캐쉬를 보관 유지할 필요는 없습니다.

이 구현은, 이 설정 노드의 락을 취득해,childrenNames() 를 호출해 아이의 이름의 배열을 취득해, 배열내의 자식(child) 노드의 이름과 지정된 노드명을 반복해 비교합니다. 자식(child) 노드의 이름이 올바른 경우는,childSpi(String) 메소드를 호출해, 그 노드를 돌려줍니다. 모든 자식(child) 노드를 비교해도 지정된 이름이 발견되지 않았던 경우는,null 가 돌려주어집니다.

파라미터:
nodeName - 검색 대상이 되는 아이의 이름
반환값:
존재하는 경우는 이름 첨부의 아이. 존재하지 않는 경우는 null
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

childSpi

protected abstract AbstractPreferences  childSpi(String  name)
이 설정 노드의 이름 첨부의 아이를 돌려줍니다. 존재하지 않는 경우는 작성합니다. name 가 null 및 빈 상태(empty)이 아니고, slash 문자 ('/')를 포함하지 않고,Preferences.MAX_NAME_LENGTH 문자 이하인 것이 보증되고 있습니다. 또, 이 노드가 삭제되어 있지 않은 것도 보증되고 있습니다. 구현할 경우에, 이러한 것을 확인할 필요는 없습니다.

또, 이름 첨부 노드가 마지막에 삭제된 후에, 이 메소드 또는 getChild(String) 가 전회 불려 갔을 때에, 그 노드가 돌려주어지지 않은 것도 보증되고 있습니다. 즉, 이 메소드가 불려 가기 전에, 캐쉬된 값이 항상 우선해 사용됩니다. 서브 클래스는, 이전에 반환된 아이의 캐쉬를 보관 유지할 필요는 없습니다.

구현할 때는, 반환된 노드가 삭제되어 있지 않은 것을 확인할 필요가 있습니다. 이 노드로부터 같은 이름인 아이가 삭제되고 있는 경우는,AbstractPreferences 노드를 새롭게 구축해, 그것을 돌려줄 필요가 있습니다. 한 번 삭제한 AbstractPreferences 노드는, 복구할 수 없습니다.

이 메소드에 의해 작성된 노드는, 이 노드 또는 게다가 위노드 (또는 하위 노드)로 flush 메소드가 불려 갔을 때에, 지속적이 됩니다.

이 메소드가 불려 갈 때는, 이 노드가 락 됩니다.

파라미터:
name - 돌려주는 자식(child) 노드의 이름 (이 설정 노드를 기점으로서 상대명)
반환값:
이름 첨부의 자식(child) 노드

toString

public String  toString()
이 설정 노드의 절대 경로명을 돌려줍니다.

정의:
클래스 Preferences 내의 toString
반환값:
이 객체의 캐릭터 라인 표현

sync

public void sync()
          throws BackingStoreException 
Preferences.sync() 의 스펙에 따라,sync 메소드를 구현합니다.

재귀적 헬퍼 메소드는, 이 노드를 잠그어, 이 노드상에서 syncSpi()를 호출합니다. 다음에, 이 노드의 락을 해제해, 「캐쉬된 아이」마다 재귀적으로 이 메소드를 호출합니다. 캐쉬된 아이란, 이 VM 내에서 작성되어 그 후 삭제되어 있지 않은 이 노드의 아이입니다. 즉, 이 메소드는, 이 노드를 루트로 하는 「캐쉬된 서브 트리」의 깊이 우선 횡단(traverse)을 실행해, 서브 트리내의 노드 마다 syncSpi()를 호출합니다. 이 때, 조작하고 있는 노드만이 락 됩니다. syncSpi()는 상위 노드로부터 하위 방향으로 불려 갑니다.

정의:
클래스 Preferences 내의 sync
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
IllegalStateException - 이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우
관련 항목:
flush()

syncSpi

protected abstract void syncSpi()
                         throws BackingStoreException 
이 메소드가 불려 갈 때는, 이 노드가 락 됩니다. 이 메소드의 규약에서는, 이 노드에 포함되고 있는 캐쉬된 설정이, 배킹 스토어에 포함되고 있는 설정과 동기 됩니다. 이 때, 이 노드가 다른 VM 에 의해 삭제되거나 아직 작성되어 있지 않기 위해(때문에), 배킹 스토어에 존재하지 않을 가능성이 있습니다. 이 메소드에서는, 이 노드의 서브 노드의 설정은 동기 되지 않습니다. 배킹 스토어에 포함되고 있는 서브 트리 전체를 한 번에 동기 시키는 경우는, 이 메소드를 오버라이드(override) 하는 것 만이 아니고, sync()도 오버라이드(override) 하는 것을 추천합니다.

이 노드가 throw 한 BackingStoreException 예외는, 내포 하고 있는 sync() 의 호출을 넘어 보내집니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

flush

public void flush()
           throws BackingStoreException 
Preferences.flush() 의 스펙에 따라,flush 메소드를 구현합니다.

재귀적 헬퍼 메소드는, 이 노드를 잠그어, 이 노드상에서 flushSpi()를 호출합니다. 캐쉬된 아이란, 이 VM 내에서 작성되어 그 후 삭제되어 있지 않은 이 노드의 아이입니다. 즉, 이 메소드는, 이 노드를 루트로 하는 「캐쉬된 서브 트리」의 깊이 우선 횡단(traverse)을 실행해, 서브 트리내의 노드 마다 flushSpi()를 호출합니다. 이 때, 조작하고 있는 노드만이 락 됩니다. flushSpi()는 상위 노드로부터 하위 방향으로 불려 갑니다.

이 메소드를,removeNode() 메소드를 사용해 삭제된 노드상에서 호출하면(자), flushSpi()가 이 노드상에서 불려 갑니다만, 다른 노드에서는 불려 가지 않습니다.

정의:
클래스 Preferences 내의 flush
예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우
관련 항목:
flush()

flushSpi

protected abstract void flushSpi()
                          throws BackingStoreException 
이 메소드가 불려 갈 때는, 이 노드가 락 됩니다. 이 메소드의 규약에서는, 캐쉬된 변경을 이 설정 노드의 내용에 강제적으로 적용하고 나서, 그것들을 배킹 스토어에 플래시 해, 그러한 지속성을 보증합니다. 이 때, 이 노드가 다른 VM 에 의해 삭제되거나 아직 작성되어 있지 않기 위해(때문에), 배킹 스토어에 존재하지 않을 가능성이 있습니다. 이 메소드에서는, 이 노드의 서브 노드의 설정은 플래시 되지 않습니다. 배킹 스토어에 포함되고 있는 서브 트리 전체를 한 번에 플래시 하는 경우는, 이 메소드를 오버라이드(override) 하는 것 만이 아니고, flush()도 오버라이드(override) 하는 것을 추천합니다.

이 노드가 throw 한 BackingStoreException 예외는, 내포 하고 있는 flush() 의 호출을 넘어 보내집니다.

예외:
BackingStoreException - 배킹 스토어에서 장해가 발생했는지 스토어와의 통신을 실시할 수 없기 위해(때문에), 이 오퍼레이션을 완료할 수 없는 경우

isRemoved

protected boolean isRemoved()
이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우에,true 를 돌려줍니다. 이 메소드는, 이 노드를 잠그고 나서, 이 상태의 추적에 사용된 private 필드의 내용을 돌려줍니다.

반환값:
이 노드 (또는 상위 노드)가 removeNode() 메소드에 의해 삭제되었을 경우는 true

exportNode

public void exportNode(OutputStream  os)
                throws IOException ,
                       BackingStoreException 
Preferences.exportNode(OutputStream) 의 스펙에 따라,exportNode 메소드를 구현합니다.

정의:
클래스 Preferences 내의 exportNode
파라미터:
os - XML 문서의 발행처의 출력 스트림
예외:
IOException - 지정된 출력 스트림에의 기입해 때에 IOException 가 발생했을 경우
BackingStoreException - 설정 데이터가 배킹 스토어로부터 읽어낼 수 없는 경우
관련 항목:
Preferences.importPreferences(InputStream)

exportSubtree

public void exportSubtree(OutputStream  os)
                   throws IOException ,
                          BackingStoreException 
Preferences.exportSubtree(OutputStream) 의 스펙에 따라,exportSubtree 메소드를 구현합니다.

정의:
클래스 Preferences 내의 exportSubtree
파라미터:
os - XML 문서의 발행처의 출력 스트림
예외:
IOException - 지정된 출력 스트림에의 기입해 때에 IOException 가 발생했을 경우
BackingStoreException - 설정 데이터가 배킹 스토어로부터 읽어낼 수 없는 경우
관련 항목:
Preferences.importPreferences(InputStream) , Preferences.exportNode(OutputStream)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.