Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/progeeks/meta/MetaKit.java


1   /*
2    * $Id: MetaKit.java,v 1.2 2003/08/16 03:44:39 pspeed Exp $
3    *
4    * Copyright (c) 2001-2002, Paul Speed
5    * All rights reserved.
6    *
7    * Redistribution and use in source and binary forms, with or without
8    * modification, are permitted provided that the following conditions
9    * are met:
10   *
11   * 1) Redistributions of source code must retain the above copyright notice,
12   *    this list of conditions and the following disclaimer.
13   * 2) Redistributions in binary form must reproduce the above copyright
14   *    notice, this list of conditions and the following disclaimer in the
15   *    documentation and/or other materials provided with the distribution.
16   * 3) Neither the names "Progeeks", "Meta-JB", nor the names of its contributors
17   *    may be used to endorse or promote products derived from this software
18   *    without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   */
32  
33  package org.progeeks.meta;
34  
35  /**
36   *  Abstraction of a meta-object implementation layer.  This provides
37   *  some direct access to the adapter layer that may be necessary
38   *  when interacting with certain meta-object property values.
39   *
40   *  @version   $Revision: 1.2 $
41   *  @author    Paul Speed
42   */
43  public interface MetaKit
44  {
45      /**
46       *  Returns the internal object representation for the specified
47       *  meta-object if one exists.  For meta-object implementations that
48       *  wrap an internal object, this will return the internal object.
49       *  null is returned if the meta-object implementation does not
50       *  internally wrap real objects.
51       */
52      public Object getInternalObject( MetaObject object );
53  
54      /**
55       *  Returns the appropriate meta-class for the specified object.
56       *  If an appropriate meta-class has not been registered then
57       *  this method returns null.
58       */
59      public MetaClass getMetaClassForObject( Object object, MetaClassRegistry classRegistry );
60  
61      /**
62       *  Returns the appropriate meta-class for the specified object.
63       *  If an appropriate meta-class has not been registered then
64       *  this method returns null.  The meta-class is looked up in the root
65       *  class registry.
66       */
67      public MetaClass getMetaClassForObject( Object object );
68  
69      /**
70       *  Wraps the specified object in a meta-object adapter specific
71       *  to this kit's implementation layer.  Returns null if the object
72       *  cannot be wrapped.  Throws UnsupportedOperationException if this
73       *  kit doesn't support wrapping.
74       */
75      public MetaObject wrapObject( Object object, MetaClass mClass );
76  
77      /**
78       *  Returns a factory that can be used to create new MetaObject
79       *  based values using this kit's underlying implementation.
80       */
81      public MetaObjectFactory getMetaObjectFactory();
82  }
83