EMMA Coverage Report (generated Mon Aug 23 17:21:34 CEST 2010)
[all classes][dmg.cells.nucleus]

COVERAGE SUMMARY FOR SOURCE FILE [CellUrl.java]

nameclass, %method, %block, %line, %
CellUrl.java100% (1/1)50%  (2/4)40%  (30/75)50%  (11/22)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class CellUrl100% (1/1)50%  (2/4)40%  (30/75)50%  (11/22)
access$000 (): Logger 0%   (0/1)0%   (0/2)0%   (0/1)
main (String []): void 0%   (0/1)0%   (0/33)0%   (0/9)
CellUrl (CellGlue): void 100% (1/1)72%  (26/36)91%  (10/11)
<static initializer> 100% (1/1)100% (4/4)100% (1/1)

1package dmg.cells.nucleus ;
2 
3 
4import java.io.* ;
5import java.net.* ;
6import java.util.* ;
7import java.lang.reflect.* ;
8 
9import org.slf4j.Logger;
10import org.slf4j.LoggerFactory;
11 
12public class CellUrl {
13 
14   private final static Logger _log =
15       LoggerFactory.getLogger(CellUrl.class);
16 
17   private                CellGlue  _glue   = null ;
18   private URLStreamHandlerFactory _others  = null ;
19 
20   public CellUrl( CellGlue glue ){
21 
22        java.util.Properties p = System.getProperties();
23        String s = p.getProperty("java.protocol.handler.pkgs");
24        if(s != null)
25        {
26            s= s+"|dmg.cells.nucleus.protocols";
27        }
28        else
29        {
30            s="dmg.cells.nucleus.protocols";
31        }
32 
33        p.setProperty("java.protocol.handler.pkgs",s);
34        System.setProperties(p);
35   }
36 
37   public static class DomainUrlConnection extends URLConnection
38   {
39       private String      _protocol    = null ;
40       private CellNucleus _nucleus     = null ;
41       private Map<String,Object>  _environment = null ;
42       public DomainUrlConnection( URL url , String protocol ){
43          super( url ) ;
44          _protocol = protocol ;
45       }
46 
47       public void connect(){
48 
49           _log.info( "DomainUrlConnection : Connect called" ) ;
50           return ;
51       }
52       public void setNucleus( CellNucleus nucleus ){
53          _nucleus = nucleus ;
54       }
55 
56       public void setEnvironment(Map<String,Object> environment ){
57          _environment = environment ;
58       }
59       public InputStream getInputStream() throws IOException {
60          if( _nucleus == null )
61             throw new IOException( "Nucleus not defined" ) ;
62 
63          throw new IOException( "getInputStream not supported on : "+_protocol ) ;
64          /*
65          if( _protocol.equals( "context" ) ){
66 
67          }else if( _protocol.equals( "env" ) ){
68 
69          }else if( _protocol.equals( "cell" ) ){
70 
71          }else
72             throw new IOException( "Protocol not supported : "+_protocol ) ;
73          */
74       }
75       public Reader getReader() throws IOException {
76          if( _nucleus == null )
77             throw new  IOException( "Nucleus not defined" ) ;
78 
79          if( _protocol.equals( "context" ) ){
80             if( url.getHost().equals("") ){
81                String filePart = url.getFile() ;
82                filePart = ( filePart.length() > 0     ) &&
83                           ( filePart.charAt(0) == '/' ) ?
84                           filePart.substring(1) :
85                           filePart ;
86                return
87                _nucleus.getDomainContextReader( filePart ) ;
88             }else
89                return getRemoteContextReader(  _nucleus , url ) ;
90          }else if( _protocol.equals( "env" ) ){
91             if( _environment == null )
92                throw new  IOException( "Nucleus not defined" ) ;
93 
94              String filePart = url.getFile() ;
95              filePart = ( filePart.length() > 0     ) &&
96                         ( filePart.charAt(0) == '/' ) ?
97                         filePart.substring(1) :
98                         filePart ;
99             return getDictionaryReader( _environment , filePart ) ;
100          }else if( _protocol.equals( "cell" ) ){
101             return getRemoteCellReader( _nucleus , url )  ;
102          }else
103             throw new IOException( "Protocol not supported : "+_protocol ) ;
104       }
105       public String getContentType(){ return "text/context" ; }
106       public String toString(){ return "DomainUrlConnection of : "+_protocol ; }
107       //
108       // helpers
109       //
110       private Reader getRemoteCellReader( CellNucleus nucleus , URL url )
111               throws IOException  {
112 
113          Object o = getRemoteData( nucleus ,
114                                    url.getHost() ,
115                                    url.getFile().substring(1) ,
116                                    4000 ) ;
117 
118          if( o instanceof Exception )throw new IOException( o.toString() ) ;
119 
120          return new StringReader( o.toString() ) ;
121       }
122       private Reader getRemoteContextReader( CellNucleus nucleus , URL url )
123               throws IOException {
124 
125          Object o = getRemoteData( nucleus ,
126                                    "System@"+url.getHost() ,
127                                    "show context "+url.getFile().substring(1) ,
128                                    4000 ) ;
129 
130          if( o instanceof Exception )throw new IOException( o.toString() ) ;
131 
132          return new StringReader( o.toString() ) ;
133       }
134       private Object getRemoteData( CellNucleus nucleus ,
135                                     String path ,
136                                     String command ,
137                                     long timeout    )
138               throws IOException {
139 
140         CellMessage answer = null ;
141         try{
142            answer = nucleus.sendAndWait(
143                           new CellMessage( new CellPath( path ) ,
144                                            command ) ,
145                           timeout
146                                         ) ;
147         }catch( Exception e ){
148            throw new IOException( "sendAndWait : "+e.toString() ) ;
149         }
150         if( answer == null )
151            throw new IOException( "Request timed out" ) ;
152 
153         return answer.getMessageObject() ;
154 
155       }
156       private Reader getDictionaryReader( Map<String,Object> env , String name )
157               throws IOException {
158          Object o ;
159          if( ( o = env.get( name ) ) == null )
160            throw new IOException( "Not found : "+name ) ;
161 
162          return new StringReader( o.toString() ) ;
163       }
164       private Reader getDictionaryReaderx( Cell cell , String name )
165               throws IOException {
166 
167          Class cellClass = cell.getClass() ;
168          _log.info("DomainUrlConnection : Cell Class is : "+cellClass ) ;
169          Class [] argsClasses = new Class[0] ;
170          try{
171             Method method = cellClass.getDeclaredMethod(
172                                "getEnvironmentDictionary" ,
173                                 argsClasses                  ) ;
174             Object [] args = new Object[0] ;
175 
176             Dictionary dir = (Dictionary)method.invoke( cell , args ) ;
177 
178             Object o = dir.get( name ) ;
179             if( o == null )
180                throw new IOException( "Not found : "+name ) ;
181 
182             return new StringReader( o.toString() ) ;
183 
184          }catch( Exception e ){
185             throw new IOException( "Problem : "+e ) ;
186          }
187 
188       }
189   }
190   public static void main(String args[]) throws Exception
191   {
192       new CellUrl(null);
193       System.out.println("checking the creation of context url");
194       URL url1 = new URL("context://localhost:1111//sfs");
195       System.out.println("checking the creation of cell url");
196       URL url2 = new URL("cell://localhost:1111//sfs");
197       System.out.println("checking the creation of env url");
198       URL url3 = new URL("env://localhost:1111//sfs");
199       System.out.println("done");
200   }
201}

[all classes][dmg.cells.nucleus]
EMMA 2.0.5312 (C) Vladimir Roubtsov